1 # coding: utf-8
2 # frozen_string_literal: true
3
4
5
6 module Umu
7
8 module Lexical
9
10 module Token
11
12 module Abstraction
13
14 class Abstract < Umu::Abstraction::Model
15 attr_reader :val
16
17
18 def initialize(loc, val)
19 ASSERT.kind_of loc, LOC::Entry
20 ASSERT.kind_of val, ::Object
21
22 super(loc)
23
24 @val = val
25 end
26
27
28 def to_racc_token
29 raise X::InternalSubclassResponsibility
30 end
31
32
33 def separator?
34 false
35 end
36 end
37
38
39
40 class Symbol < Abstract
41 alias sym val
42
43
44 def initialize(loc, val)
45 ASSERT.kind_of val, ::String
46
47 super(loc, val.to_sym)
48 end
49 end
50
51
52
53 class String < Abstract
54 def initialize(loc, val)
55 ASSERT.kind_of val, ::String
56
57 super
58 end
59 end
60
61 end # Umu::Lexical::Token::Abstraction
62
63 end # Umu::Lexical::Token
64
65 end # Umu::Lexical
66
67 end # Umu