halunke 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b621079e4a57b2e4911784de31327cff6fa30a9b
4
- data.tar.gz: 3980f6df3d46e58cb6ee08f5a7b7654bb629dbbc
3
+ metadata.gz: df4242816f16240f4ecb71b5a1412b7e0e6a2345
4
+ data.tar.gz: f114fb281e8beb82bc8ed50f81f6087e91a6409b
5
5
  SHA512:
6
- metadata.gz: 218389d784fd2ba9332c3c24b7cb18079d529dfda97f9cdfbd060ba0b1a3be6fd02418da2ae0c1483e038ca59e5fdeba047111c831c2d00817901cf48ec663b5
7
- data.tar.gz: e16520427aca78a5277fce868353cd73d96f2e65653da777b403fda407957ae2099c0c00e10cedeeb11dc9ac4378f44457fe29ebd5c3a6cec26a9bfcd90683a1
6
+ metadata.gz: 34027218c4f018c28843168c0b19d2de85922c5a420c84f712ef3f2cee061399049875dfe6bf5985bd4ee75cb2fd74e23672c90ed3c0447094e9e2c37ba4c093
7
+ data.tar.gz: 49b490349bf99ef366206e495aaa494c438ef5c83e68d176f32673b67ab298716c51f0951ab4aff36bf03ace191982cb53a5880155a410b3b238c9a62841fc25
@@ -1,13 +1,15 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- halunke (0.2.0)
4
+ halunke (0.3.0)
5
+ rack (~> 2.0.4)
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
8
9
  specs:
9
10
  minitest (5.11.3)
10
11
  racc (1.4.14)
12
+ rack (2.0.4)
11
13
  rake (12.3.0)
12
14
 
13
15
  PLATFORMS
@@ -0,0 +1,19 @@
1
+ (Class new 'Greeter
2
+ attributes ["name"]
3
+ methods @[
4
+ "greet" { |'self|
5
+ ("Hello " + (self name))
6
+ }
7
+ "name" { |'self|
8
+ (self @ "name" else "<Unknown>")
9
+ }
10
+ ]
11
+ class_methods @[
12
+ "for" { |'self 'name|
13
+ (self new @["name" name])
14
+ }
15
+ ]
16
+ )
17
+
18
+ ('greeter = (Greeter for "World"))
19
+ (stdout puts (greeter greet))
@@ -0,0 +1,20 @@
1
+ (Class new 'App
2
+ methods @[
3
+ "call" { |'self 'env|
4
+ [
5
+ "200"
6
+ @[ "Content-Type" "text/html" ]
7
+ [
8
+ "<h1>Halunke!</h1>"
9
+ "<ul>"
10
+ (("<li>Request Method: " + (env @ "request_method" else "I dont know")) + "</li>")
11
+ (("<li>Path: " + (env @ "path" else "/")) + "</li>")
12
+ (("<li>Query: " + (env @ "query" else "")) + "</li>")
13
+ "</ul>"
14
+ ]
15
+ ]
16
+ }
17
+ ]
18
+ )
19
+
20
+ (web run (App new) on "0.0.0.0:3000")
@@ -5,12 +5,16 @@ require "readline"
5
5
 
6
6
  interpreter = Halunke::Interpreter.new
7
7
 
8
- puts "Halunke REPL. Ctrl+d to quit"
9
- while (line = Readline.readline(">> ", true))
10
- begin
11
- value = interpreter.eval(line)
12
- puts "=> #{value}"
13
- rescue Exception => e
14
- puts "An Error Occurred: #{e.message}"
8
+ if ARGV.length == 0
9
+ puts "Halunke REPL. Ctrl+d to quit"
10
+ while (line = Readline.readline(">> ", true))
11
+ begin
12
+ value = interpreter.eval(line)
13
+ puts "=> #{value}"
14
+ rescue Exception => e
15
+ puts "An Error Occurred: #{e.message}"
16
+ end
15
17
  end
18
+ else
19
+ interpreter.eval(File.read(ARGV[0]))
16
20
  end
@@ -21,6 +21,8 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ["lib"]
23
23
 
24
+ spec.add_dependency "rack", "~> 2.0.4"
25
+
24
26
  spec.add_development_dependency "bundler", "~> 1.16.1"
25
27
  spec.add_development_dependency "rake", "~> 12.3.0"
26
28
  spec.add_development_dependency "minitest", "~> 5.11.3"
@@ -7,52 +7,36 @@ token OPEN_PAREN
7
7
  token CLOSE_PAREN
8
8
  token OPEN_CURLY
9
9
  token CLOSE_CURLY
10
- token OPERATOR
11
10
  token UNASSIGNED_BAREWORD
12
11
  token OPEN_BRACKET
13
12
  token CLOSE_BRACKET
13
+ token OPEN_DICT_BRACKET
14
14
  token BAR
15
+ token START_COMMENT
16
+ token END_COMMENT
15
17
 
16
18
  rule
17
19
  Program:
18
- Expressions { result = val[0] }
20
+ Expressions { result = val[0] }
19
21
  ;
20
22
 
21
23
  Expressions:
22
- /* empty */ { result = Nodes.new }
23
- | Expression Expressions { result = Nodes.new([val[0]]).concat(val[1]) }
24
+ /* empty */ { result = Nodes.new([]) }
25
+ | Expression Expressions { result = Nodes.new([val[0]].concat(val[1].nodes)) }
24
26
  ;
25
27
 
26
28
  Expression:
27
- Literal
28
- | OPEN_CURLY Expressions CLOSE_CURLY { result = Halunke::FunctionNode.new(Halunke::ArrayNode.new([]), val[1]) }
29
- | OPEN_CURLY Args Expressions CLOSE_CURLY { result = Halunke::FunctionNode.new(val[1], val[2]) }
30
- | OPEN_PAREN Expression Expressions CLOSE_PAREN { result = Halunke::MessageSendNode.new(val[1], MessageNode.new(val[2].nodes)) }
31
- | OPEN_BRACKET Expressions CLOSE_BRACKET { result = ArrayNode.new(val[1].nodes) }
29
+ NUMBER { result = NumberNode.new(val[0]) }
30
+ | STRING { result = StringNode.new(val[0]) }
31
+ | BAREWORD { result = BarewordNode.new(val[0]) }
32
+ | UNASSIGNED_BAREWORD { result = UnassignedNode.new(BarewordNode.new(val[0])) }
33
+ | START_COMMENT Expressions END_COMMENT { result = Nodes.new([]) }
34
+ | OPEN_CURLY Expressions CLOSE_CURLY { result = FunctionNode.new(ArrayNode.new([]), val[1]) }
35
+ | OPEN_CURLY BAR Expressions BAR Expressions CLOSE_CURLY { result = FunctionNode.new(val[2].to_array, val[4]) }
36
+ | OPEN_PAREN Expression Expressions CLOSE_PAREN { result = MessageSendNode.new(val[1], val[2].to_message) }
37
+ | OPEN_BRACKET Expressions CLOSE_BRACKET { result = val[1].to_array }
38
+ | OPEN_DICT_BRACKET Expressions CLOSE_BRACKET { result = val[1].to_dictionary }
32
39
  ;
33
-
34
- Args:
35
- BAR UnassignedBarewords BAR { result = Halunke::ArrayNode.new(val[1].nodes) }
36
- ;
37
-
38
- UnassignedBarewords:
39
- /* empty */ { result = Nodes.new }
40
- | UnassignedBareword UnassignedBarewords { result = Nodes.new([val[0]]).concat(val[1]) }
41
- ;
42
-
43
- UnassignedBareword:
44
- UNASSIGNED_BAREWORD { result = UnassignedNode.new(BarewordNode.new(val[0])) }
45
- ;
46
-
47
- Literal:
48
- NUMBER { result = NumberNode.new(val[0]) }
49
- | STRING { result = StringNode.new(val[0]) }
50
- /* TODO: Are Operators just Barewords? */
51
- | BAREWORD { result = BarewordNode.new(val[0]) }
52
- | OPERATOR { result = BarewordNode.new(val[0]) }
53
- | UNASSIGNED_BAREWORD { result = UnassignedNode.new(BarewordNode.new(val[0])) }
54
- ;
55
-
56
40
  end
57
41
 
58
42
  ---- header
@@ -1,15 +1,69 @@
1
+ require "pathname"
1
2
  require "halunke/parser"
3
+ require "halunke/runtime"
2
4
 
3
5
  module Halunke
4
6
  class Interpreter
7
+ attr_reader :root_context
8
+
5
9
  def initialize
6
10
  @parser = Parser.new
7
- @context = HContext.root_context
11
+ @root_context = Context.new
12
+
13
+ @root_context["Class"] = Halunke::Runtime::HClass
14
+ @root_context["Function"] = Halunke::Runtime::HFunction
15
+ @root_context["Number"] = Halunke::Runtime::HNumber
16
+ @root_context["String"] = Halunke::Runtime::HString
17
+ @root_context["Array"] = Halunke::Runtime::HArray
18
+ @root_context["Dictionary"] = Halunke::Runtime::HDictionary
19
+ @root_context["UnassignedBareword"] = Halunke::Runtime::HUnassignedBareword
20
+ @root_context["stdout"] = Halunke::Runtime::HStdout.create_instance
21
+ @root_context["web"] = Halunke::Runtime::HWeb.create_instance
22
+
23
+ preludes.each do |prelude|
24
+ self.eval(prelude)
25
+ end
8
26
  end
9
27
 
10
28
  def eval(str)
11
29
  nodes = @parser.parse(str)
12
- nodes.eval(@context).inspect(@context)
30
+ nodes.eval(root_context).inspect(root_context)
31
+ end
32
+
33
+ def preludes
34
+ [
35
+ Pathname.new(__dir__).join("runtime", "true.hal").read,
36
+ Pathname.new(__dir__).join("runtime", "false.hal").read
37
+ ]
38
+ end
39
+
40
+ class Context
41
+ attr_reader :parent
42
+
43
+ def initialize(parent = nil)
44
+ @parent = parent
45
+ @context = {}
46
+ end
47
+
48
+ def []=(name, value)
49
+ raise "Bareword #{name} is already assigned" if key? name
50
+ @context[name] = value
51
+ end
52
+
53
+ def [](name)
54
+ @context.fetch(name)
55
+ rescue KeyError
56
+ raise "Bareword '#{name} is unassigned'" if @parent.nil?
57
+ @parent[name]
58
+ end
59
+
60
+ def key?(name)
61
+ @context.key?(name)
62
+ end
63
+
64
+ def create_child
65
+ Context.new(self)
66
+ end
13
67
  end
14
68
  end
15
69
  end
@@ -2,7 +2,7 @@
2
2
  # line 1 "lib/halunke/lexer.rl"
3
3
  =begin
4
4
 
5
- # line 36 "lib/halunke/lexer.rl"
5
+ # line 40 "lib/halunke/lexer.rl"
6
6
 
7
7
  =end
8
8
 
@@ -21,8 +21,8 @@ self._lexer_actions = [
21
21
  9, 1, 10, 1, 11, 1, 12, 1,
22
22
  13, 1, 14, 1, 15, 1, 16, 1,
23
23
  17, 1, 18, 1, 19, 1, 20, 1,
24
- 21, 1, 22, 2, 2, 3, 2, 2,
25
- 4
24
+ 21, 1, 22, 1, 23, 1, 24, 2,
25
+ 2, 3, 2, 2, 4
26
26
  ]
27
27
 
28
28
  class << self
@@ -30,8 +30,8 @@ class << self
30
30
  private :_lexer_key_offsets, :_lexer_key_offsets=
31
31
  end
32
32
  self._lexer_key_offsets = [
33
- 0, 1, 3, 26, 27, 32, 34, 37,
34
- 39
33
+ 0, 1, 3, 29, 30, 35, 36, 38,
34
+ 41, 43, 44, 45
35
35
  ]
36
36
 
37
37
  class << self
@@ -40,11 +40,12 @@ class << self
40
40
  end
41
41
  self._lexer_trans_keys = [
42
42
  34, 48, 57, 32, 34, 39, 40, 41,
43
- 43, 45, 91, 93, 95, 123, 124, 125,
44
- 9, 13, 48, 57, 60, 62, 65, 90,
45
- 97, 122, 34, 95, 65, 90, 97, 122,
46
- 48, 57, 46, 48, 57, 48, 57, 95,
47
- 65, 90, 97, 122, 0
43
+ 42, 43, 45, 47, 64, 91, 93, 95,
44
+ 123, 124, 125, 9, 13, 48, 57, 60,
45
+ 62, 65, 90, 97, 122, 34, 95, 65,
46
+ 90, 97, 122, 47, 48, 57, 46, 48,
47
+ 57, 48, 57, 42, 91, 95, 65, 90,
48
+ 97, 122, 0
48
49
  ]
49
50
 
50
51
  class << self
@@ -52,8 +53,8 @@ class << self
52
53
  private :_lexer_single_lengths, :_lexer_single_lengths=
53
54
  end
54
55
  self._lexer_single_lengths = [
55
- 1, 0, 13, 1, 1, 0, 1, 0,
56
- 1
56
+ 1, 0, 16, 1, 1, 1, 0, 1,
57
+ 0, 1, 1, 1
57
58
  ]
58
59
 
59
60
  class << self
@@ -61,8 +62,8 @@ class << self
61
62
  private :_lexer_range_lengths, :_lexer_range_lengths=
62
63
  end
63
64
  self._lexer_range_lengths = [
64
- 0, 1, 5, 0, 2, 1, 1, 1,
65
- 2
65
+ 0, 1, 5, 0, 2, 0, 1, 1,
66
+ 1, 0, 0, 2
66
67
  ]
67
68
 
68
69
  class << self
@@ -70,8 +71,8 @@ class << self
70
71
  private :_lexer_index_offsets, :_lexer_index_offsets=
71
72
  end
72
73
  self._lexer_index_offsets = [
73
- 0, 2, 4, 23, 25, 29, 31, 34,
74
- 36
74
+ 0, 2, 4, 26, 28, 32, 34, 36,
75
+ 39, 41, 43, 45
75
76
  ]
76
77
 
77
78
  class << self
@@ -79,13 +80,14 @@ class << self
79
80
  private :_lexer_trans_targs, :_lexer_trans_targs=
80
81
  end
81
82
  self._lexer_trans_targs = [
82
- 2, 0, 7, 2, 2, 3, 4, 2,
83
- 2, 5, 5, 2, 2, 8, 2, 2,
84
- 2, 2, 6, 2, 8, 8, 2, 2,
85
- 0, 4, 4, 4, 2, 6, 2, 1,
86
- 6, 2, 7, 2, 8, 8, 8, 2,
83
+ 2, 0, 8, 2, 2, 3, 4, 2,
84
+ 2, 5, 6, 6, 9, 10, 2, 2,
85
+ 11, 2, 2, 2, 2, 7, 2, 11,
86
+ 11, 2, 2, 0, 4, 4, 4, 2,
87
+ 2, 2, 7, 2, 1, 7, 2, 8,
88
+ 2, 2, 2, 2, 2, 11, 11, 11,
87
89
  2, 2, 2, 2, 2, 2, 2, 2,
88
- 0
90
+ 2, 2, 2, 2, 0
89
91
  ]
90
92
 
91
93
  class << self
@@ -93,13 +95,14 @@ class << self
93
95
  private :_lexer_trans_actions, :_lexer_trans_actions=
94
96
  end
95
97
  self._lexer_trans_actions = [
96
- 7, 0, 0, 37, 25, 5, 46, 9,
97
- 11, 0, 0, 17, 19, 0, 13, 21,
98
- 15, 25, 5, 23, 0, 0, 27, 7,
99
- 0, 43, 43, 43, 41, 5, 33, 0,
100
- 5, 29, 0, 29, 0, 0, 0, 31,
101
- 39, 37, 35, 41, 33, 29, 29, 31,
102
- 0
98
+ 7, 0, 0, 41, 31, 5, 50, 11,
99
+ 13, 0, 0, 0, 0, 0, 19, 21,
100
+ 0, 15, 29, 17, 31, 5, 9, 0,
101
+ 0, 33, 7, 0, 47, 47, 47, 45,
102
+ 27, 39, 5, 37, 0, 5, 35, 0,
103
+ 35, 25, 39, 23, 37, 0, 0, 0,
104
+ 37, 43, 41, 39, 45, 39, 37, 35,
105
+ 35, 39, 37, 37, 0
103
106
  ]
104
107
 
105
108
  class << self
@@ -108,7 +111,7 @@ class << self
108
111
  end
109
112
  self._lexer_to_state_actions = [
110
113
  0, 0, 1, 0, 0, 0, 0, 0,
111
- 0
114
+ 0, 0, 0, 0
112
115
  ]
113
116
 
114
117
  class << self
@@ -117,7 +120,7 @@ class << self
117
120
  end
118
121
  self._lexer_from_state_actions = [
119
122
  0, 0, 3, 0, 0, 0, 0, 0,
120
- 0
123
+ 0, 0, 0, 0
121
124
  ]
122
125
 
123
126
  class << self
@@ -125,8 +128,8 @@ class << self
125
128
  private :_lexer_eof_trans, :_lexer_eof_trans=
126
129
  end
127
130
  self._lexer_eof_trans = [
128
- 41, 42, 0, 43, 44, 45, 47, 47,
129
- 48
131
+ 50, 51, 0, 58, 53, 58, 60, 57,
132
+ 57, 58, 60, 60
130
133
  ]
131
134
 
132
135
  class << self
@@ -148,7 +151,7 @@ end
148
151
  self.lexer_en_main = 2;
149
152
 
150
153
 
151
- # line 43 "lib/halunke/lexer.rl"
154
+ # line 47 "lib/halunke/lexer.rl"
152
155
  @tokens = []
153
156
  end
154
157
 
@@ -157,7 +160,7 @@ self.lexer_en_main = 2;
157
160
  eof = data.length
158
161
 
159
162
 
160
- # line 161 "lib/halunke/lexer.rb"
163
+ # line 164 "lib/halunke/lexer.rb"
161
164
  begin
162
165
  p ||= 0
163
166
  pe ||= data.length
@@ -167,9 +170,9 @@ begin
167
170
  act = 0
168
171
  end
169
172
 
170
- # line 51 "lib/halunke/lexer.rl"
173
+ # line 55 "lib/halunke/lexer.rl"
171
174
 
172
- # line 173 "lib/halunke/lexer.rb"
175
+ # line 176 "lib/halunke/lexer.rb"
173
176
  begin
174
177
  _klen, _trans, _keys, _acts, _nacts = nil
175
178
  _goto_level = 0
@@ -199,7 +202,7 @@ begin
199
202
  begin
200
203
  ts = p
201
204
  end
202
- # line 203 "lib/halunke/lexer.rb"
205
+ # line 206 "lib/halunke/lexer.rb"
203
206
  end # from state action switch
204
207
  end
205
208
  if _trigger_goto
@@ -271,127 +274,139 @@ when 2 then
271
274
  te = p+1
272
275
  end
273
276
  when 3 then
274
- # line 22 "lib/halunke/lexer.rl"
277
+ # line 24 "lib/halunke/lexer.rl"
275
278
  begin
276
279
  act = 3; end
277
280
  when 4 then
278
- # line 33 "lib/halunke/lexer.rl"
281
+ # line 37 "lib/halunke/lexer.rl"
279
282
  begin
280
- act = 14; end
283
+ act = 16; end
281
284
  when 5 then
282
- # line 21 "lib/halunke/lexer.rl"
285
+ # line 23 "lib/halunke/lexer.rl"
283
286
  begin
284
287
  te = p+1
285
288
  begin emit(:STRING, data[ts+1...te-1]) end
286
289
  end
287
290
  when 6 then
288
- # line 24 "lib/halunke/lexer.rl"
291
+ # line 25 "lib/halunke/lexer.rl"
289
292
  begin
290
293
  te = p+1
291
- begin emit(:OPEN_PAREN, data[ts...te]) end
294
+ begin emit(:BAREWORD, data[ts...te]) end
292
295
  end
293
296
  when 7 then
294
- # line 25 "lib/halunke/lexer.rl"
297
+ # line 26 "lib/halunke/lexer.rl"
295
298
  begin
296
299
  te = p+1
297
- begin emit(:CLOSE_PAREN, data[ts...te]) end
300
+ begin emit(:OPEN_PAREN, data[ts...te]) end
298
301
  end
299
302
  when 8 then
300
- # line 26 "lib/halunke/lexer.rl"
303
+ # line 27 "lib/halunke/lexer.rl"
301
304
  begin
302
305
  te = p+1
303
- begin emit(:OPEN_CURLY, data[ts...te]) end
306
+ begin emit(:CLOSE_PAREN, data[ts...te]) end
304
307
  end
305
308
  when 9 then
306
- # line 27 "lib/halunke/lexer.rl"
309
+ # line 28 "lib/halunke/lexer.rl"
307
310
  begin
308
311
  te = p+1
309
- begin emit(:CLOSE_CURLY, data[ts...te]) end
312
+ begin emit(:OPEN_CURLY, data[ts...te]) end
310
313
  end
311
314
  when 10 then
312
- # line 28 "lib/halunke/lexer.rl"
315
+ # line 29 "lib/halunke/lexer.rl"
313
316
  begin
314
317
  te = p+1
315
- begin emit(:OPEN_BRACKET, data[ts...te]) end
318
+ begin emit(:CLOSE_CURLY, data[ts...te]) end
316
319
  end
317
320
  when 11 then
318
- # line 29 "lib/halunke/lexer.rl"
321
+ # line 30 "lib/halunke/lexer.rl"
319
322
  begin
320
323
  te = p+1
321
- begin emit(:CLOSE_BRACKET, data[ts...te]) end
324
+ begin emit(:OPEN_BRACKET, data[ts...te]) end
322
325
  end
323
326
  when 12 then
324
- # line 30 "lib/halunke/lexer.rl"
327
+ # line 31 "lib/halunke/lexer.rl"
325
328
  begin
326
329
  te = p+1
327
- begin emit(:BAR, data[ts...te]) end
330
+ begin emit(:CLOSE_BRACKET, data[ts...te]) end
328
331
  end
329
332
  when 13 then
330
- # line 31 "lib/halunke/lexer.rl"
333
+ # line 32 "lib/halunke/lexer.rl"
331
334
  begin
332
335
  te = p+1
333
- begin emit(:OPERATOR, data[ts ... te]) end
336
+ begin emit(:OPEN_DICT_BRACKET, data[ts...te]) end
334
337
  end
335
338
  when 14 then
336
- # line 32 "lib/halunke/lexer.rl"
339
+ # line 33 "lib/halunke/lexer.rl"
337
340
  begin
338
341
  te = p+1
342
+ begin emit(:START_COMMENT, data[ts...te]) end
339
343
  end
340
344
  when 15 then
341
- # line 33 "lib/halunke/lexer.rl"
345
+ # line 34 "lib/halunke/lexer.rl"
342
346
  begin
343
347
  te = p+1
344
- begin raise "Could not lex '#{ data[ts...te] }'" end
348
+ begin emit(:END_COMMENT, data[ts...te]) end
345
349
  end
346
350
  when 16 then
347
- # line 20 "lib/halunke/lexer.rl"
351
+ # line 35 "lib/halunke/lexer.rl"
348
352
  begin
349
- te = p
350
- p = p - 1; begin emit(:NUMBER, data[ts...te].to_r) end
353
+ te = p+1
354
+ begin emit(:BAR, data[ts...te]) end
351
355
  end
352
356
  when 17 then
353
- # line 23 "lib/halunke/lexer.rl"
357
+ # line 36 "lib/halunke/lexer.rl"
354
358
  begin
355
- te = p
356
- p = p - 1; begin emit(:BAREWORD, data[ts...te]) end
359
+ te = p+1
357
360
  end
358
361
  when 18 then
359
- # line 31 "lib/halunke/lexer.rl"
362
+ # line 37 "lib/halunke/lexer.rl"
360
363
  begin
361
- te = p
362
- p = p - 1; begin emit(:OPERATOR, data[ts ... te]) end
364
+ te = p+1
365
+ begin raise "Could not lex '#{ data[ts...te] }'" end
363
366
  end
364
367
  when 19 then
365
- # line 33 "lib/halunke/lexer.rl"
368
+ # line 22 "lib/halunke/lexer.rl"
366
369
  begin
367
370
  te = p
368
- p = p - 1; begin raise "Could not lex '#{ data[ts...te] }'" end
371
+ p = p - 1; begin emit(:NUMBER, data[ts...te].to_r) end
369
372
  end
370
373
  when 20 then
371
- # line 20 "lib/halunke/lexer.rl"
374
+ # line 25 "lib/halunke/lexer.rl"
375
+ begin
376
+ te = p
377
+ p = p - 1; begin emit(:BAREWORD, data[ts...te]) end
378
+ end
379
+ when 21 then
380
+ # line 37 "lib/halunke/lexer.rl"
381
+ begin
382
+ te = p
383
+ p = p - 1; begin raise "Could not lex '#{ data[ts...te] }'" end
384
+ end
385
+ when 22 then
386
+ # line 22 "lib/halunke/lexer.rl"
372
387
  begin
373
388
  begin p = ((te))-1; end
374
389
  begin emit(:NUMBER, data[ts...te].to_r) end
375
390
  end
376
- when 21 then
377
- # line 33 "lib/halunke/lexer.rl"
391
+ when 23 then
392
+ # line 37 "lib/halunke/lexer.rl"
378
393
  begin
379
394
  begin p = ((te))-1; end
380
395
  begin raise "Could not lex '#{ data[ts...te] }'" end
381
396
  end
382
- when 22 then
397
+ when 24 then
383
398
  # line 1 "NONE"
384
399
  begin
385
400
  case act
386
401
  when 3 then
387
402
  begin begin p = ((te))-1; end
388
403
  emit(:UNASSIGNED_BAREWORD, data[ts+1 ...te]) end
389
- when 14 then
404
+ when 16 then
390
405
  begin begin p = ((te))-1; end
391
406
  raise "Could not lex '#{ data[ts...te] }'" end
392
407
  end
393
408
  end
394
- # line 395 "lib/halunke/lexer.rb"
409
+ # line 410 "lib/halunke/lexer.rb"
395
410
  end # action switch
396
411
  end
397
412
  end
@@ -411,7 +426,7 @@ when 0 then
411
426
  # line 1 "NONE"
412
427
  begin
413
428
  ts = nil; end
414
- # line 415 "lib/halunke/lexer.rb"
429
+ # line 430 "lib/halunke/lexer.rb"
415
430
  end # to state action switch
416
431
  end
417
432
  if _trigger_goto
@@ -438,7 +453,7 @@ end
438
453
  end
439
454
  end
440
455
 
441
- # line 52 "lib/halunke/lexer.rl"
456
+ # line 56 "lib/halunke/lexer.rl"
442
457
 
443
458
  @tokens
444
459
  end