1 # coding: utf-8
2 # frozen_string_literal: true
3
4
5
6 module Umu
7
8 module AbstractSyntax
9
10 module Core
11
12 module Expression
13
14 module Unary
15
16 module Atom
17
18 class Symbol < 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 __evaluate__(_env, _event)
34 VC.make_symbol self.obj
35 end
36 end
37
38 end # Umu::AbstractSyntax::Core::Expression::Unary::Atom
39
40 end # Umu::AbstractSyntax::Core::Expression::Unary
41
42
43 module_function
44
45 def make_symbol(loc, obj)
46 ASSERT.kind_of loc, LOC::Entry
47 ASSERT.kind_of obj, ::Symbol
48
49 Unary::Atom::Symbol.new(loc, obj).freeze
50 end
51
52 end # Umu::AbstractSyntax::Core::Expression
53
54 end # Umu::AbstractSyntax::Core
55
56 end # Umu::AbstractSyntax
57
58 end # Umu