sfp 0.1.1 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1 +1,2 @@
1
1
  *.gem
2
+ *.swp
data/README.md CHANGED
@@ -1,13 +1,24 @@
1
1
  SFP Parser and Planner for Ruby
2
2
  ===============================
3
3
  - Author: Herry (herry13@gmail.com)
4
- - Last update: 20 April 2013
5
- - Version: 0.1.1
4
+ - Last update: 06 May 2013
5
+ - Version: 0.1.3
6
6
  - License: [BSD License](https://github.com/herry13/sfp-ruby/blob/master/LICENSE)
7
7
 
8
8
  A Ruby gem that provides a Ruby interface to parse SFP language. It also provides
9
9
  a Ruby interface for a solver to generate a workflow for a planning task written
10
- in SFP language.
10
+ in SFP language. For execution, it provides two execution framework:
11
+ - Bash
12
+ - there is no representation of SFP schema or object
13
+ - a SFP procedure is a Bash script file
14
+ - SFP namespaces are represented by subdirectories of *modules* directory
15
+ - Ruby ( *under-development* )
16
+ - a SFP schema is represented by a Ruby class
17
+ - a SFP object is an instance of Ruby class
18
+ - a SFP procedure is a Ruby method
19
+ - SFP namespaces are represented by a tree of Hash data structure
20
+
21
+ This is a spin-out project from [Nuri](https://github.com/herry13/nuri).
11
22
 
12
23
 
13
24
  To install
@@ -25,17 +36,17 @@ Requirements
25
36
 
26
37
  Supporting Platforms
27
38
  --------------------
28
- - Linux
39
+ - Linux (x86, arm)
29
40
  - MacOS X
30
41
 
31
42
 
32
- To use as a solver to solve a planning task
33
- -------------------------------------------
34
- - parse a SFP file, then print the output in JSON
43
+ To use as a command line to solve a planning task
44
+ -------------------------------------------------
45
+ - parse a SFP file, and then print the output in JSON
35
46
 
36
47
  $ sfp -p <sfp-file>
37
48
 
38
- - solve a planning task, then print the workflow in JSON
49
+ - solve a planning task, and then print the plan in JSON
39
50
 
40
51
  $ sfp <sfp-file>
41
52
 
@@ -48,7 +59,7 @@ To use as Ruby library
48
59
 
49
60
  require 'sfp'
50
61
 
51
- - to parse an SFP file, create a Sfp::Parser object, and then pass the content of the file:
62
+ - to parse an SFP file: create a Sfp::Parser object, and then pass the content of the file:
52
63
 
53
64
  # Determine the home directory of your SFP file.
54
65
  home_dir = File.expand_path(File.dirname("my_file.sfp"))
@@ -63,7 +74,7 @@ To use as Ruby library
63
74
  # Get the result in Hash data structure
64
75
  result = parser.root
65
76
 
66
- - to solve a planning task, create a Sfp::Planner object, and then pass the file's path:
77
+ - to solve a planning task: create a Sfp::Planner object, and then pass the file's path:
67
78
 
68
79
  # Create Sfp::Planner object.
69
80
  planner = Sfp::Planner.new
@@ -73,11 +84,24 @@ To use as Ruby library
73
84
  puts planner.solve({:file => "my_file.sfp", :json => true})
74
85
 
75
86
 
87
+ To solve planning task and execute it using Bash scripts
88
+ --------------------------------------------------------
89
+ - Parse a SFP file, print the plan in JSON, and then execute the plan by
90
+ invoking Bash scripts the current directory or as specified in environment
91
+ variable SFP_HOME. *Note*: the namespaces are represented by directories
92
+ e.g. executing procedure *$.a.b.foo* will be invoking a Bash script
93
+ *./a/b/foo* (or *$SFP_HOME/a/b/foo*).
94
+
95
+ $ sfp --exec-bash <sfp-file>
96
+
97
+
98
+
99
+
76
100
  Example
77
101
  -------
78
- - Create file **types.sfp** with content:
102
+ - Create file **types.sfp** that holds required schemas:
79
103
 
80
- class Service {
104
+ schema Service {
81
105
  running is false
82
106
  procedure start {
83
107
  conditions {
@@ -96,7 +120,7 @@ Example
96
120
  }
97
121
  }
98
122
  }
99
- class Client {
123
+ schema Client {
100
124
  refer isref Service
101
125
  procedure redirect(s isref Service) {
102
126
  conditions { }
@@ -106,17 +130,17 @@ Example
106
130
  }
107
131
  }
108
132
 
109
- In this file, we have two classes that model our domain. First, class
133
+ In this file, we have two schemas that model our domain. First, schema
110
134
  **Service** with an attribute **running*, procedure **start** that
111
135
  changes **running**'s value from **false** to *true*, and procedure
112
136
  **stop** that changes **running**'s value from **true** to **false**.
113
137
 
114
- We also have class **Client** with an attribute **refer**, which is
138
+ We also have schema **Client** with an attribute **refer**, which is
115
139
  a reference to an instance of **Service**. There is a procedure
116
140
  **redirect** that changes the value of **refer** with any instance if
117
141
  **Service**.
118
142
 
119
- - Create file **task.sfp** with content:
143
+ - Create file **task.sfp** that holds the task:
120
144
 
121
145
  include "types.sfp"
122
146
 
@@ -200,7 +224,23 @@ Example
200
224
  the workflow in given order, it will achieves the goal state as well
201
225
  as perserves the global constraints during the changes.
202
226
 
203
- [Nuri](https://github.com/herry13/nuri) is a configuration tools that
204
- binds these procedures with particular shell commands in order to
205
- implement the required configuration changes based on the goal and
206
- global constraints given by the user.
227
+ - To generate and execute the plan using Bash framework, we invoke **sfp**
228
+ command with an option *--exec-bash* and with an argument the path of
229
+ the task file:
230
+
231
+ $ sfp --exec-bash task,sfp
232
+
233
+ It will generate and execute the plan by invoking the Bash scripts in
234
+ the current directory (or as specified in environment variable SFP_HOME)
235
+ in the following sequence:
236
+ 1. *modules/b/start*
237
+ 2. *modules/pc/redirect "$.b"*
238
+ 3. *modules/a/stop*
239
+
240
+
241
+ About Nuri
242
+ ----------
243
+ [Nuri](https://github.com/herry13/nuri) is a configuration tool that
244
+ binds these procedures with particular shell commands and Ruby objects
245
+ in order to implement the required configuration changes based on the
246
+ goal and global constraints given by the user.
data/bin/sfp CHANGED
@@ -9,16 +9,36 @@ if ARGV.length > 1 and ARGV[0] == '-p'
9
9
  parser = Sfp::Parser.new({:home_dir => home_dir})
10
10
  parser.parse(File.read(ARGV[1]))
11
11
  puts parser.to_json({:pretty => true})
12
+
13
+ elsif ARGV.length > 1 and ARGV[0] == '--exec-ruby'
14
+ planner = Sfp::Planner.new
15
+ plan = planner.solve({:file => ARGV[1]})
16
+ puts plan.inspect
17
+ executor = Sfp::RubyExecutor.new
18
+ executor.execute_plan({:plan => plan})
19
+
20
+ elsif ARGV.length > 1 and ARGV[0] == '--exec-bash'
21
+ planner = Sfp::Planner.new
22
+ plan = planner.solve({:file => ARGV[1]})
23
+ puts "Plan: #{plan.inspect}"
24
+ executor = Sfp::BashExecutor.new
25
+ puts "Execution:"
26
+ executor.execute_plan({:plan => plan, :print_output => true})
27
+
12
28
  elsif ARGV.length > 0
13
29
  planner = Sfp::Planner.new
14
- #puts planner.solve_file(ARGV[0], true)
15
30
  puts planner.solve({:file => ARGV[0], :pretty_json => true})
31
+
16
32
  else
17
33
  puts "Usage: #{$0} [options] <sfp-file>
18
34
 
19
35
  options:
20
- <none> parse file and solve the planning task
21
- -p parse file and print it in JSON format
36
+ <none> parse file and solve the planning task
37
+ -p parse file and print it in JSON format
38
+ --exec-ruby parse file, solve the planning task, and
39
+ execute the plan with Sfp::RubyExecutor
40
+ --exec-bash parse file, solve the planning task, and
41
+ execute the plan with Sfp::BashExecutor
22
42
 
23
43
  "
24
44
  end
File without changes
data/lib/sfp.rb CHANGED
@@ -15,3 +15,5 @@ require libdir + '/sfp/parser'
15
15
 
16
16
  require libdir + '/sfp/sas'
17
17
  require libdir + '/sfp/planner'
18
+
19
+ require libdir + '/sfp/executor.rb'
@@ -5,7 +5,7 @@
5
5
  # Generated using ANTLR version: 3.2.1-SNAPSHOT Jul 31, 2010 19:34:52
6
6
  # Ruby runtime library version: 1.8.11
7
7
  # Input grammar file: SfpLang.g
8
- # Generated at: 2013-04-20 17:59:20
8
+ # Generated at: 2013-05-06 16:26:14
9
9
  #
10
10
 
11
11
  # ~~~> start load path setup
@@ -77,15 +77,15 @@ module SfpLang
77
77
  :T__18 => 18, :T__53 => 53, :T__54 => 54, :T__59 => 59,
78
78
  :NL => 4, :COMMENT => 11, :T__50 => 50, :T__42 => 42,
79
79
  :T__43 => 43, :T__40 => 40, :T__41 => 41, :T__46 => 46,
80
- :T__47 => 47, :T__44 => 44, :T__45 => 45, :T__48 => 48,
81
- :T__49 => 49, :NULL => 5, :UNICODE_ESC => 16, :NUMBER => 8,
82
- :HEX_DIGIT => 15, :MULTILINE_STRING => 10, :T__30 => 30,
83
- :T__31 => 31, :T__32 => 32, :T__33 => 33, :T__71 => 71,
84
- :WS => 12, :T__34 => 34, :T__72 => 72, :T__35 => 35,
85
- :T__36 => 36, :T__70 => 70, :T__37 => 37, :T__38 => 38,
86
- :T__39 => 39, :T__76 => 76, :T__75 => 75, :T__74 => 74,
87
- :T__73 => 73, :T__79 => 79, :T__78 => 78, :STRING => 6,
88
- :T__77 => 77 )
80
+ :T__80 => 80, :T__47 => 47, :T__44 => 44, :T__45 => 45,
81
+ :T__48 => 48, :T__49 => 49, :NULL => 5, :UNICODE_ESC => 16,
82
+ :NUMBER => 8, :HEX_DIGIT => 15, :MULTILINE_STRING => 10,
83
+ :T__30 => 30, :T__31 => 31, :T__32 => 32, :T__33 => 33,
84
+ :T__71 => 71, :WS => 12, :T__34 => 34, :T__72 => 72,
85
+ :T__35 => 35, :T__36 => 36, :T__70 => 70, :T__37 => 37,
86
+ :T__38 => 38, :T__39 => 39, :T__76 => 76, :T__75 => 75,
87
+ :T__74 => 74, :T__73 => 73, :T__79 => 79, :T__78 => 78,
88
+ :STRING => 6, :T__77 => 77 )
89
89
 
90
90
  end
91
91
 
@@ -111,9 +111,10 @@ module SfpLang
111
111
  "T__60", "T__61", "T__62", "T__63", "T__64", "T__65",
112
112
  "T__66", "T__67", "T__68", "T__69", "T__70", "T__71",
113
113
  "T__72", "T__73", "T__74", "T__75", "T__76", "T__77",
114
- "T__78", "T__79", "NULL", "BOOLEAN", "ID", "NUMBER",
115
- "COMMENT", "MULTILINE_STRING", "NL", "WS", "STRING",
116
- "EXPONENT", "HEX_DIGIT", "ESC_SEQ", "OCTAL_ESC", "UNICODE_ESC" ].freeze
114
+ "T__78", "T__79", "T__80", "NULL", "BOOLEAN", "ID",
115
+ "NUMBER", "COMMENT", "MULTILINE_STRING", "NL", "WS",
116
+ "STRING", "EXPONENT", "HEX_DIGIT", "ESC_SEQ", "OCTAL_ESC",
117
+ "UNICODE_ESC" ].freeze
117
118
  RULE_METHODS = [ :t__18!, :t__19!, :t__20!, :t__21!, :t__22!, :t__23!,
118
119
  :t__24!, :t__25!, :t__26!, :t__27!, :t__28!, :t__29!,
119
120
  :t__30!, :t__31!, :t__32!, :t__33!, :t__34!, :t__35!,
@@ -124,9 +125,10 @@ module SfpLang
124
125
  :t__60!, :t__61!, :t__62!, :t__63!, :t__64!, :t__65!,
125
126
  :t__66!, :t__67!, :t__68!, :t__69!, :t__70!, :t__71!,
126
127
  :t__72!, :t__73!, :t__74!, :t__75!, :t__76!, :t__77!,
127
- :t__78!, :t__79!, :null!, :boolean!, :id!, :number!,
128
- :comment!, :multiline_string!, :nl!, :ws!, :string!,
129
- :exponent!, :hex_digit!, :esc_seq!, :octal_esc!, :unicode_esc! ].freeze
128
+ :t__78!, :t__79!, :t__80!, :null!, :boolean!, :id!,
129
+ :number!, :comment!, :multiline_string!, :nl!, :ws!,
130
+ :string!, :exponent!, :hex_digit!, :esc_seq!, :octal_esc!,
131
+ :unicode_esc! ].freeze
130
132
 
131
133
 
132
134
  def initialize( input=nil, options = {} )
@@ -291,8 +293,8 @@ module SfpLang
291
293
 
292
294
 
293
295
  # - - - - main rule block - - - -
294
- # at line 13:9: 'extends'
295
- match( "extends" )
296
+ # at line 13:9: 'schema'
297
+ match( "schema" )
296
298
 
297
299
 
298
300
  @state.type = type
@@ -315,8 +317,8 @@ module SfpLang
315
317
 
316
318
 
317
319
  # - - - - main rule block - - - -
318
- # at line 14:9: 'isa'
319
- match( "isa" )
320
+ # at line 14:9: 'extends'
321
+ match( "extends" )
320
322
 
321
323
 
322
324
  @state.type = type
@@ -339,8 +341,8 @@ module SfpLang
339
341
 
340
342
 
341
343
  # - - - - main rule block - - - -
342
- # at line 15:9: '['
343
- match( 0x5b )
344
+ # at line 15:9: 'isa'
345
+ match( "isa" )
344
346
 
345
347
 
346
348
  @state.type = type
@@ -363,8 +365,8 @@ module SfpLang
363
365
 
364
366
 
365
367
  # - - - - main rule block - - - -
366
- # at line 16:9: ']'
367
- match( 0x5d )
368
+ # at line 16:9: '['
369
+ match( 0x5b )
368
370
 
369
371
 
370
372
  @state.type = type
@@ -387,8 +389,8 @@ module SfpLang
387
389
 
388
390
 
389
391
  # - - - - main rule block - - - -
390
- # at line 17:9: 'if'
391
- match( "if" )
392
+ # at line 17:9: ']'
393
+ match( 0x5d )
392
394
 
393
395
 
394
396
  @state.type = type
@@ -411,8 +413,8 @@ module SfpLang
411
413
 
412
414
 
413
415
  # - - - - main rule block - - - -
414
- # at line 18:9: 'then'
415
- match( "then" )
416
+ # at line 18:9: 'if'
417
+ match( "if" )
416
418
 
417
419
 
418
420
  @state.type = type
@@ -435,8 +437,8 @@ module SfpLang
435
437
 
436
438
 
437
439
  # - - - - main rule block - - - -
438
- # at line 19:9: 'or'
439
- match( "or" )
440
+ # at line 19:9: 'then'
441
+ match( "then" )
440
442
 
441
443
 
442
444
  @state.type = type
@@ -459,8 +461,8 @@ module SfpLang
459
461
 
460
462
 
461
463
  # - - - - main rule block - - - -
462
- # at line 20:9: 'operator'
463
- match( "operator" )
464
+ # at line 20:9: 'or'
465
+ match( "or" )
464
466
 
465
467
 
466
468
  @state.type = type
@@ -483,8 +485,8 @@ module SfpLang
483
485
 
484
486
 
485
487
  # - - - - main rule block - - - -
486
- # at line 21:9: 'cost'
487
- match( "cost" )
488
+ # at line 21:9: 'operator'
489
+ match( "operator" )
488
490
 
489
491
 
490
492
  @state.type = type
@@ -507,8 +509,8 @@ module SfpLang
507
509
 
508
510
 
509
511
  # - - - - main rule block - - - -
510
- # at line 22:9: 'conditions'
511
- match( "conditions" )
512
+ # at line 22:9: 'cost'
513
+ match( "cost" )
512
514
 
513
515
 
514
516
  @state.type = type
@@ -531,8 +533,8 @@ module SfpLang
531
533
 
532
534
 
533
535
  # - - - - main rule block - - - -
534
- # at line 23:9: 'condition'
535
- match( "condition" )
536
+ # at line 23:9: 'conditions'
537
+ match( "conditions" )
536
538
 
537
539
 
538
540
  @state.type = type
@@ -555,8 +557,8 @@ module SfpLang
555
557
 
556
558
 
557
559
  # - - - - main rule block - - - -
558
- # at line 24:9: 'effects'
559
- match( "effects" )
560
+ # at line 24:9: 'condition'
561
+ match( "condition" )
560
562
 
561
563
 
562
564
  @state.type = type
@@ -579,8 +581,8 @@ module SfpLang
579
581
 
580
582
 
581
583
  # - - - - main rule block - - - -
582
- # at line 25:9: 'procedure'
583
- match( "procedure" )
584
+ # at line 25:9: 'effects'
585
+ match( "effects" )
584
586
 
585
587
 
586
588
  @state.type = type
@@ -603,8 +605,8 @@ module SfpLang
603
605
 
604
606
 
605
607
  # - - - - main rule block - - - -
606
- # at line 26:9: '('
607
- match( 0x28 )
608
+ # at line 26:9: 'procedure'
609
+ match( "procedure" )
608
610
 
609
611
 
610
612
  @state.type = type
@@ -627,8 +629,8 @@ module SfpLang
627
629
 
628
630
 
629
631
  # - - - - main rule block - - - -
630
- # at line 27:9: ','
631
- match( 0x2c )
632
+ # at line 27:9: '('
633
+ match( 0x28 )
632
634
 
633
635
 
634
636
  @state.type = type
@@ -651,8 +653,8 @@ module SfpLang
651
653
 
652
654
 
653
655
  # - - - - main rule block - - - -
654
- # at line 28:9: ')'
655
- match( 0x29 )
656
+ # at line 28:9: ','
657
+ match( 0x2c )
656
658
 
657
659
 
658
660
  @state.type = type
@@ -675,8 +677,8 @@ module SfpLang
675
677
 
676
678
 
677
679
  # - - - - main rule block - - - -
678
- # at line 29:9: 'areall'
679
- match( "areall" )
680
+ # at line 29:9: ')'
681
+ match( 0x29 )
680
682
 
681
683
 
682
684
  @state.type = type
@@ -699,8 +701,8 @@ module SfpLang
699
701
 
700
702
 
701
703
  # - - - - main rule block - - - -
702
- # at line 30:9: 'isset'
703
- match( "isset" )
704
+ # at line 30:9: 'areall'
705
+ match( "areall" )
704
706
 
705
707
 
706
708
  @state.type = type
@@ -723,8 +725,8 @@ module SfpLang
723
725
 
724
726
 
725
727
  # - - - - main rule block - - - -
726
- # at line 31:9: 'effect'
727
- match( "effect" )
728
+ # at line 31:9: 'isset'
729
+ match( "isset" )
728
730
 
729
731
 
730
732
  @state.type = type
@@ -747,8 +749,8 @@ module SfpLang
747
749
 
748
750
 
749
751
  # - - - - main rule block - - - -
750
- # at line 32:9: 'goal'
751
- match( "goal" )
752
+ # at line 32:9: 'effect'
753
+ match( "effect" )
752
754
 
753
755
 
754
756
  @state.type = type
@@ -771,8 +773,8 @@ module SfpLang
771
773
 
772
774
 
773
775
  # - - - - main rule block - - - -
774
- # at line 33:9: 'constraint'
775
- match( "constraint" )
776
+ # at line 33:9: 'goal'
777
+ match( "goal" )
776
778
 
777
779
 
778
780
  @state.type = type
@@ -795,8 +797,8 @@ module SfpLang
795
797
 
796
798
 
797
799
  # - - - - main rule block - - - -
798
- # at line 34:9: 'always'
799
- match( "always" )
800
+ # at line 34:9: 'constraint'
801
+ match( "constraint" )
800
802
 
801
803
 
802
804
  @state.type = type
@@ -819,8 +821,8 @@ module SfpLang
819
821
 
820
822
 
821
823
  # - - - - main rule block - - - -
822
- # at line 35:9: 'sometime'
823
- match( "sometime" )
824
+ # at line 35:9: 'always'
825
+ match( "always" )
824
826
 
825
827
 
826
828
  @state.type = type
@@ -843,8 +845,8 @@ module SfpLang
843
845
 
844
846
 
845
847
  # - - - - main rule block - - - -
846
- # at line 36:9: 'within'
847
- match( "within" )
848
+ # at line 36:9: 'sometime'
849
+ match( "sometime" )
848
850
 
849
851
 
850
852
  @state.type = type
@@ -867,8 +869,8 @@ module SfpLang
867
869
 
868
870
 
869
871
  # - - - - main rule block - - - -
870
- # at line 37:9: 'after'
871
- match( "after" )
872
+ # at line 37:9: 'within'
873
+ match( "within" )
872
874
 
873
875
 
874
876
  @state.type = type
@@ -891,8 +893,8 @@ module SfpLang
891
893
 
892
894
 
893
895
  # - - - - main rule block - - - -
894
- # at line 38:9: 'before'
895
- match( "before" )
896
+ # at line 38:9: 'after'
897
+ match( "after" )
896
898
 
897
899
 
898
900
  @state.type = type
@@ -915,8 +917,8 @@ module SfpLang
915
917
 
916
918
 
917
919
  # - - - - main rule block - - - -
918
- # at line 39:9: 'foreach'
919
- match( "foreach" )
920
+ # at line 39:9: 'before'
921
+ match( "before" )
920
922
 
921
923
 
922
924
  @state.type = type
@@ -939,8 +941,8 @@ module SfpLang
939
941
 
940
942
 
941
943
  # - - - - main rule block - - - -
942
- # at line 40:9: 'as'
943
- match( "as" )
944
+ # at line 40:9: 'foreach'
945
+ match( "foreach" )
944
946
 
945
947
 
946
948
  @state.type = type
@@ -963,8 +965,8 @@ module SfpLang
963
965
 
964
966
 
965
967
  # - - - - main rule block - - - -
966
- # at line 41:9: 'forall'
967
- match( "forall" )
968
+ # at line 41:9: 'as'
969
+ match( "as" )
968
970
 
969
971
 
970
972
  @state.type = type
@@ -987,8 +989,8 @@ module SfpLang
987
989
 
988
990
 
989
991
  # - - - - main rule block - - - -
990
- # at line 42:9: 'exist'
991
- match( "exist" )
992
+ # at line 42:9: 'forall'
993
+ match( "forall" )
992
994
 
993
995
 
994
996
  @state.type = type
@@ -1011,8 +1013,8 @@ module SfpLang
1011
1013
 
1012
1014
 
1013
1015
  # - - - - main rule block - - - -
1014
- # at line 43:9: 'forsome'
1015
- match( "forsome" )
1016
+ # at line 43:9: 'exist'
1017
+ match( "exist" )
1016
1018
 
1017
1019
 
1018
1020
  @state.type = type
@@ -1035,8 +1037,8 @@ module SfpLang
1035
1037
 
1036
1038
 
1037
1039
  # - - - - main rule block - - - -
1038
- # at line 44:9: '='
1039
- match( 0x3d )
1040
+ # at line 44:9: 'forsome'
1041
+ match( "forsome" )
1040
1042
 
1041
1043
 
1042
1044
  @state.type = type
@@ -1059,8 +1061,8 @@ module SfpLang
1059
1061
 
1060
1062
 
1061
1063
  # - - - - main rule block - - - -
1062
- # at line 45:9: ':different'
1063
- match( ":different" )
1064
+ # at line 45:9: '='
1065
+ match( 0x3d )
1064
1066
 
1065
1067
 
1066
1068
  @state.type = type
@@ -1083,8 +1085,8 @@ module SfpLang
1083
1085
 
1084
1086
 
1085
1087
  # - - - - main rule block - - - -
1086
- # at line 46:9: 'not'
1087
- match( "not" )
1088
+ # at line 46:9: ':different'
1089
+ match( ":different" )
1088
1090
 
1089
1091
 
1090
1092
  @state.type = type
@@ -1107,8 +1109,8 @@ module SfpLang
1107
1109
 
1108
1110
 
1109
1111
  # - - - - main rule block - - - -
1110
- # at line 47:9: 'is'
1111
- match( "is" )
1112
+ # at line 47:9: 'not'
1113
+ match( "not" )
1112
1114
 
1113
1115
 
1114
1116
  @state.type = type
@@ -1131,8 +1133,8 @@ module SfpLang
1131
1133
 
1132
1134
 
1133
1135
  # - - - - main rule block - - - -
1134
- # at line 48:9: 'in'
1135
- match( "in" )
1136
+ # at line 48:9: 'is'
1137
+ match( "is" )
1136
1138
 
1137
1139
 
1138
1140
  @state.type = type
@@ -1155,8 +1157,8 @@ module SfpLang
1155
1157
 
1156
1158
 
1157
1159
  # - - - - main rule block - - - -
1158
- # at line 49:9: 'isnot'
1159
- match( "isnot" )
1160
+ # at line 49:9: 'in'
1161
+ match( "in" )
1160
1162
 
1161
1163
 
1162
1164
  @state.type = type
@@ -1179,8 +1181,8 @@ module SfpLang
1179
1181
 
1180
1182
 
1181
1183
  # - - - - main rule block - - - -
1182
- # at line 50:9: 'isnt'
1183
- match( "isnt" )
1184
+ # at line 50:9: 'isnot'
1185
+ match( "isnot" )
1184
1186
 
1185
1187
 
1186
1188
  @state.type = type
@@ -1203,8 +1205,8 @@ module SfpLang
1203
1205
 
1204
1206
 
1205
1207
  # - - - - main rule block - - - -
1206
- # at line 51:9: 'has'
1207
- match( "has" )
1208
+ # at line 51:9: 'isnt'
1209
+ match( "isnt" )
1208
1210
 
1209
1211
 
1210
1212
  @state.type = type
@@ -1227,8 +1229,8 @@ module SfpLang
1227
1229
 
1228
1230
 
1229
1231
  # - - - - main rule block - - - -
1230
- # at line 52:9: 'total('
1231
- match( "total(" )
1232
+ # at line 52:9: 'has'
1233
+ match( "has" )
1232
1234
 
1233
1235
 
1234
1236
  @state.type = type
@@ -1251,8 +1253,8 @@ module SfpLang
1251
1253
 
1252
1254
 
1253
1255
  # - - - - main rule block - - - -
1254
- # at line 53:9: 'new'
1255
- match( "new" )
1256
+ # at line 53:9: 'total('
1257
+ match( "total(" )
1256
1258
 
1257
1259
 
1258
1260
  @state.type = type
@@ -1275,8 +1277,8 @@ module SfpLang
1275
1277
 
1276
1278
 
1277
1279
  # - - - - main rule block - - - -
1278
- # at line 54:9: 'delete'
1279
- match( "delete" )
1280
+ # at line 54:9: 'new'
1281
+ match( "new" )
1280
1282
 
1281
1283
 
1282
1284
  @state.type = type
@@ -1299,8 +1301,8 @@ module SfpLang
1299
1301
 
1300
1302
 
1301
1303
  # - - - - main rule block - - - -
1302
- # at line 55:9: 'add('
1303
- match( "add(" )
1304
+ # at line 55:9: 'delete'
1305
+ match( "delete" )
1304
1306
 
1305
1307
 
1306
1308
  @state.type = type
@@ -1323,8 +1325,8 @@ module SfpLang
1323
1325
 
1324
1326
 
1325
1327
  # - - - - main rule block - - - -
1326
- # at line 56:9: 'remove('
1327
- match( "remove(" )
1328
+ # at line 56:9: 'add('
1329
+ match( "add(" )
1328
1330
 
1329
1331
 
1330
1332
  @state.type = type
@@ -1347,8 +1349,8 @@ module SfpLang
1347
1349
 
1348
1350
 
1349
1351
  # - - - - main rule block - - - -
1350
- # at line 57:9: '.'
1351
- match( 0x2e )
1352
+ # at line 57:9: 'remove('
1353
+ match( "remove(" )
1352
1354
 
1353
1355
 
1354
1356
  @state.type = type
@@ -1371,8 +1373,8 @@ module SfpLang
1371
1373
 
1372
1374
 
1373
1375
  # - - - - main rule block - - - -
1374
- # at line 58:9: 'isref'
1375
- match( "isref" )
1376
+ # at line 58:9: '.'
1377
+ match( 0x2e )
1376
1378
 
1377
1379
 
1378
1380
  @state.type = type
@@ -1395,8 +1397,8 @@ module SfpLang
1395
1397
 
1396
1398
 
1397
1399
  # - - - - main rule block - - - -
1398
- # at line 59:9: 'either'
1399
- match( "either" )
1400
+ # at line 59:9: 'isref'
1401
+ match( "isref" )
1400
1402
 
1401
1403
 
1402
1404
  @state.type = type
@@ -1419,8 +1421,8 @@ module SfpLang
1419
1421
 
1420
1422
 
1421
1423
  # - - - - main rule block - - - -
1422
- # at line 60:9: '!='
1423
- match( "!=" )
1424
+ # at line 60:9: 'either'
1425
+ match( "either" )
1424
1426
 
1425
1427
 
1426
1428
  @state.type = type
@@ -1443,8 +1445,8 @@ module SfpLang
1443
1445
 
1444
1446
 
1445
1447
  # - - - - main rule block - - - -
1446
- # at line 61:9: '+='
1447
- match( "+=" )
1448
+ # at line 61:9: '!='
1449
+ match( "!=" )
1448
1450
 
1449
1451
 
1450
1452
  @state.type = type
@@ -1467,8 +1469,8 @@ module SfpLang
1467
1469
 
1468
1470
 
1469
1471
  # - - - - main rule block - - - -
1470
- # at line 62:9: '-='
1471
- match( "-=" )
1472
+ # at line 62:9: '+='
1473
+ match( "+=" )
1472
1474
 
1473
1475
 
1474
1476
  @state.type = type
@@ -1491,8 +1493,8 @@ module SfpLang
1491
1493
 
1492
1494
 
1493
1495
  # - - - - main rule block - - - -
1494
- # at line 63:9: '*='
1495
- match( "*=" )
1496
+ # at line 63:9: '-='
1497
+ match( "-=" )
1496
1498
 
1497
1499
 
1498
1500
  @state.type = type
@@ -1515,8 +1517,8 @@ module SfpLang
1515
1517
 
1516
1518
 
1517
1519
  # - - - - main rule block - - - -
1518
- # at line 64:9: '/='
1519
- match( "/=" )
1520
+ # at line 64:9: '*='
1521
+ match( "*=" )
1520
1522
 
1521
1523
 
1522
1524
  @state.type = type
@@ -1539,8 +1541,8 @@ module SfpLang
1539
1541
 
1540
1542
 
1541
1543
  # - - - - main rule block - - - -
1542
- # at line 65:9: '>'
1543
- match( 0x3e )
1544
+ # at line 65:9: '/='
1545
+ match( "/=" )
1544
1546
 
1545
1547
 
1546
1548
  @state.type = type
@@ -1563,8 +1565,8 @@ module SfpLang
1563
1565
 
1564
1566
 
1565
1567
  # - - - - main rule block - - - -
1566
- # at line 66:9: '>='
1567
- match( ">=" )
1568
+ # at line 66:9: '>'
1569
+ match( 0x3e )
1568
1570
 
1569
1571
 
1570
1572
  @state.type = type
@@ -1587,8 +1589,8 @@ module SfpLang
1587
1589
 
1588
1590
 
1589
1591
  # - - - - main rule block - - - -
1590
- # at line 67:9: '<'
1591
- match( 0x3c )
1592
+ # at line 67:9: '>='
1593
+ match( ">=" )
1592
1594
 
1593
1595
 
1594
1596
  @state.type = type
@@ -1611,8 +1613,8 @@ module SfpLang
1611
1613
 
1612
1614
 
1613
1615
  # - - - - main rule block - - - -
1614
- # at line 68:9: '<='
1615
- match( "<=" )
1616
+ # at line 68:9: '<'
1617
+ match( 0x3c )
1616
1618
 
1617
1619
 
1618
1620
  @state.type = type
@@ -1624,11 +1626,35 @@ module SfpLang
1624
1626
 
1625
1627
  end
1626
1628
 
1629
+ # lexer rule t__80! (T__80)
1630
+ # (in SfpLang.g)
1631
+ def t__80!
1632
+ # -> uncomment the next line to manually enable rule tracing
1633
+ # trace_in( __method__, 63 )
1634
+
1635
+ type = T__80
1636
+ channel = ANTLR3::DEFAULT_CHANNEL
1637
+
1638
+
1639
+ # - - - - main rule block - - - -
1640
+ # at line 69:9: '<='
1641
+ match( "<=" )
1642
+
1643
+
1644
+ @state.type = type
1645
+ @state.channel = channel
1646
+
1647
+ ensure
1648
+ # -> uncomment the next line to manually enable rule tracing
1649
+ # trace_out( __method__, 63 )
1650
+
1651
+ end
1652
+
1627
1653
  # lexer rule null! (NULL)
1628
1654
  # (in SfpLang.g)
1629
1655
  def null!
1630
1656
  # -> uncomment the next line to manually enable rule tracing
1631
- # trace_in( __method__, 63 )
1657
+ # trace_in( __method__, 64 )
1632
1658
 
1633
1659
  type = NULL
1634
1660
  channel = ANTLR3::DEFAULT_CHANNEL
@@ -1668,7 +1694,7 @@ module SfpLang
1668
1694
 
1669
1695
  ensure
1670
1696
  # -> uncomment the next line to manually enable rule tracing
1671
- # trace_out( __method__, 63 )
1697
+ # trace_out( __method__, 64 )
1672
1698
 
1673
1699
  end
1674
1700
 
@@ -1676,7 +1702,7 @@ module SfpLang
1676
1702
  # (in SfpLang.g)
1677
1703
  def boolean!
1678
1704
  # -> uncomment the next line to manually enable rule tracing
1679
- # trace_in( __method__, 64 )
1705
+ # trace_in( __method__, 65 )
1680
1706
 
1681
1707
  type = BOOLEAN
1682
1708
  channel = ANTLR3::DEFAULT_CHANNEL
@@ -1734,7 +1760,7 @@ module SfpLang
1734
1760
 
1735
1761
  ensure
1736
1762
  # -> uncomment the next line to manually enable rule tracing
1737
- # trace_out( __method__, 64 )
1763
+ # trace_out( __method__, 65 )
1738
1764
 
1739
1765
  end
1740
1766
 
@@ -1742,7 +1768,7 @@ module SfpLang
1742
1768
  # (in SfpLang.g)
1743
1769
  def id!
1744
1770
  # -> uncomment the next line to manually enable rule tracing
1745
- # trace_in( __method__, 65 )
1771
+ # trace_in( __method__, 66 )
1746
1772
 
1747
1773
  type = ID
1748
1774
  channel = ANTLR3::DEFAULT_CHANNEL
@@ -1792,7 +1818,7 @@ module SfpLang
1792
1818
 
1793
1819
  ensure
1794
1820
  # -> uncomment the next line to manually enable rule tracing
1795
- # trace_out( __method__, 65 )
1821
+ # trace_out( __method__, 66 )
1796
1822
 
1797
1823
  end
1798
1824
 
@@ -1800,7 +1826,7 @@ module SfpLang
1800
1826
  # (in SfpLang.g)
1801
1827
  def number!
1802
1828
  # -> uncomment the next line to manually enable rule tracing
1803
- # trace_in( __method__, 66 )
1829
+ # trace_in( __method__, 67 )
1804
1830
 
1805
1831
  type = NUMBER
1806
1832
  channel = ANTLR3::DEFAULT_CHANNEL
@@ -1853,7 +1879,7 @@ module SfpLang
1853
1879
 
1854
1880
  ensure
1855
1881
  # -> uncomment the next line to manually enable rule tracing
1856
- # trace_out( __method__, 66 )
1882
+ # trace_out( __method__, 67 )
1857
1883
 
1858
1884
  end
1859
1885
 
@@ -1861,7 +1887,7 @@ module SfpLang
1861
1887
  # (in SfpLang.g)
1862
1888
  def comment!
1863
1889
  # -> uncomment the next line to manually enable rule tracing
1864
- # trace_in( __method__, 67 )
1890
+ # trace_in( __method__, 68 )
1865
1891
 
1866
1892
  type = COMMENT
1867
1893
  channel = ANTLR3::DEFAULT_CHANNEL
@@ -1996,7 +2022,7 @@ module SfpLang
1996
2022
 
1997
2023
  ensure
1998
2024
  # -> uncomment the next line to manually enable rule tracing
1999
- # trace_out( __method__, 67 )
2025
+ # trace_out( __method__, 68 )
2000
2026
 
2001
2027
  end
2002
2028
 
@@ -2004,7 +2030,7 @@ module SfpLang
2004
2030
  # (in SfpLang.g)
2005
2031
  def multiline_string!
2006
2032
  # -> uncomment the next line to manually enable rule tracing
2007
- # trace_in( __method__, 68 )
2033
+ # trace_in( __method__, 69 )
2008
2034
 
2009
2035
  type = MULTILINE_STRING
2010
2036
  channel = ANTLR3::DEFAULT_CHANNEL
@@ -2041,7 +2067,7 @@ module SfpLang
2041
2067
 
2042
2068
  ensure
2043
2069
  # -> uncomment the next line to manually enable rule tracing
2044
- # trace_out( __method__, 68 )
2070
+ # trace_out( __method__, 69 )
2045
2071
 
2046
2072
  end
2047
2073
 
@@ -2049,7 +2075,7 @@ module SfpLang
2049
2075
  # (in SfpLang.g)
2050
2076
  def nl!
2051
2077
  # -> uncomment the next line to manually enable rule tracing
2052
- # trace_in( __method__, 69 )
2078
+ # trace_in( __method__, 70 )
2053
2079
 
2054
2080
  type = NL
2055
2081
  channel = ANTLR3::DEFAULT_CHANNEL
@@ -2078,7 +2104,7 @@ module SfpLang
2078
2104
 
2079
2105
  ensure
2080
2106
  # -> uncomment the next line to manually enable rule tracing
2081
- # trace_out( __method__, 69 )
2107
+ # trace_out( __method__, 70 )
2082
2108
 
2083
2109
  end
2084
2110
 
@@ -2086,7 +2112,7 @@ module SfpLang
2086
2112
  # (in SfpLang.g)
2087
2113
  def ws!
2088
2114
  # -> uncomment the next line to manually enable rule tracing
2089
- # trace_in( __method__, 70 )
2115
+ # trace_in( __method__, 71 )
2090
2116
 
2091
2117
  type = WS
2092
2118
  channel = ANTLR3::DEFAULT_CHANNEL
@@ -2113,7 +2139,7 @@ module SfpLang
2113
2139
 
2114
2140
  ensure
2115
2141
  # -> uncomment the next line to manually enable rule tracing
2116
- # trace_out( __method__, 70 )
2142
+ # trace_out( __method__, 71 )
2117
2143
 
2118
2144
  end
2119
2145
 
@@ -2121,7 +2147,7 @@ module SfpLang
2121
2147
  # (in SfpLang.g)
2122
2148
  def string!
2123
2149
  # -> uncomment the next line to manually enable rule tracing
2124
- # trace_in( __method__, 71 )
2150
+ # trace_in( __method__, 72 )
2125
2151
 
2126
2152
  type = STRING
2127
2153
  channel = ANTLR3::DEFAULT_CHANNEL
@@ -2170,7 +2196,7 @@ module SfpLang
2170
2196
 
2171
2197
  ensure
2172
2198
  # -> uncomment the next line to manually enable rule tracing
2173
- # trace_out( __method__, 71 )
2199
+ # trace_out( __method__, 72 )
2174
2200
 
2175
2201
  end
2176
2202
 
@@ -2178,7 +2204,7 @@ module SfpLang
2178
2204
  # (in SfpLang.g)
2179
2205
  def exponent!
2180
2206
  # -> uncomment the next line to manually enable rule tracing
2181
- # trace_in( __method__, 72 )
2207
+ # trace_in( __method__, 73 )
2182
2208
 
2183
2209
 
2184
2210
  # - - - - main rule block - - - -
@@ -2241,7 +2267,7 @@ module SfpLang
2241
2267
 
2242
2268
  ensure
2243
2269
  # -> uncomment the next line to manually enable rule tracing
2244
- # trace_out( __method__, 72 )
2270
+ # trace_out( __method__, 73 )
2245
2271
 
2246
2272
  end
2247
2273
 
@@ -2249,7 +2275,7 @@ module SfpLang
2249
2275
  # (in SfpLang.g)
2250
2276
  def hex_digit!
2251
2277
  # -> uncomment the next line to manually enable rule tracing
2252
- # trace_in( __method__, 73 )
2278
+ # trace_in( __method__, 74 )
2253
2279
 
2254
2280
 
2255
2281
  # - - - - main rule block - - - -
@@ -2266,7 +2292,7 @@ module SfpLang
2266
2292
 
2267
2293
  ensure
2268
2294
  # -> uncomment the next line to manually enable rule tracing
2269
- # trace_out( __method__, 73 )
2295
+ # trace_out( __method__, 74 )
2270
2296
 
2271
2297
  end
2272
2298
 
@@ -2274,7 +2300,7 @@ module SfpLang
2274
2300
  # (in SfpLang.g)
2275
2301
  def esc_seq!
2276
2302
  # -> uncomment the next line to manually enable rule tracing
2277
- # trace_in( __method__, 74 )
2303
+ # trace_in( __method__, 75 )
2278
2304
 
2279
2305
 
2280
2306
  # - - - - main rule block - - - -
@@ -2318,7 +2344,7 @@ module SfpLang
2318
2344
  end
2319
2345
  ensure
2320
2346
  # -> uncomment the next line to manually enable rule tracing
2321
- # trace_out( __method__, 74 )
2347
+ # trace_out( __method__, 75 )
2322
2348
 
2323
2349
  end
2324
2350
 
@@ -2326,7 +2352,7 @@ module SfpLang
2326
2352
  # (in SfpLang.g)
2327
2353
  def octal_esc!
2328
2354
  # -> uncomment the next line to manually enable rule tracing
2329
- # trace_in( __method__, 75 )
2355
+ # trace_in( __method__, 76 )
2330
2356
 
2331
2357
 
2332
2358
  # - - - - main rule block - - - -
@@ -2405,7 +2431,7 @@ module SfpLang
2405
2431
  end
2406
2432
  ensure
2407
2433
  # -> uncomment the next line to manually enable rule tracing
2408
- # trace_out( __method__, 75 )
2434
+ # trace_out( __method__, 76 )
2409
2435
 
2410
2436
  end
2411
2437
 
@@ -2413,7 +2439,7 @@ module SfpLang
2413
2439
  # (in SfpLang.g)
2414
2440
  def unicode_esc!
2415
2441
  # -> uncomment the next line to manually enable rule tracing
2416
- # trace_in( __method__, 76 )
2442
+ # trace_in( __method__, 77 )
2417
2443
 
2418
2444
 
2419
2445
  # - - - - main rule block - - - -
@@ -2427,7 +2453,7 @@ module SfpLang
2427
2453
 
2428
2454
  ensure
2429
2455
  # -> uncomment the next line to manually enable rule tracing
2430
- # trace_out( __method__, 76 )
2456
+ # trace_out( __method__, 77 )
2431
2457
 
2432
2458
  end
2433
2459
 
@@ -2439,8 +2465,8 @@ module SfpLang
2439
2465
  # but instead use the next_token method, which will
2440
2466
  # build and emit the actual next token
2441
2467
  def token!
2442
- # at line 1:8: ( T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | NULL | BOOLEAN | ID | NUMBER | COMMENT | MULTILINE_STRING | NL | WS | STRING )
2443
- alt_17 = 71
2468
+ # at line 1:8: ( T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | NULL | BOOLEAN | ID | NUMBER | COMMENT | MULTILINE_STRING | NL | WS | STRING )
2469
+ alt_17 = 72
2444
2470
  alt_17 = @dfa17.predict( @input )
2445
2471
  case alt_17
2446
2472
  when 1
@@ -2692,39 +2718,43 @@ module SfpLang
2692
2718
  t__79!
2693
2719
 
2694
2720
  when 63
2695
- # at line 1:382: NULL
2696
- null!
2721
+ # at line 1:382: T__80
2722
+ t__80!
2697
2723
 
2698
2724
  when 64
2699
- # at line 1:387: BOOLEAN
2700
- boolean!
2725
+ # at line 1:388: NULL
2726
+ null!
2701
2727
 
2702
2728
  when 65
2703
- # at line 1:395: ID
2704
- id!
2729
+ # at line 1:393: BOOLEAN
2730
+ boolean!
2705
2731
 
2706
2732
  when 66
2707
- # at line 1:398: NUMBER
2708
- number!
2733
+ # at line 1:401: ID
2734
+ id!
2709
2735
 
2710
2736
  when 67
2711
- # at line 1:405: COMMENT
2712
- comment!
2737
+ # at line 1:404: NUMBER
2738
+ number!
2713
2739
 
2714
2740
  when 68
2715
- # at line 1:413: MULTILINE_STRING
2716
- multiline_string!
2741
+ # at line 1:411: COMMENT
2742
+ comment!
2717
2743
 
2718
2744
  when 69
2719
- # at line 1:430: NL
2720
- nl!
2745
+ # at line 1:419: MULTILINE_STRING
2746
+ multiline_string!
2721
2747
 
2722
2748
  when 70
2723
- # at line 1:433: WS
2724
- ws!
2749
+ # at line 1:436: NL
2750
+ nl!
2725
2751
 
2726
2752
  when 71
2727
- # at line 1:436: STRING
2753
+ # at line 1:439: WS
2754
+ ws!
2755
+
2756
+ when 72
2757
+ # at line 1:442: STRING
2728
2758
  string!
2729
2759
 
2730
2760
  end
@@ -2734,102 +2764,105 @@ module SfpLang
2734
2764
  # - - - - - - - - - - DFA definitions - - - - - - - - - - -
2735
2765
  class DFA17 < ANTLR3::DFA
2736
2766
  EOT = unpack( 1, -1, 2, 35, 2, -1, 2, 35, 2, -1, 3, 35, 3, -1, 5,
2737
- 35, 2, -1, 4, 35, 6, -1, 1, 80, 1, 82, 1, 35, 6, -1,
2738
- 1, 85, 1, 90, 1, 91, 10, 35, 1, 105, 2, 35, 1, 108,
2739
- 4, 35, 1, 113, 6, 35, 1, 108, 6, 35, 7, -1, 2, 35, 1,
2740
- -1, 1, 129, 3, 35, 2, -1, 13, 35, 1, -1, 1, 35, 1, 108,
2741
- 1, -1, 4, 35, 1, -1, 6, 35, 1, 161, 1, 162, 1, 35, 1,
2742
- 164, 1, 165, 2, 35, 1, 108, 1, 35, 1, -1, 2, 35, 1,
2743
- 171, 4, 35, 1, 176, 7, 35, 1, 184, 1, 35, 1, 108, 5,
2744
- 35, 1, -1, 1, 191, 6, 35, 2, -1, 1, 164, 2, -1, 3, 35,
2745
- 1, 201, 1, 202, 1, -1, 1, 203, 1, 204, 2, 35, 1, -1,
2746
- 2, 35, 1, 209, 1, 35, 1, 211, 2, 35, 1, -1, 5, 35, 1,
2747
- 219, 1, -1, 5, 35, 1, 108, 3, 35, 4, -1, 4, 35, 1, -1,
2748
- 1, 35, 1, -1, 1, 234, 1, 235, 1, -1, 2, 35, 1, 238,
2749
- 1, 239, 1, -1, 1, 240, 1, 241, 1, 35, 1, 243, 1, 35,
2750
- 1, 245, 1, 35, 1, 247, 4, 35, 1, 252, 1, 253, 2, -1,
2751
- 2, 35, 4, -1, 1, 256, 1, -1, 1, 257, 3, -1, 1, 258,
2752
- 3, 35, 2, -1, 1, 262, 1, 35, 3, -1, 1, 264, 1, 266,
2753
- 1, 35, 1, -1, 1, 268, 1, -1, 1, 269, 1, -1, 1, 270,
2754
- 3, -1 )
2755
- EOF = unpack( 271, -1 )
2756
- MIN = unpack( 1, 9, 1, 102, 1, 111, 2, -1, 1, 108, 1, 102, 2, -1,
2757
- 1, 104, 1, 102, 1, 114, 3, -1, 1, 100, 1, 111, 1, 105,
2767
+ 35, 2, -1, 4, 35, 6, -1, 1, 81, 1, 83, 1, 35, 6, -1,
2768
+ 1, 86, 1, 91, 1, 92, 11, 35, 1, 107, 2, 35, 1, 110,
2769
+ 4, 35, 1, 115, 6, 35, 1, 110, 6, 35, 7, -1, 2, 35, 1,
2770
+ -1, 1, 131, 3, 35, 2, -1, 14, 35, 1, -1, 1, 35, 1, 110,
2771
+ 1, -1, 4, 35, 1, -1, 6, 35, 1, 164, 1, 165, 1, 35, 1,
2772
+ 167, 1, 168, 2, 35, 1, 110, 1, 35, 1, -1, 2, 35, 1,
2773
+ 174, 5, 35, 1, 180, 7, 35, 1, 188, 1, 35, 1, 110, 5,
2774
+ 35, 1, -1, 1, 195, 6, 35, 2, -1, 1, 167, 2, -1, 3, 35,
2775
+ 1, 205, 1, 206, 1, -1, 1, 207, 1, 208, 3, 35, 1, -1,
2776
+ 2, 35, 1, 214, 1, 35, 1, 216, 2, 35, 1, -1, 5, 35, 1,
2777
+ 224, 1, -1, 5, 35, 1, 110, 3, 35, 4, -1, 1, 233, 4,
2778
+ 35, 1, -1, 1, 35, 1, -1, 1, 240, 1, 241, 1, -1, 2, 35,
2779
+ 1, 244, 1, 245, 1, -1, 1, 246, 1, 247, 1, 35, 1, 249,
2780
+ 1, 35, 1, 251, 1, 35, 1, 253, 1, -1, 4, 35, 1, 258,
2781
+ 1, 259, 2, -1, 2, 35, 4, -1, 1, 262, 1, -1, 1, 263,
2782
+ 3, -1, 1, 264, 3, 35, 2, -1, 1, 268, 1, 35, 3, -1, 1,
2783
+ 270, 1, 272, 1, 35, 1, -1, 1, 274, 1, -1, 1, 275, 1,
2784
+ -1, 1, 276, 3, -1 )
2785
+ EOF = unpack( 277, -1 )
2786
+ MIN = unpack( 1, 9, 1, 102, 1, 99, 2, -1, 1, 108, 1, 102, 2, -1, 1,
2787
+ 104, 1, 102, 1, 114, 3, -1, 1, 100, 1, 111, 1, 105,
2758
2788
  1, 101, 1, 97, 2, -1, 1, 101, 1, 97, 1, 101, 1, 34,
2759
2789
  3, -1, 1, 48, 1, -1, 1, 42, 2, 61, 1, 101, 6, -1, 3,
2760
- 45, 1, 97, 2, 109, 1, 97, 1, 105, 1, 102, 1, 116, 1,
2761
- 101, 1, 116, 1, 117, 1, 45, 1, 101, 1, 102, 1, 45, 1,
2762
- 111, 1, 101, 1, 119, 1, 116, 1, 45, 1, 100, 1, 97, 1,
2763
- 116, 1, 102, 1, 114, 1, 108, 1, 45, 1, 119, 2, 108,
2764
- 1, 115, 1, 108, 1, 109, 7, -1, 1, 115, 1, 108, 1, -1,
2765
- 1, 45, 1, 101, 1, 111, 1, 101, 2, -1, 1, 116, 1, 101,
2766
- 1, 112, 1, 116, 1, 100, 1, 115, 1, 101, 1, 115, 1, 101,
2767
- 1, 104, 1, 110, 1, 97, 1, 101, 1, -1, 1, 114, 1, 45,
2768
- 1, -1, 1, 99, 2, 97, 1, 101, 1, -1, 1, 40, 1, 108, 1,
2769
- 104, 1, 111, 1, 97, 1, 115, 2, 45, 1, 108, 2, 45, 1,
2770
- 101, 1, 111, 1, 45, 1, 117, 1, -1, 2, 116, 1, 45, 1,
2771
- 102, 1, 101, 1, 116, 1, 111, 1, 45, 1, 105, 1, 116,
2772
- 1, 115, 1, 110, 1, 116, 1, 99, 1, 101, 1, 45, 1, 108,
2773
- 1, 45, 1, 97, 1, 101, 1, 108, 1, 121, 1, 114, 1, -1,
2774
- 1, 45, 1, 105, 1, 114, 1, 97, 1, 108, 1, 111, 1, 101,
2775
- 2, -1, 1, 45, 2, -1, 1, 116, 1, 118, 1, 100, 2, 45,
2776
- 1, -1, 2, 45, 1, 105, 1, 115, 1, -1, 1, 116, 1, 114,
2777
- 1, 45, 1, 100, 1, 45, 1, 116, 1, 114, 1, -1, 1, 40,
2778
- 1, 116, 1, 100, 1, 108, 1, 115, 1, 45, 1, -1, 1, 110,
2779
- 1, 101, 1, 99, 1, 108, 1, 109, 1, 45, 3, 101, 4, -1,
2780
- 1, 109, 2, 105, 1, 97, 1, -1, 1, 115, 1, -1, 2, 45,
2781
- 1, -1, 1, 111, 1, 117, 2, 45, 1, -1, 2, 45, 1, 104,
2782
- 1, 45, 1, 101, 1, 45, 1, 40, 1, 45, 1, 101, 1, 116,
2783
- 1, 111, 1, 105, 2, 45, 2, -1, 2, 114, 4, -1, 1, 45,
2784
- 1, -1, 1, 45, 3, -1, 1, 45, 1, 101, 2, 110, 2, -1, 1,
2785
- 45, 1, 101, 3, -1, 2, 45, 1, 116, 1, -1, 1, 45, 1, -1,
2786
- 1, 45, 1, -1, 1, 45, 3, -1 )
2790
+ 45, 1, 97, 1, 104, 2, 109, 1, 97, 1, 105, 1, 102, 1,
2791
+ 116, 1, 101, 1, 116, 1, 117, 1, 45, 1, 101, 1, 102,
2792
+ 1, 45, 1, 111, 1, 101, 1, 119, 1, 116, 1, 45, 1, 100,
2793
+ 1, 97, 1, 116, 1, 102, 1, 114, 1, 108, 1, 45, 1, 119,
2794
+ 2, 108, 1, 115, 1, 108, 1, 109, 7, -1, 1, 115, 1, 108,
2795
+ 1, -1, 1, 45, 1, 101, 1, 111, 1, 101, 2, -1, 1, 116,
2796
+ 2, 101, 1, 112, 1, 116, 1, 100, 1, 115, 1, 101, 1, 115,
2797
+ 1, 101, 1, 104, 1, 110, 1, 97, 1, 101, 1, -1, 1, 114,
2798
+ 1, 45, 1, -1, 1, 99, 2, 97, 1, 101, 1, -1, 1, 40, 1,
2799
+ 108, 1, 104, 1, 111, 1, 97, 1, 115, 2, 45, 1, 108, 2,
2800
+ 45, 1, 101, 1, 111, 1, 45, 1, 117, 1, -1, 2, 116, 1,
2801
+ 45, 1, 102, 1, 101, 1, 109, 1, 116, 1, 111, 1, 45, 1,
2802
+ 105, 1, 116, 1, 115, 1, 110, 1, 116, 1, 99, 1, 101,
2803
+ 1, 45, 1, 108, 1, 45, 1, 97, 1, 101, 1, 108, 1, 121,
2804
+ 1, 114, 1, -1, 1, 45, 1, 105, 1, 114, 1, 97, 1, 108,
2805
+ 1, 111, 1, 101, 2, -1, 1, 45, 2, -1, 1, 116, 1, 118,
2806
+ 1, 100, 2, 45, 1, -1, 2, 45, 1, 97, 1, 105, 1, 115,
2807
+ 1, -1, 1, 116, 1, 114, 1, 45, 1, 100, 1, 45, 1, 116,
2808
+ 1, 114, 1, -1, 1, 40, 1, 116, 1, 100, 1, 108, 1, 115,
2809
+ 1, 45, 1, -1, 1, 110, 1, 101, 1, 99, 1, 108, 1, 109,
2810
+ 1, 45, 3, 101, 4, -1, 1, 45, 1, 109, 2, 105, 1, 97,
2811
+ 1, -1, 1, 115, 1, -1, 2, 45, 1, -1, 1, 111, 1, 117,
2812
+ 2, 45, 1, -1, 2, 45, 1, 104, 1, 45, 1, 101, 1, 45, 1,
2813
+ 40, 1, 45, 1, -1, 1, 101, 1, 116, 1, 111, 1, 105, 2,
2814
+ 45, 2, -1, 2, 114, 4, -1, 1, 45, 1, -1, 1, 45, 3, -1,
2815
+ 1, 45, 1, 101, 2, 110, 2, -1, 1, 45, 1, 101, 3, -1,
2816
+ 2, 45, 1, 116, 1, -1, 1, 45, 1, -1, 1, 45, 1, -1, 1,
2817
+ 45, 3, -1 )
2787
2818
  MAX = unpack( 1, 125, 1, 115, 1, 116, 2, -1, 1, 111, 1, 120, 2, -1,
2788
2819
  3, 114, 3, -1, 1, 115, 1, 111, 1, 105, 1, 101, 1, 111,
2789
2820
  2, -1, 1, 117, 1, 97, 2, 101, 3, -1, 1, 61, 1, -1, 3,
2790
- 61, 1, 101, 6, -1, 3, 122, 1, 97, 1, 109, 1, 115, 1,
2791
- 97, 1, 116, 1, 102, 1, 116, 1, 101, 1, 116, 1, 117,
2792
- 1, 122, 1, 101, 1, 102, 1, 122, 1, 111, 1, 101, 1, 119,
2793
- 1, 116, 1, 122, 1, 100, 1, 97, 1, 116, 1, 102, 1, 114,
2794
- 1, 108, 1, 122, 1, 119, 2, 108, 1, 115, 1, 108, 1, 109,
2795
- 7, -1, 1, 115, 1, 108, 1, -1, 1, 122, 1, 101, 1, 116,
2796
- 1, 101, 2, -1, 1, 116, 1, 101, 1, 112, 1, 116, 2, 115,
2797
- 1, 101, 1, 115, 1, 101, 1, 104, 1, 110, 1, 97, 1, 101,
2798
- 1, -1, 1, 114, 1, 122, 1, -1, 1, 99, 2, 97, 1, 101,
2799
- 1, -1, 1, 40, 1, 108, 1, 104, 1, 111, 2, 115, 2, 122,
2800
- 1, 108, 2, 122, 1, 101, 1, 111, 1, 122, 1, 117, 1, -1,
2801
- 2, 116, 1, 122, 1, 102, 1, 101, 1, 116, 1, 111, 1, 122,
2802
- 1, 105, 1, 116, 1, 115, 1, 110, 1, 116, 1, 99, 1, 101,
2803
- 1, 122, 1, 108, 1, 122, 1, 97, 1, 101, 1, 108, 1, 121,
2804
- 1, 114, 1, -1, 1, 122, 1, 105, 1, 114, 1, 97, 1, 108,
2805
- 1, 111, 1, 101, 2, -1, 1, 122, 2, -1, 1, 116, 1, 118,
2806
- 1, 100, 2, 122, 1, -1, 2, 122, 1, 105, 1, 115, 1, -1,
2807
- 1, 116, 1, 114, 1, 122, 1, 100, 1, 122, 1, 116, 1, 114,
2808
- 1, -1, 1, 40, 1, 116, 1, 100, 1, 108, 1, 115, 1, 122,
2809
- 1, -1, 1, 110, 1, 101, 1, 99, 1, 108, 1, 109, 1, 122,
2810
- 3, 101, 4, -1, 1, 109, 2, 105, 1, 97, 1, -1, 1, 115,
2811
- 1, -1, 2, 122, 1, -1, 1, 111, 1, 117, 2, 122, 1, -1,
2812
- 2, 122, 1, 104, 1, 122, 1, 101, 1, 122, 1, 40, 1, 122,
2813
- 1, 101, 1, 116, 1, 111, 1, 105, 2, 122, 2, -1, 2, 114,
2814
- 4, -1, 1, 122, 1, -1, 1, 122, 3, -1, 1, 122, 1, 101,
2815
- 2, 110, 2, -1, 1, 122, 1, 101, 3, -1, 2, 122, 1, 116,
2816
- 1, -1, 1, 122, 1, -1, 1, 122, 1, -1, 1, 122, 3, -1 )
2817
- ACCEPT = unpack( 3, -1, 1, 3, 1, 4, 2, -1, 1, 9, 1, 10, 3, -1, 1,
2818
- 20, 1, 21, 1, 22, 5, -1, 1, 38, 1, 39, 4, -1, 1,
2819
- 51, 1, 54, 1, 55, 1, -1, 1, 57, 4, -1, 1, 65, 1,
2820
- 66, 1, 67, 1, 69, 1, 70, 1, 71, 35, -1, 1, 68, 1,
2821
- 56, 1, 58, 1, 60, 1, 59, 1, 62, 1, 61, 2, -1, 1,
2822
- 42, 4, -1, 1, 41, 1, 11, 13, -1, 1, 13, 2, -1, 1,
2823
- 64, 4, -1, 1, 34, 15, -1, 1, 8, 23, -1, 1, 49, 7,
2824
- -1, 1, 40, 1, 47, 1, -1, 1, 63, 1, 45, 5, -1, 1,
2825
- 44, 4, -1, 1, 15, 7, -1, 1, 12, 6, -1, 1, 26, 9,
2826
- -1, 1, 24, 1, 43, 1, 52, 1, 2, 4, -1, 1, 6, 1, -1,
2827
- 1, 36, 2, -1, 1, 46, 4, -1, 1, 31, 14, -1, 1, 25,
2828
- 1, 53, 2, -1, 1, 23, 1, 28, 1, 30, 1, 32, 1, -1,
2829
- 1, 35, 1, -1, 1, 48, 1, 50, 1, 1, 4, -1, 1, 7, 1,
2830
- 18, 2, -1, 1, 33, 1, 37, 1, 29, 3, -1, 1, 14, 1,
2831
- -1, 1, 5, 1, -1, 1, 17, 1, -1, 1, 19, 1, 16, 1, 27 )
2832
- SPECIAL = unpack( 271, -1 )
2821
+ 61, 1, 101, 6, -1, 3, 122, 1, 97, 1, 104, 1, 109, 1,
2822
+ 115, 1, 97, 1, 116, 1, 102, 1, 116, 1, 101, 1, 116,
2823
+ 1, 117, 1, 122, 1, 101, 1, 102, 1, 122, 1, 111, 1, 101,
2824
+ 1, 119, 1, 116, 1, 122, 1, 100, 1, 97, 1, 116, 1, 102,
2825
+ 1, 114, 1, 108, 1, 122, 1, 119, 2, 108, 1, 115, 1, 108,
2826
+ 1, 109, 7, -1, 1, 115, 1, 108, 1, -1, 1, 122, 1, 101,
2827
+ 1, 116, 1, 101, 2, -1, 1, 116, 2, 101, 1, 112, 1, 116,
2828
+ 2, 115, 1, 101, 1, 115, 1, 101, 1, 104, 1, 110, 1, 97,
2829
+ 1, 101, 1, -1, 1, 114, 1, 122, 1, -1, 1, 99, 2, 97,
2830
+ 1, 101, 1, -1, 1, 40, 1, 108, 1, 104, 1, 111, 2, 115,
2831
+ 2, 122, 1, 108, 2, 122, 1, 101, 1, 111, 1, 122, 1, 117,
2832
+ 1, -1, 2, 116, 1, 122, 1, 102, 1, 101, 1, 109, 1, 116,
2833
+ 1, 111, 1, 122, 1, 105, 1, 116, 1, 115, 1, 110, 1, 116,
2834
+ 1, 99, 1, 101, 1, 122, 1, 108, 1, 122, 1, 97, 1, 101,
2835
+ 1, 108, 1, 121, 1, 114, 1, -1, 1, 122, 1, 105, 1, 114,
2836
+ 1, 97, 1, 108, 1, 111, 1, 101, 2, -1, 1, 122, 2, -1,
2837
+ 1, 116, 1, 118, 1, 100, 2, 122, 1, -1, 2, 122, 1, 97,
2838
+ 1, 105, 1, 115, 1, -1, 1, 116, 1, 114, 1, 122, 1, 100,
2839
+ 1, 122, 1, 116, 1, 114, 1, -1, 1, 40, 1, 116, 1, 100,
2840
+ 1, 108, 1, 115, 1, 122, 1, -1, 1, 110, 1, 101, 1, 99,
2841
+ 1, 108, 1, 109, 1, 122, 3, 101, 4, -1, 1, 122, 1, 109,
2842
+ 2, 105, 1, 97, 1, -1, 1, 115, 1, -1, 2, 122, 1, -1,
2843
+ 1, 111, 1, 117, 2, 122, 1, -1, 2, 122, 1, 104, 1, 122,
2844
+ 1, 101, 1, 122, 1, 40, 1, 122, 1, -1, 1, 101, 1, 116,
2845
+ 1, 111, 1, 105, 2, 122, 2, -1, 2, 114, 4, -1, 1, 122,
2846
+ 1, -1, 1, 122, 3, -1, 1, 122, 1, 101, 2, 110, 2, -1,
2847
+ 1, 122, 1, 101, 3, -1, 2, 122, 1, 116, 1, -1, 1, 122,
2848
+ 1, -1, 1, 122, 1, -1, 1, 122, 3, -1 )
2849
+ ACCEPT = unpack( 3, -1, 1, 3, 1, 4, 2, -1, 1, 10, 1, 11, 3, -1, 1,
2850
+ 21, 1, 22, 1, 23, 5, -1, 1, 39, 1, 40, 4, -1, 1,
2851
+ 52, 1, 55, 1, 56, 1, -1, 1, 58, 4, -1, 1, 66, 1,
2852
+ 67, 1, 68, 1, 70, 1, 71, 1, 72, 36, -1, 1, 69, 1,
2853
+ 57, 1, 59, 1, 61, 1, 60, 1, 63, 1, 62, 2, -1, 1,
2854
+ 43, 4, -1, 1, 42, 1, 12, 14, -1, 1, 14, 2, -1, 1,
2855
+ 65, 4, -1, 1, 35, 15, -1, 1, 9, 24, -1, 1, 50, 7,
2856
+ -1, 1, 41, 1, 48, 1, -1, 1, 64, 1, 46, 5, -1, 1,
2857
+ 45, 5, -1, 1, 16, 7, -1, 1, 13, 6, -1, 1, 27, 9,
2858
+ -1, 1, 25, 1, 44, 1, 53, 1, 2, 5, -1, 1, 6, 1, -1,
2859
+ 1, 37, 2, -1, 1, 47, 4, -1, 1, 32, 8, -1, 1, 7, 6,
2860
+ -1, 1, 26, 1, 54, 2, -1, 1, 24, 1, 29, 1, 31, 1,
2861
+ 33, 1, -1, 1, 36, 1, -1, 1, 49, 1, 51, 1, 1, 4, -1,
2862
+ 1, 8, 1, 19, 2, -1, 1, 34, 1, 38, 1, 30, 3, -1, 1,
2863
+ 15, 1, -1, 1, 5, 1, -1, 1, 18, 1, -1, 1, 20, 1, 17,
2864
+ 1, 28 )
2865
+ SPECIAL = unpack( 277, -1 )
2833
2866
  TRANSITION = [
2834
2867
  unpack( 1, 39, 1, 38, 2, -1, 1, 38, 18, -1, 1, 39, 1, 27, 1, 40,
2835
2868
  1, 37, 4, -1, 1, 12, 1, 14, 1, 30, 1, 28, 1, 13, 1, 29,
@@ -2839,39 +2872,39 @@ module SfpLang
2839
2872
  1, 10, 1, 11, 1, 35, 1, 25, 1, 2, 1, 9, 2, 35, 1, 17, 1,
2840
2873
  35, 1, 34, 1, 35, 1, 3, 1, -1, 1, 4 ),
2841
2874
  unpack( 1, 43, 7, -1, 1, 41, 4, -1, 1, 42 ),
2842
- unpack( 1, 45, 4, -1, 1, 44 ),
2875
+ unpack( 1, 45, 11, -1, 1, 46, 4, -1, 1, 44 ),
2843
2876
  unpack( ),
2844
2877
  unpack( ),
2845
- unpack( 1, 47, 2, -1, 1, 46 ),
2846
- unpack( 1, 49, 2, -1, 1, 50, 14, -1, 1, 48 ),
2878
+ unpack( 1, 48, 2, -1, 1, 47 ),
2879
+ unpack( 1, 50, 2, -1, 1, 51, 14, -1, 1, 49 ),
2847
2880
  unpack( ),
2848
2881
  unpack( ),
2849
- unpack( 1, 51, 6, -1, 1, 52, 2, -1, 1, 53 ),
2850
- unpack( 1, 56, 7, -1, 1, 57, 1, -1, 1, 55, 1, -1, 1, 54 ),
2851
- unpack( 1, 58 ),
2882
+ unpack( 1, 52, 6, -1, 1, 53, 2, -1, 1, 54 ),
2883
+ unpack( 1, 57, 7, -1, 1, 58, 1, -1, 1, 56, 1, -1, 1, 55 ),
2884
+ unpack( 1, 59 ),
2852
2885
  unpack( ),
2853
2886
  unpack( ),
2854
2887
  unpack( ),
2855
- unpack( 1, 63, 1, -1, 1, 61, 5, -1, 1, 60, 5, -1, 1, 59, 1, 62 ),
2856
- unpack( 1, 64 ),
2888
+ unpack( 1, 64, 1, -1, 1, 62, 5, -1, 1, 61, 5, -1, 1, 60, 1, 63 ),
2857
2889
  unpack( 1, 65 ),
2858
2890
  unpack( 1, 66 ),
2859
- unpack( 1, 68, 13, -1, 1, 67 ),
2891
+ unpack( 1, 67 ),
2892
+ unpack( 1, 69, 13, -1, 1, 68 ),
2860
2893
  unpack( ),
2861
2894
  unpack( ),
2862
- unpack( 1, 70, 3, -1, 1, 72, 5, -1, 1, 69, 5, -1, 1, 71 ),
2863
- unpack( 1, 73 ),
2895
+ unpack( 1, 71, 3, -1, 1, 73, 5, -1, 1, 70, 5, -1, 1, 72 ),
2864
2896
  unpack( 1, 74 ),
2865
- unpack( 1, 76, 66, -1, 1, 75 ),
2897
+ unpack( 1, 75 ),
2898
+ unpack( 1, 77, 66, -1, 1, 76 ),
2866
2899
  unpack( ),
2867
2900
  unpack( ),
2868
2901
  unpack( ),
2869
- unpack( 10, 36, 3, -1, 1, 77 ),
2902
+ unpack( 10, 36, 3, -1, 1, 78 ),
2870
2903
  unpack( ),
2871
- unpack( 1, 37, 4, -1, 1, 37, 13, -1, 1, 78 ),
2872
- unpack( 1, 79 ),
2873
- unpack( 1, 81 ),
2874
- unpack( 1, 83 ),
2904
+ unpack( 1, 37, 4, -1, 1, 37, 13, -1, 1, 79 ),
2905
+ unpack( 1, 80 ),
2906
+ unpack( 1, 82 ),
2907
+ unpack( 1, 84 ),
2875
2908
  unpack( ),
2876
2909
  unpack( ),
2877
2910
  unpack( ),
@@ -2879,47 +2912,48 @@ module SfpLang
2879
2912
  unpack( ),
2880
2913
  unpack( ),
2881
2914
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
2882
- 2, 35, 1, 84, 23, 35 ),
2915
+ 2, 35, 1, 85, 23, 35 ),
2883
2916
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
2884
- 1, 86, 12, 35, 1, 88, 3, 35, 1, 89, 1, 87, 7, 35 ),
2917
+ 1, 87, 12, 35, 1, 89, 3, 35, 1, 90, 1, 88, 7, 35 ),
2885
2918
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
2886
2919
  26, 35 ),
2887
- unpack( 1, 92 ),
2888
2920
  unpack( 1, 93 ),
2889
- unpack( 1, 94, 1, 96, 4, -1, 1, 95 ),
2890
- unpack( 1, 97 ),
2891
- unpack( 1, 99, 10, -1, 1, 98 ),
2892
- unpack( 1, 100 ),
2893
- unpack( 1, 101 ),
2921
+ unpack( 1, 94 ),
2922
+ unpack( 1, 95 ),
2923
+ unpack( 1, 96, 1, 98, 4, -1, 1, 97 ),
2924
+ unpack( 1, 99 ),
2925
+ unpack( 1, 101, 10, -1, 1, 100 ),
2894
2926
  unpack( 1, 102 ),
2895
2927
  unpack( 1, 103 ),
2896
2928
  unpack( 1, 104 ),
2897
- unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
2898
- 26, 35 ),
2929
+ unpack( 1, 105 ),
2899
2930
  unpack( 1, 106 ),
2900
- unpack( 1, 107 ),
2901
2931
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
2902
2932
  26, 35 ),
2933
+ unpack( 1, 108 ),
2903
2934
  unpack( 1, 109 ),
2904
- unpack( 1, 110 ),
2935
+ unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
2936
+ 26, 35 ),
2905
2937
  unpack( 1, 111 ),
2906
2938
  unpack( 1, 112 ),
2939
+ unpack( 1, 113 ),
2940
+ unpack( 1, 114 ),
2907
2941
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
2908
2942
  26, 35 ),
2909
- unpack( 1, 114 ),
2910
- unpack( 1, 115 ),
2911
2943
  unpack( 1, 116 ),
2912
2944
  unpack( 1, 117 ),
2913
2945
  unpack( 1, 118 ),
2914
2946
  unpack( 1, 119 ),
2915
- unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
2916
- 19, 35, 1, 120, 6, 35 ),
2947
+ unpack( 1, 120 ),
2917
2948
  unpack( 1, 121 ),
2918
- unpack( 1, 122 ),
2949
+ unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
2950
+ 19, 35, 1, 122, 6, 35 ),
2919
2951
  unpack( 1, 123 ),
2920
2952
  unpack( 1, 124 ),
2921
2953
  unpack( 1, 125 ),
2922
2954
  unpack( 1, 126 ),
2955
+ unpack( 1, 127 ),
2956
+ unpack( 1, 128 ),
2923
2957
  unpack( ),
2924
2958
  unpack( ),
2925
2959
  unpack( ),
@@ -2927,105 +2961,107 @@ module SfpLang
2927
2961
  unpack( ),
2928
2962
  unpack( ),
2929
2963
  unpack( ),
2930
- unpack( 1, 127 ),
2931
- unpack( 1, 128 ),
2964
+ unpack( 1, 129 ),
2965
+ unpack( 1, 130 ),
2932
2966
  unpack( ),
2933
2967
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
2934
2968
  26, 35 ),
2935
- unpack( 1, 130 ),
2936
- unpack( 1, 131, 4, -1, 1, 132 ),
2937
- unpack( 1, 133 ),
2969
+ unpack( 1, 132 ),
2970
+ unpack( 1, 133, 4, -1, 1, 134 ),
2971
+ unpack( 1, 135 ),
2938
2972
  unpack( ),
2939
2973
  unpack( ),
2940
- unpack( 1, 134 ),
2941
- unpack( 1, 135 ),
2942
2974
  unpack( 1, 136 ),
2943
2975
  unpack( 1, 137 ),
2944
- unpack( 1, 138, 14, -1, 1, 139 ),
2976
+ unpack( 1, 138 ),
2977
+ unpack( 1, 139 ),
2945
2978
  unpack( 1, 140 ),
2946
- unpack( 1, 141 ),
2947
- unpack( 1, 142 ),
2979
+ unpack( 1, 141, 14, -1, 1, 142 ),
2948
2980
  unpack( 1, 143 ),
2949
2981
  unpack( 1, 144 ),
2950
2982
  unpack( 1, 145 ),
2951
2983
  unpack( 1, 146 ),
2952
2984
  unpack( 1, 147 ),
2953
- unpack( ),
2954
2985
  unpack( 1, 148 ),
2955
- unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
2956
- 26, 35 ),
2957
- unpack( ),
2958
2986
  unpack( 1, 149 ),
2959
2987
  unpack( 1, 150 ),
2988
+ unpack( ),
2960
2989
  unpack( 1, 151 ),
2961
- unpack( 1, 152 ),
2990
+ unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
2991
+ 26, 35 ),
2962
2992
  unpack( ),
2993
+ unpack( 1, 152 ),
2963
2994
  unpack( 1, 153 ),
2964
2995
  unpack( 1, 154 ),
2965
2996
  unpack( 1, 155 ),
2997
+ unpack( ),
2966
2998
  unpack( 1, 156 ),
2967
- unpack( 1, 158, 3, -1, 1, 157, 13, -1, 1, 159 ),
2968
- unpack( 1, 160 ),
2969
- unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
2970
- 26, 35 ),
2971
- unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
2972
- 26, 35 ),
2999
+ unpack( 1, 157 ),
3000
+ unpack( 1, 158 ),
3001
+ unpack( 1, 159 ),
3002
+ unpack( 1, 161, 3, -1, 1, 160, 13, -1, 1, 162 ),
2973
3003
  unpack( 1, 163 ),
2974
3004
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
2975
3005
  26, 35 ),
2976
3006
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
2977
3007
  26, 35 ),
2978
3008
  unpack( 1, 166 ),
2979
- unpack( 1, 167 ),
2980
3009
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
2981
3010
  26, 35 ),
2982
- unpack( 1, 168 ),
2983
- unpack( ),
3011
+ unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3012
+ 26, 35 ),
2984
3013
  unpack( 1, 169 ),
2985
3014
  unpack( 1, 170 ),
2986
3015
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
2987
3016
  26, 35 ),
3017
+ unpack( 1, 171 ),
3018
+ unpack( ),
2988
3019
  unpack( 1, 172 ),
2989
3020
  unpack( 1, 173 ),
2990
- unpack( 1, 174 ),
2991
- unpack( 1, 175 ),
2992
3021
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
2993
3022
  26, 35 ),
3023
+ unpack( 1, 175 ),
3024
+ unpack( 1, 176 ),
2994
3025
  unpack( 1, 177 ),
2995
3026
  unpack( 1, 178 ),
2996
3027
  unpack( 1, 179 ),
2997
- unpack( 1, 180 ),
3028
+ unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3029
+ 26, 35 ),
2998
3030
  unpack( 1, 181 ),
2999
3031
  unpack( 1, 182 ),
3000
3032
  unpack( 1, 183 ),
3001
- unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3002
- 26, 35 ),
3033
+ unpack( 1, 184 ),
3003
3034
  unpack( 1, 185 ),
3004
- unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3005
- 26, 35 ),
3006
3035
  unpack( 1, 186 ),
3007
3036
  unpack( 1, 187 ),
3008
- unpack( 1, 188 ),
3037
+ unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3038
+ 26, 35 ),
3009
3039
  unpack( 1, 189 ),
3010
- unpack( 1, 190 ),
3011
- unpack( ),
3012
3040
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3013
3041
  26, 35 ),
3042
+ unpack( 1, 190 ),
3043
+ unpack( 1, 191 ),
3014
3044
  unpack( 1, 192 ),
3015
3045
  unpack( 1, 193 ),
3016
3046
  unpack( 1, 194 ),
3017
- unpack( 1, 195 ),
3047
+ unpack( ),
3048
+ unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3049
+ 26, 35 ),
3018
3050
  unpack( 1, 196 ),
3019
3051
  unpack( 1, 197 ),
3052
+ unpack( 1, 198 ),
3053
+ unpack( 1, 199 ),
3054
+ unpack( 1, 200 ),
3055
+ unpack( 1, 201 ),
3020
3056
  unpack( ),
3021
3057
  unpack( ),
3022
3058
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3023
3059
  26, 35 ),
3024
3060
  unpack( ),
3025
3061
  unpack( ),
3026
- unpack( 1, 198 ),
3027
- unpack( 1, 199 ),
3028
- unpack( 1, 200 ),
3062
+ unpack( 1, 202 ),
3063
+ unpack( 1, 203 ),
3064
+ unpack( 1, 204 ),
3029
3065
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3030
3066
  26, 35 ),
3031
3067
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
@@ -3035,85 +3071,89 @@ module SfpLang
3035
3071
  26, 35 ),
3036
3072
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3037
3073
  26, 35 ),
3038
- unpack( 1, 205 ),
3039
- unpack( 1, 206 ),
3074
+ unpack( 1, 209 ),
3075
+ unpack( 1, 210 ),
3076
+ unpack( 1, 211 ),
3040
3077
  unpack( ),
3041
- unpack( 1, 207 ),
3042
- unpack( 1, 208 ),
3078
+ unpack( 1, 212 ),
3079
+ unpack( 1, 213 ),
3043
3080
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3044
3081
  26, 35 ),
3045
- unpack( 1, 210 ),
3082
+ unpack( 1, 215 ),
3046
3083
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3047
3084
  26, 35 ),
3048
- unpack( 1, 212 ),
3049
- unpack( 1, 213 ),
3050
- unpack( ),
3051
- unpack( 1, 214 ),
3052
- unpack( 1, 215 ),
3053
- unpack( 1, 216 ),
3054
3085
  unpack( 1, 217 ),
3055
3086
  unpack( 1, 218 ),
3056
- unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3057
- 26, 35 ),
3058
3087
  unpack( ),
3088
+ unpack( 1, 219 ),
3059
3089
  unpack( 1, 220 ),
3060
3090
  unpack( 1, 221 ),
3061
3091
  unpack( 1, 222 ),
3062
3092
  unpack( 1, 223 ),
3063
- unpack( 1, 224 ),
3064
3093
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3065
3094
  26, 35 ),
3095
+ unpack( ),
3066
3096
  unpack( 1, 225 ),
3067
3097
  unpack( 1, 226 ),
3068
3098
  unpack( 1, 227 ),
3069
- unpack( ),
3070
- unpack( ),
3071
- unpack( ),
3072
- unpack( ),
3073
3099
  unpack( 1, 228 ),
3074
3100
  unpack( 1, 229 ),
3101
+ unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3102
+ 26, 35 ),
3075
3103
  unpack( 1, 230 ),
3076
3104
  unpack( 1, 231 ),
3077
- unpack( ),
3078
3105
  unpack( 1, 232 ),
3079
3106
  unpack( ),
3080
- unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3081
- 18, 35, 1, 233, 7, 35 ),
3107
+ unpack( ),
3108
+ unpack( ),
3109
+ unpack( ),
3082
3110
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3083
3111
  26, 35 ),
3084
- unpack( ),
3112
+ unpack( 1, 234 ),
3113
+ unpack( 1, 235 ),
3085
3114
  unpack( 1, 236 ),
3086
3115
  unpack( 1, 237 ),
3116
+ unpack( ),
3117
+ unpack( 1, 238 ),
3118
+ unpack( ),
3087
3119
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3088
- 26, 35 ),
3120
+ 18, 35, 1, 239, 7, 35 ),
3089
3121
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3090
3122
  26, 35 ),
3091
3123
  unpack( ),
3124
+ unpack( 1, 242 ),
3125
+ unpack( 1, 243 ),
3092
3126
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3093
3127
  26, 35 ),
3094
3128
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3095
3129
  26, 35 ),
3096
- unpack( 1, 242 ),
3130
+ unpack( ),
3097
3131
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3098
3132
  26, 35 ),
3099
- unpack( 1, 244 ),
3100
3133
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3101
3134
  26, 35 ),
3102
- unpack( 1, 246 ),
3135
+ unpack( 1, 248 ),
3103
3136
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3104
3137
  26, 35 ),
3105
- unpack( 1, 248 ),
3106
- unpack( 1, 249 ),
3107
3138
  unpack( 1, 250 ),
3108
- unpack( 1, 251 ),
3109
3139
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3110
3140
  26, 35 ),
3141
+ unpack( 1, 252 ),
3111
3142
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3112
3143
  26, 35 ),
3113
3144
  unpack( ),
3114
- unpack( ),
3115
3145
  unpack( 1, 254 ),
3116
3146
  unpack( 1, 255 ),
3147
+ unpack( 1, 256 ),
3148
+ unpack( 1, 257 ),
3149
+ unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3150
+ 26, 35 ),
3151
+ unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3152
+ 26, 35 ),
3153
+ unpack( ),
3154
+ unpack( ),
3155
+ unpack( 1, 260 ),
3156
+ unpack( 1, 261 ),
3117
3157
  unpack( ),
3118
3158
  unpack( ),
3119
3159
  unpack( ),
@@ -3128,22 +3168,22 @@ module SfpLang
3128
3168
  unpack( ),
3129
3169
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3130
3170
  26, 35 ),
3131
- unpack( 1, 259 ),
3132
- unpack( 1, 260 ),
3133
- unpack( 1, 261 ),
3171
+ unpack( 1, 265 ),
3172
+ unpack( 1, 266 ),
3173
+ unpack( 1, 267 ),
3134
3174
  unpack( ),
3135
3175
  unpack( ),
3136
3176
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3137
3177
  26, 35 ),
3138
- unpack( 1, 263 ),
3178
+ unpack( 1, 269 ),
3139
3179
  unpack( ),
3140
3180
  unpack( ),
3141
3181
  unpack( ),
3142
3182
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3143
3183
  26, 35 ),
3144
3184
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3145
- 18, 35, 1, 265, 7, 35 ),
3146
- unpack( 1, 267 ),
3185
+ 18, 35, 1, 271, 7, 35 ),
3186
+ unpack( 1, 273 ),
3147
3187
  unpack( ),
3148
3188
  unpack( 1, 35, 2, -1, 10, 35, 7, -1, 26, 35, 4, -1, 1, 35, 1, -1,
3149
3189
  26, 35 ),
@@ -3169,7 +3209,7 @@ module SfpLang
3169
3209
 
3170
3210
  def description
3171
3211
  <<-'__dfa_description__'.strip!
3172
- 1:1: Tokens : ( T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | NULL | BOOLEAN | ID | NUMBER | COMMENT | MULTILINE_STRING | NL | WS | STRING );
3212
+ 1:1: Tokens : ( T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | NULL | BOOLEAN | ID | NUMBER | COMMENT | MULTILINE_STRING | NL | WS | STRING );
3173
3213
  __dfa_description__
3174
3214
  end
3175
3215
  end