ceml 0.2.0 → 0.2.1

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.1
@@ -58,7 +58,7 @@ module Instructions
58
58
  def key; var || text; end
59
59
  def cmd;
60
60
  text_value =~ /^ask/ and return :ask
61
- text_value =~ /^tell/ and return :tell
61
+ text_value =~ /^(tell|assign)/ and return :tell
62
62
  end
63
63
  end
64
64
 
@@ -81,8 +81,14 @@ module Instructions
81
81
  r0 = r2
82
82
  r0.extend(Instruction0)
83
83
  else
84
- @index = i0
85
- r0 = nil
84
+ r3 = _nt_assign_stmt
85
+ if r3
86
+ r0 = r3
87
+ r0.extend(Instruction0)
88
+ else
89
+ @index = i0
90
+ r0 = nil
91
+ end
86
92
  end
87
93
  end
88
94
 
@@ -174,6 +180,89 @@ module Instructions
174
180
  r0
175
181
  end
176
182
 
183
+ module AssignStmt0
184
+ def ws
185
+ elements[1]
186
+ end
187
+
188
+ def id
189
+ elements[2]
190
+ end
191
+
192
+ def text
193
+ elements[5]
194
+ end
195
+
196
+ def nl
197
+ elements[6]
198
+ end
199
+ end
200
+
201
+ def _nt_assign_stmt
202
+ start_index = index
203
+ if node_cache[:assign_stmt].has_key?(index)
204
+ cached = node_cache[:assign_stmt][index]
205
+ @index = cached.interval.end if cached
206
+ return cached
207
+ end
208
+
209
+ i0, s0 = index, []
210
+ if has_terminal?('assign', false, index)
211
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 6))
212
+ @index += 6
213
+ else
214
+ terminal_parse_failure('assign')
215
+ r1 = nil
216
+ end
217
+ s0 << r1
218
+ if r1
219
+ r2 = _nt_ws
220
+ s0 << r2
221
+ if r2
222
+ r3 = _nt_id
223
+ s0 << r3
224
+ if r3
225
+ if has_terminal?(':', false, index)
226
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
227
+ @index += 1
228
+ else
229
+ terminal_parse_failure(':')
230
+ r4 = nil
231
+ end
232
+ s0 << r4
233
+ if r4
234
+ r6 = _nt_ws
235
+ if r6
236
+ r5 = r6
237
+ else
238
+ r5 = instantiate_node(SyntaxNode,input, index...index)
239
+ end
240
+ s0 << r5
241
+ if r5
242
+ r7 = _nt_text
243
+ s0 << r7
244
+ if r7
245
+ r8 = _nt_nl
246
+ s0 << r8
247
+ end
248
+ end
249
+ end
250
+ end
251
+ end
252
+ end
253
+ if s0.last
254
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
255
+ r0.extend(AssignStmt0)
256
+ else
257
+ @index = i0
258
+ r0 = nil
259
+ end
260
+
261
+ node_cache[:assign_stmt][start_index] = r0
262
+
263
+ r0
264
+ end
265
+
177
266
  module AskStmt0
178
267
  def ws1
179
268
  elements[0]
@@ -7,7 +7,7 @@ grammar Instructions
7
7
  end
8
8
 
9
9
  rule instruction
10
- (ask_stmt / tell_stmt) {
10
+ (ask_stmt / tell_stmt / assign_stmt) {
11
11
 
12
12
  INTERPOLATE_REGEX = /\|(\w+)\.?(\w+)?\|/
13
13
 
@@ -25,7 +25,7 @@ grammar Instructions
25
25
  def key; var || text; end
26
26
  def cmd;
27
27
  text_value =~ /^ask/ and return :ask
28
- text_value =~ /^tell/ and return :tell
28
+ text_value =~ /^(tell|assign)/ and return :tell
29
29
  end
30
30
  }
31
31
  end
@@ -34,6 +34,10 @@ grammar Instructions
34
34
  'tell' ws id ':' ws? text nl
35
35
  end
36
36
 
37
+ rule assign_stmt
38
+ 'assign' ws id ':' ws? text nl
39
+ end
40
+
37
41
  rule ask_stmt
38
42
  'ask' ws id about:(ws 're' ws varname:id)? ':' ws? text nl
39
43
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 0
9
- version: 0.2.0
8
+ - 1
9
+ version: 0.2.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Joe Edelman