1 # coding: utf-8
2 # frozen_string_literal: true
3
4
5
6 module Umu
7
8 module ConcreteSyntax
9
10 module Core
11
12 module Expression
13
14 module Unary
15
16 module Atom
17
18 class Symbol < Atom::Abstract
19 def initialize(loc, obj)
20 ASSERT.kind_of obj, ::Symbol
21
22 super
23 end
24
25
26 def to_s
27 '@' + self.obj.to_s
28 end
29
30
31 private
32
33 def __desugar__(_env, _event)
34 ASCE.make_symbol self.loc, self.obj
35 end
36 end
37
38 end # Umu::ConcreteSyntax::Core::Expression::Unary::Atom
39
40 end # Umu::ConcreteSyntax::Core::Expression::Unary
41
42
43
44 module_function
45
46 def make_symbol(loc, obj)
47 ASSERT.kind_of loc, LOC::Entry
48 ASSERT.kind_of obj, ::Symbol
49
50 Unary::Atom::Symbol.new(loc, obj).freeze
51 end
52
53 end # Umu::ConcreteSyntax::Core::Expression
54
55 end # Umu::ConcreteSyntax::Core
56
57 end # Umu::ConcreteSyntax
58
59 end # Umu