sfp 0.3.4 → 0.3.5

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.
@@ -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-07-15 00:24:26
8
+ # Generated at: 2013-07-18 06:07:23
9
9
  #
10
10
 
11
11
  # ~~~> start load path setup
@@ -5543,11 +5543,7 @@ module SfpLang
5543
5543
 
5544
5544
  # --> action
5545
5545
 
5546
- @now[__ID249__.text] = { '_self' => __ID249__.text,
5547
- '_context' => 'constraint',
5548
- '_type' => 'and',
5549
- '_parent' => @now
5550
- }
5546
+ @now[__ID249__.text] = self.create_constraint(__ID249__.text, 'and')
5551
5547
  @now = @now[__ID249__.text]
5552
5548
 
5553
5549
  # <-- action
@@ -5556,7 +5552,7 @@ module SfpLang
5556
5552
  tree_for_char_literal251 = @adaptor.create_with_payload( char_literal251 )
5557
5553
  @adaptor.add_child( root_0, tree_for_char_literal251 )
5558
5554
 
5559
- # at line 532:7: ( NL )*
5555
+ # at line 528:7: ( NL )*
5560
5556
  while true # decision 102
5561
5557
  alt_102 = 2
5562
5558
  look_102_0 = @input.peek( 1 )
@@ -5567,7 +5563,7 @@ module SfpLang
5567
5563
  end
5568
5564
  case alt_102
5569
5565
  when 1
5570
- # at line 532:7: NL
5566
+ # at line 528:7: NL
5571
5567
  __NL252__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_1489 )
5572
5568
 
5573
5569
  tree_for_NL252 = @adaptor.create_with_payload( __NL252__ )
@@ -5587,7 +5583,7 @@ module SfpLang
5587
5583
  tree_for_char_literal254 = @adaptor.create_with_payload( char_literal254 )
5588
5584
  @adaptor.add_child( root_0, tree_for_char_literal254 )
5589
5585
 
5590
- # at file 532:31: ( NL )+
5586
+ # at file 528:31: ( NL )+
5591
5587
  match_count_103 = 0
5592
5588
  while true
5593
5589
  alt_103 = 2
@@ -5599,7 +5595,7 @@ module SfpLang
5599
5595
  end
5600
5596
  case alt_103
5601
5597
  when 1
5602
- # at line 532:31: NL
5598
+ # at line 528:31: NL
5603
5599
  __NL255__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_1496 )
5604
5600
 
5605
5601
  tree_for_NL255 = @adaptor.create_with_payload( __NL255__ )
@@ -5646,7 +5642,7 @@ module SfpLang
5646
5642
  # parser rule constraint_body
5647
5643
  #
5648
5644
  # (in SfpLang.g)
5649
- # 536:1: constraint_body : ( ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+ )* ;
5645
+ # 532:1: constraint_body : ( ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+ )* ;
5650
5646
  #
5651
5647
  def constraint_body
5652
5648
  # -> uncomment the next line to manually enable rule tracing
@@ -5669,8 +5665,8 @@ module SfpLang
5669
5665
  root_0 = @adaptor.create_flat_list
5670
5666
 
5671
5667
 
5672
- # at line 537:4: ( ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+ )*
5673
- # at line 537:4: ( ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+ )*
5668
+ # at line 533:4: ( ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+ )*
5669
+ # at line 533:4: ( ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+ )*
5674
5670
  while true # decision 106
5675
5671
  alt_106 = 2
5676
5672
  look_106_0 = @input.peek( 1 )
@@ -5681,13 +5677,13 @@ module SfpLang
5681
5677
  end
5682
5678
  case alt_106
5683
5679
  when 1
5684
- # at line 538:4: ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+
5685
- # at line 538:4: ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification )
5680
+ # at line 534:4: ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+
5681
+ # at line 534:4: ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification )
5686
5682
  alt_104 = 4
5687
5683
  alt_104 = @dfa104.predict( @input )
5688
5684
  case alt_104
5689
5685
  when 1
5690
- # at line 538:6: constraint_statement
5686
+ # at line 534:6: constraint_statement
5691
5687
  @state.following.push( TOKENS_FOLLOWING_constraint_statement_IN_constraint_body_1519 )
5692
5688
  constraint_statement256 = constraint_statement
5693
5689
  @state.following.pop
@@ -5699,28 +5695,28 @@ module SfpLang
5699
5695
  # <-- action
5700
5696
 
5701
5697
  when 2
5702
- # at line 542:6: constraint_namespace
5698
+ # at line 538:6: constraint_namespace
5703
5699
  @state.following.push( TOKENS_FOLLOWING_constraint_namespace_IN_constraint_body_1532 )
5704
5700
  constraint_namespace257 = constraint_namespace
5705
5701
  @state.following.pop
5706
5702
  @adaptor.add_child( root_0, constraint_namespace257.tree )
5707
5703
 
5708
5704
  when 3
5709
- # at line 543:6: constraint_iterator
5705
+ # at line 539:6: constraint_iterator
5710
5706
  @state.following.push( TOKENS_FOLLOWING_constraint_iterator_IN_constraint_body_1539 )
5711
5707
  constraint_iterator258 = constraint_iterator
5712
5708
  @state.following.pop
5713
5709
  @adaptor.add_child( root_0, constraint_iterator258.tree )
5714
5710
 
5715
5711
  when 4
5716
- # at line 544:6: constraint_class_quantification
5712
+ # at line 540:6: constraint_class_quantification
5717
5713
  @state.following.push( TOKENS_FOLLOWING_constraint_class_quantification_IN_constraint_body_1546 )
5718
5714
  constraint_class_quantification259 = constraint_class_quantification
5719
5715
  @state.following.pop
5720
5716
  @adaptor.add_child( root_0, constraint_class_quantification259.tree )
5721
5717
 
5722
5718
  end
5723
- # at file 546:3: ( NL )+
5719
+ # at file 542:3: ( NL )+
5724
5720
  match_count_105 = 0
5725
5721
  while true
5726
5722
  alt_105 = 2
@@ -5732,7 +5728,7 @@ module SfpLang
5732
5728
  end
5733
5729
  case alt_105
5734
5730
  when 1
5735
- # at line 546:3: NL
5731
+ # at line 542:3: NL
5736
5732
  __NL260__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_body_1555 )
5737
5733
 
5738
5734
  tree_for_NL260 = @adaptor.create_with_payload( __NL260__ )
@@ -5781,7 +5777,7 @@ module SfpLang
5781
5777
  # parser rule constraint_namespace
5782
5778
  #
5783
5779
  # (in SfpLang.g)
5784
- # 549:1: constraint_namespace : path ( NL )* '{' ( NL )* ( constraint_statement ( NL )+ )* '}' ;
5780
+ # 545:1: constraint_namespace : path ( NL )* '{' ( NL )* ( constraint_statement ( NL )+ )* '}' ;
5785
5781
  #
5786
5782
  def constraint_namespace
5787
5783
  # -> uncomment the next line to manually enable rule tracing
@@ -5810,12 +5806,12 @@ module SfpLang
5810
5806
  root_0 = @adaptor.create_flat_list
5811
5807
 
5812
5808
 
5813
- # at line 550:4: path ( NL )* '{' ( NL )* ( constraint_statement ( NL )+ )* '}'
5809
+ # at line 546:4: path ( NL )* '{' ( NL )* ( constraint_statement ( NL )+ )* '}'
5814
5810
  @state.following.push( TOKENS_FOLLOWING_path_IN_constraint_namespace_1569 )
5815
5811
  path261 = path
5816
5812
  @state.following.pop
5817
5813
  @adaptor.add_child( root_0, path261.tree )
5818
- # at line 550:9: ( NL )*
5814
+ # at line 546:9: ( NL )*
5819
5815
  while true # decision 107
5820
5816
  alt_107 = 2
5821
5817
  look_107_0 = @input.peek( 1 )
@@ -5826,7 +5822,7 @@ module SfpLang
5826
5822
  end
5827
5823
  case alt_107
5828
5824
  when 1
5829
- # at line 550:9: NL
5825
+ # at line 546:9: NL
5830
5826
  __NL262__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_namespace_1571 )
5831
5827
 
5832
5828
  tree_for_NL262 = @adaptor.create_with_payload( __NL262__ )
@@ -5842,7 +5838,7 @@ module SfpLang
5842
5838
  tree_for_char_literal263 = @adaptor.create_with_payload( char_literal263 )
5843
5839
  @adaptor.add_child( root_0, tree_for_char_literal263 )
5844
5840
 
5845
- # at line 550:17: ( NL )*
5841
+ # at line 546:17: ( NL )*
5846
5842
  while true # decision 108
5847
5843
  alt_108 = 2
5848
5844
  look_108_0 = @input.peek( 1 )
@@ -5853,7 +5849,7 @@ module SfpLang
5853
5849
  end
5854
5850
  case alt_108
5855
5851
  when 1
5856
- # at line 550:17: NL
5852
+ # at line 546:17: NL
5857
5853
  __NL264__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_namespace_1576 )
5858
5854
 
5859
5855
  tree_for_NL264 = @adaptor.create_with_payload( __NL264__ )
@@ -5864,7 +5860,7 @@ module SfpLang
5864
5860
  break # out of loop for decision 108
5865
5861
  end
5866
5862
  end # loop for decision 108
5867
- # at line 550:21: ( constraint_statement ( NL )+ )*
5863
+ # at line 546:21: ( constraint_statement ( NL )+ )*
5868
5864
  while true # decision 110
5869
5865
  alt_110 = 2
5870
5866
  look_110_0 = @input.peek( 1 )
@@ -5875,7 +5871,7 @@ module SfpLang
5875
5871
  end
5876
5872
  case alt_110
5877
5873
  when 1
5878
- # at line 550:22: constraint_statement ( NL )+
5874
+ # at line 546:22: constraint_statement ( NL )+
5879
5875
  @state.following.push( TOKENS_FOLLOWING_constraint_statement_IN_constraint_namespace_1580 )
5880
5876
  constraint_statement265 = constraint_statement
5881
5877
  @state.following.pop
@@ -5886,7 +5882,7 @@ module SfpLang
5886
5882
  @now[key] = ( constraint_statement265.nil? ? nil : constraint_statement265.val )
5887
5883
 
5888
5884
  # <-- action
5889
- # at file 555:3: ( NL )+
5885
+ # at file 551:3: ( NL )+
5890
5886
  match_count_109 = 0
5891
5887
  while true
5892
5888
  alt_109 = 2
@@ -5898,7 +5894,7 @@ module SfpLang
5898
5894
  end
5899
5895
  case alt_109
5900
5896
  when 1
5901
- # at line 555:3: NL
5897
+ # at line 551:3: NL
5902
5898
  __NL266__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_namespace_1588 )
5903
5899
 
5904
5900
  tree_for_NL266 = @adaptor.create_with_payload( __NL266__ )
@@ -5952,7 +5948,7 @@ module SfpLang
5952
5948
  # parser rule constraint_iterator
5953
5949
  #
5954
5950
  # (in SfpLang.g)
5955
- # 558:1: constraint_iterator : 'foreach' '(' path 'as' ID ')' ( NL )* '{' ( NL )+ ( constraint_statement ( NL )+ )* '}' ;
5951
+ # 554:1: constraint_iterator : 'foreach' '(' path 'as' ID ')' ( NL )* '{' ( NL )+ ( constraint_statement ( NL )+ )* '}' ;
5956
5952
  #
5957
5953
  def constraint_iterator
5958
5954
  # -> uncomment the next line to manually enable rule tracing
@@ -5991,7 +5987,7 @@ module SfpLang
5991
5987
  root_0 = @adaptor.create_flat_list
5992
5988
 
5993
5989
 
5994
- # at line 559:4: 'foreach' '(' path 'as' ID ')' ( NL )* '{' ( NL )+ ( constraint_statement ( NL )+ )* '}'
5990
+ # at line 555:4: 'foreach' '(' path 'as' ID ')' ( NL )* '{' ( NL )+ ( constraint_statement ( NL )+ )* '}'
5995
5991
  string_literal268 = match( T__54, TOKENS_FOLLOWING_T__54_IN_constraint_iterator_1604 )
5996
5992
 
5997
5993
  tree_for_string_literal268 = @adaptor.create_with_payload( string_literal268 )
@@ -6021,7 +6017,7 @@ module SfpLang
6021
6017
  tree_for_char_literal273 = @adaptor.create_with_payload( char_literal273 )
6022
6018
  @adaptor.add_child( root_0, tree_for_char_literal273 )
6023
6019
 
6024
- # at line 559:35: ( NL )*
6020
+ # at line 555:35: ( NL )*
6025
6021
  while true # decision 111
6026
6022
  alt_111 = 2
6027
6023
  look_111_0 = @input.peek( 1 )
@@ -6032,7 +6028,7 @@ module SfpLang
6032
6028
  end
6033
6029
  case alt_111
6034
6030
  when 1
6035
- # at line 559:35: NL
6031
+ # at line 555:35: NL
6036
6032
  __NL274__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_iterator_1616 )
6037
6033
 
6038
6034
  tree_for_NL274 = @adaptor.create_with_payload( __NL274__ )
@@ -6048,7 +6044,7 @@ module SfpLang
6048
6044
  tree_for_char_literal275 = @adaptor.create_with_payload( char_literal275 )
6049
6045
  @adaptor.add_child( root_0, tree_for_char_literal275 )
6050
6046
 
6051
- # at file 559:43: ( NL )+
6047
+ # at file 555:43: ( NL )+
6052
6048
  match_count_112 = 0
6053
6049
  while true
6054
6050
  alt_112 = 2
@@ -6060,7 +6056,7 @@ module SfpLang
6060
6056
  end
6061
6057
  case alt_112
6062
6058
  when 1
6063
- # at line 559:43: NL
6059
+ # at line 555:43: NL
6064
6060
  __NL276__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_iterator_1621 )
6065
6061
 
6066
6062
  tree_for_NL276 = @adaptor.create_with_payload( __NL276__ )
@@ -6080,25 +6076,17 @@ module SfpLang
6080
6076
  # --> action
6081
6077
 
6082
6078
  id = self.next_id.to_s
6083
- @now[id] = { '_parent' => @now,
6084
- '_context' => 'constraint',
6085
- '_type' => 'iterator',
6086
- '_self' => id,
6087
- '_value' => '$.' + ( path270 && @input.to_s( path270.start, path270.stop ) ),
6088
- '_variable' => __ID272__.text
6089
- }
6079
+ @now[id] = self.create_constraint(id, 'iterator')
6080
+ @now[id]['_value'] = '$.' + ( path270 && @input.to_s( path270.start, path270.stop ) )
6081
+ @now[id]['_variable'] = __ID272__.text
6090
6082
  @now = @now[id]
6091
6083
 
6092
6084
  id = '_template'
6093
- @now[id] = { '_parent' => @now,
6094
- '_context' => 'constraint',
6095
- '_type' => 'and',
6096
- '_self' => id,
6097
- }
6085
+ @now[id] = self.create_constraint(id, 'and')
6098
6086
  @now = @now[id]
6099
6087
 
6100
6088
  # <-- action
6101
- # at line 579:3: ( constraint_statement ( NL )+ )*
6089
+ # at line 567:3: ( constraint_statement ( NL )+ )*
6102
6090
  while true # decision 114
6103
6091
  alt_114 = 2
6104
6092
  look_114_0 = @input.peek( 1 )
@@ -6109,7 +6097,7 @@ module SfpLang
6109
6097
  end
6110
6098
  case alt_114
6111
6099
  when 1
6112
- # at line 579:4: constraint_statement ( NL )+
6100
+ # at line 567:4: constraint_statement ( NL )+
6113
6101
  @state.following.push( TOKENS_FOLLOWING_constraint_statement_IN_constraint_iterator_1631 )
6114
6102
  constraint_statement277 = constraint_statement
6115
6103
  @state.following.pop
@@ -6119,7 +6107,7 @@ module SfpLang
6119
6107
  @now[( constraint_statement277.nil? ? nil : constraint_statement277.key )] = ( constraint_statement277.nil? ? nil : constraint_statement277.val )
6120
6108
 
6121
6109
  # <-- action
6122
- # at file 583:3: ( NL )+
6110
+ # at file 571:3: ( NL )+
6123
6111
  match_count_113 = 0
6124
6112
  while true
6125
6113
  alt_113 = 2
@@ -6131,7 +6119,7 @@ module SfpLang
6131
6119
  end
6132
6120
  case alt_113
6133
6121
  when 1
6134
- # at line 583:3: NL
6122
+ # at line 571:3: NL
6135
6123
  __NL278__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_iterator_1639 )
6136
6124
 
6137
6125
  tree_for_NL278 = @adaptor.create_with_payload( __NL278__ )
@@ -6191,7 +6179,7 @@ module SfpLang
6191
6179
  # parser rule quantification_keyword
6192
6180
  #
6193
6181
  # (in SfpLang.g)
6194
- # 591:1: quantification_keyword : ( 'forall' | 'exist' | 'forsome' );
6182
+ # 579:1: quantification_keyword : ( 'forall' | 'exist' | 'forsome' );
6195
6183
  #
6196
6184
  def quantification_keyword
6197
6185
  # -> uncomment the next line to manually enable rule tracing
@@ -6249,7 +6237,7 @@ module SfpLang
6249
6237
  # parser rule constraint_class_quantification
6250
6238
  #
6251
6239
  # (in SfpLang.g)
6252
- # 597:1: constraint_class_quantification : quantification_keyword '(' path 'as' ID ')' ( ( binary_comp | '=' ) NUMBER )? ( NL )* '{' ( NL )+ ( constraint_statement ( NL )+ | constraint_different ( NL )+ | constraint_iterator ( NL )+ )* '}' ;
6240
+ # 585:1: constraint_class_quantification : quantification_keyword '(' path 'as' ID ')' ( ( binary_comp | '=' ) NUMBER )? ( NL )* '{' ( NL )+ ( constraint_statement ( NL )+ | constraint_different ( NL )+ | constraint_iterator ( NL )+ )* '}' ;
6253
6241
  #
6254
6242
  def constraint_class_quantification
6255
6243
  # -> uncomment the next line to manually enable rule tracing
@@ -6298,7 +6286,7 @@ module SfpLang
6298
6286
  root_0 = @adaptor.create_flat_list
6299
6287
 
6300
6288
 
6301
- # at line 598:4: quantification_keyword '(' path 'as' ID ')' ( ( binary_comp | '=' ) NUMBER )? ( NL )* '{' ( NL )+ ( constraint_statement ( NL )+ | constraint_different ( NL )+ | constraint_iterator ( NL )+ )* '}'
6289
+ # at line 586:4: quantification_keyword '(' path 'as' ID ')' ( ( binary_comp | '=' ) NUMBER )? ( NL )* '{' ( NL )+ ( constraint_statement ( NL )+ | constraint_different ( NL )+ | constraint_iterator ( NL )+ )* '}'
6302
6290
  @state.following.push( TOKENS_FOLLOWING_quantification_keyword_IN_constraint_class_quantification_1682 )
6303
6291
  quantification_keyword281 = quantification_keyword
6304
6292
  @state.following.pop
@@ -6340,15 +6328,11 @@ module SfpLang
6340
6328
  @now = @now[id]
6341
6329
 
6342
6330
  id = '_template'
6343
- @now[id] = { '_parent' => @now,
6344
- '_context' => 'constraint',
6345
- '_type' => 'and',
6346
- '_self' => id
6347
- }
6331
+ @now[id] = self.create_constraint(id, 'and')
6348
6332
  @now = @now[id]
6349
6333
 
6350
6334
  # <-- action
6351
- # at line 618:3: ( ( binary_comp | '=' ) NUMBER )?
6335
+ # at line 602:3: ( ( binary_comp | '=' ) NUMBER )?
6352
6336
  alt_116 = 2
6353
6337
  look_116_0 = @input.peek( 1 )
6354
6338
 
@@ -6357,8 +6341,8 @@ module SfpLang
6357
6341
  end
6358
6342
  case alt_116
6359
6343
  when 1
6360
- # at line 618:5: ( binary_comp | '=' ) NUMBER
6361
- # at line 618:5: ( binary_comp | '=' )
6344
+ # at line 602:5: ( binary_comp | '=' ) NUMBER
6345
+ # at line 602:5: ( binary_comp | '=' )
6362
6346
  alt_115 = 2
6363
6347
  look_115_0 = @input.peek( 1 )
6364
6348
 
@@ -6371,7 +6355,7 @@ module SfpLang
6371
6355
  end
6372
6356
  case alt_115
6373
6357
  when 1
6374
- # at line 618:7: binary_comp
6358
+ # at line 602:7: binary_comp
6375
6359
  @state.following.push( TOKENS_FOLLOWING_binary_comp_IN_constraint_class_quantification_1704 )
6376
6360
  binary_comp287 = binary_comp
6377
6361
  @state.following.pop
@@ -6381,7 +6365,7 @@ module SfpLang
6381
6365
  # <-- action
6382
6366
 
6383
6367
  when 2
6384
- # at line 620:6: '='
6368
+ # at line 604:6: '='
6385
6369
  char_literal288 = match( T__59, TOKENS_FOLLOWING_T__59_IN_constraint_class_quantification_1717 )
6386
6370
 
6387
6371
  tree_for_char_literal288 = @adaptor.create_with_payload( char_literal288 )
@@ -6402,7 +6386,7 @@ module SfpLang
6402
6386
  # <-- action
6403
6387
 
6404
6388
  end
6405
- # at line 626:3: ( NL )*
6389
+ # at line 610:3: ( NL )*
6406
6390
  while true # decision 117
6407
6391
  alt_117 = 2
6408
6392
  look_117_0 = @input.peek( 1 )
@@ -6413,7 +6397,7 @@ module SfpLang
6413
6397
  end
6414
6398
  case alt_117
6415
6399
  when 1
6416
- # at line 626:3: NL
6400
+ # at line 610:3: NL
6417
6401
  __NL290__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_class_quantification_1747 )
6418
6402
 
6419
6403
  tree_for_NL290 = @adaptor.create_with_payload( __NL290__ )
@@ -6429,7 +6413,7 @@ module SfpLang
6429
6413
  tree_for_char_literal291 = @adaptor.create_with_payload( char_literal291 )
6430
6414
  @adaptor.add_child( root_0, tree_for_char_literal291 )
6431
6415
 
6432
- # at file 626:11: ( NL )+
6416
+ # at file 610:11: ( NL )+
6433
6417
  match_count_118 = 0
6434
6418
  while true
6435
6419
  alt_118 = 2
@@ -6441,7 +6425,7 @@ module SfpLang
6441
6425
  end
6442
6426
  case alt_118
6443
6427
  when 1
6444
- # at line 626:11: NL
6428
+ # at line 610:11: NL
6445
6429
  __NL292__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_class_quantification_1752 )
6446
6430
 
6447
6431
  tree_for_NL292 = @adaptor.create_with_payload( __NL292__ )
@@ -6458,7 +6442,7 @@ module SfpLang
6458
6442
  match_count_118 += 1
6459
6443
  end
6460
6444
 
6461
- # at line 627:3: ( constraint_statement ( NL )+ | constraint_different ( NL )+ | constraint_iterator ( NL )+ )*
6445
+ # at line 611:3: ( constraint_statement ( NL )+ | constraint_different ( NL )+ | constraint_iterator ( NL )+ )*
6462
6446
  while true # decision 122
6463
6447
  alt_122 = 4
6464
6448
  case look_122 = @input.peek( 1 )
@@ -6468,7 +6452,7 @@ module SfpLang
6468
6452
  end
6469
6453
  case alt_122
6470
6454
  when 1
6471
- # at line 627:5: constraint_statement ( NL )+
6455
+ # at line 611:5: constraint_statement ( NL )+
6472
6456
  @state.following.push( TOKENS_FOLLOWING_constraint_statement_IN_constraint_class_quantification_1759 )
6473
6457
  constraint_statement293 = constraint_statement
6474
6458
  @state.following.pop
@@ -6476,7 +6460,7 @@ module SfpLang
6476
6460
  # --> action
6477
6461
  @now[( constraint_statement293.nil? ? nil : constraint_statement293.key )] = ( constraint_statement293.nil? ? nil : constraint_statement293.val )
6478
6462
  # <-- action
6479
- # at file 629:4: ( NL )+
6463
+ # at file 613:4: ( NL )+
6480
6464
  match_count_119 = 0
6481
6465
  while true
6482
6466
  alt_119 = 2
@@ -6488,7 +6472,7 @@ module SfpLang
6488
6472
  end
6489
6473
  case alt_119
6490
6474
  when 1
6491
- # at line 629:4: NL
6475
+ # at line 613:4: NL
6492
6476
  __NL294__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_class_quantification_1769 )
6493
6477
 
6494
6478
  tree_for_NL294 = @adaptor.create_with_payload( __NL294__ )
@@ -6507,12 +6491,12 @@ module SfpLang
6507
6491
 
6508
6492
 
6509
6493
  when 2
6510
- # at line 630:5: constraint_different ( NL )+
6494
+ # at line 614:5: constraint_different ( NL )+
6511
6495
  @state.following.push( TOKENS_FOLLOWING_constraint_different_IN_constraint_class_quantification_1776 )
6512
6496
  constraint_different295 = constraint_different
6513
6497
  @state.following.pop
6514
6498
  @adaptor.add_child( root_0, constraint_different295.tree )
6515
- # at file 630:26: ( NL )+
6499
+ # at file 614:26: ( NL )+
6516
6500
  match_count_120 = 0
6517
6501
  while true
6518
6502
  alt_120 = 2
@@ -6524,7 +6508,7 @@ module SfpLang
6524
6508
  end
6525
6509
  case alt_120
6526
6510
  when 1
6527
- # at line 630:26: NL
6511
+ # at line 614:26: NL
6528
6512
  __NL296__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_class_quantification_1778 )
6529
6513
 
6530
6514
  tree_for_NL296 = @adaptor.create_with_payload( __NL296__ )
@@ -6543,12 +6527,12 @@ module SfpLang
6543
6527
 
6544
6528
 
6545
6529
  when 3
6546
- # at line 631:5: constraint_iterator ( NL )+
6530
+ # at line 615:5: constraint_iterator ( NL )+
6547
6531
  @state.following.push( TOKENS_FOLLOWING_constraint_iterator_IN_constraint_class_quantification_1785 )
6548
6532
  constraint_iterator297 = constraint_iterator
6549
6533
  @state.following.pop
6550
6534
  @adaptor.add_child( root_0, constraint_iterator297.tree )
6551
- # at file 631:25: ( NL )+
6535
+ # at file 615:25: ( NL )+
6552
6536
  match_count_121 = 0
6553
6537
  while true
6554
6538
  alt_121 = 2
@@ -6560,7 +6544,7 @@ module SfpLang
6560
6544
  end
6561
6545
  case alt_121
6562
6546
  when 1
6563
- # at line 631:25: NL
6547
+ # at line 615:25: NL
6564
6548
  __NL298__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_class_quantification_1787 )
6565
6549
 
6566
6550
  tree_for_NL298 = @adaptor.create_with_payload( __NL298__ )
@@ -6620,7 +6604,7 @@ module SfpLang
6620
6604
  # parser rule constraint_different
6621
6605
  #
6622
6606
  # (in SfpLang.g)
6623
- # 637:1: constraint_different : ':different' '(' path ')' ;
6607
+ # 621:1: constraint_different : ':different' '(' path ')' ;
6624
6608
  #
6625
6609
  def constraint_different
6626
6610
  # -> uncomment the next line to manually enable rule tracing
@@ -6644,7 +6628,7 @@ module SfpLang
6644
6628
  root_0 = @adaptor.create_flat_list
6645
6629
 
6646
6630
 
6647
- # at line 638:4: ':different' '(' path ')'
6631
+ # at line 622:4: ':different' '(' path ')'
6648
6632
  string_literal300 = match( T__60, TOKENS_FOLLOWING_T__60_IN_constraint_different_1814 )
6649
6633
 
6650
6634
  tree_for_string_literal300 = @adaptor.create_with_payload( string_literal300 )
@@ -6702,7 +6686,7 @@ module SfpLang
6702
6686
  # parser rule constraint_statement
6703
6687
  #
6704
6688
  # (in SfpLang.g)
6705
- # 650:1: constraint_statement returns [key, val] : ( reference | 'not' reference | reference equals_op value | reference equals_op NULL | reference not_equals_op value | reference not_equals_op NULL | conditional_constraint | reference ( 'is' )? 'in' set_value | reference ( 'isnot' | 'isnt' | 'not' ) 'in' set_value | reference 'has' value | reference binary_comp comp_value | total_constraint );
6689
+ # 634:1: constraint_statement returns [key, val] : ( reference | 'not' reference | reference equals_op value | reference equals_op NULL | reference not_equals_op value | reference not_equals_op NULL | conditional_constraint | reference ( 'is' )? 'in' set_value | reference ( 'isnot' | 'isnt' | 'not' ) 'in' set_value | reference 'has' value | reference binary_comp comp_value | total_constraint );
6706
6690
  #
6707
6691
  def constraint_statement
6708
6692
  # -> uncomment the next line to manually enable rule tracing
@@ -6755,7 +6739,7 @@ module SfpLang
6755
6739
  tree_for_string_literal329 = nil
6756
6740
 
6757
6741
  begin
6758
- # at line 651:2: ( reference | 'not' reference | reference equals_op value | reference equals_op NULL | reference not_equals_op value | reference not_equals_op NULL | conditional_constraint | reference ( 'is' )? 'in' set_value | reference ( 'isnot' | 'isnt' | 'not' ) 'in' set_value | reference 'has' value | reference binary_comp comp_value | total_constraint )
6742
+ # at line 635:2: ( reference | 'not' reference | reference equals_op value | reference equals_op NULL | reference not_equals_op value | reference not_equals_op NULL | conditional_constraint | reference ( 'is' )? 'in' set_value | reference ( 'isnot' | 'isnt' | 'not' ) 'in' set_value | reference 'has' value | reference binary_comp comp_value | total_constraint )
6759
6743
  alt_124 = 12
6760
6744
  alt_124 = @dfa124.predict( @input )
6761
6745
  case alt_124
@@ -6763,7 +6747,7 @@ module SfpLang
6763
6747
  root_0 = @adaptor.create_flat_list
6764
6748
 
6765
6749
 
6766
- # at line 651:4: reference
6750
+ # at line 635:4: reference
6767
6751
  @state.following.push( TOKENS_FOLLOWING_reference_IN_constraint_statement_1839 )
6768
6752
  reference304 = reference
6769
6753
  @state.following.pop
@@ -6779,7 +6763,7 @@ module SfpLang
6779
6763
  root_0 = @adaptor.create_flat_list
6780
6764
 
6781
6765
 
6782
- # at line 656:4: 'not' reference
6766
+ # at line 640:4: 'not' reference
6783
6767
  string_literal305 = match( T__61, TOKENS_FOLLOWING_T__61_IN_constraint_statement_1848 )
6784
6768
 
6785
6769
  tree_for_string_literal305 = @adaptor.create_with_payload( string_literal305 )
@@ -6800,7 +6784,7 @@ module SfpLang
6800
6784
  root_0 = @adaptor.create_flat_list
6801
6785
 
6802
6786
 
6803
- # at line 661:4: reference equals_op value
6787
+ # at line 645:4: reference equals_op value
6804
6788
  @state.following.push( TOKENS_FOLLOWING_reference_IN_constraint_statement_1859 )
6805
6789
  reference307 = reference
6806
6790
  @state.following.pop
@@ -6824,7 +6808,7 @@ module SfpLang
6824
6808
  root_0 = @adaptor.create_flat_list
6825
6809
 
6826
6810
 
6827
- # at line 666:4: reference equals_op NULL
6811
+ # at line 650:4: reference equals_op NULL
6828
6812
  @state.following.push( TOKENS_FOLLOWING_reference_IN_constraint_statement_1872 )
6829
6813
  reference310 = reference
6830
6814
  @state.following.pop
@@ -6849,7 +6833,7 @@ module SfpLang
6849
6833
  root_0 = @adaptor.create_flat_list
6850
6834
 
6851
6835
 
6852
- # at line 671:4: reference not_equals_op value
6836
+ # at line 655:4: reference not_equals_op value
6853
6837
  @state.following.push( TOKENS_FOLLOWING_reference_IN_constraint_statement_1885 )
6854
6838
  reference313 = reference
6855
6839
  @state.following.pop
@@ -6873,7 +6857,7 @@ module SfpLang
6873
6857
  root_0 = @adaptor.create_flat_list
6874
6858
 
6875
6859
 
6876
- # at line 676:4: reference not_equals_op NULL
6860
+ # at line 660:4: reference not_equals_op NULL
6877
6861
  @state.following.push( TOKENS_FOLLOWING_reference_IN_constraint_statement_1898 )
6878
6862
  reference316 = reference
6879
6863
  @state.following.pop
@@ -6898,7 +6882,7 @@ module SfpLang
6898
6882
  root_0 = @adaptor.create_flat_list
6899
6883
 
6900
6884
 
6901
- # at line 681:4: conditional_constraint
6885
+ # at line 665:4: conditional_constraint
6902
6886
  @state.following.push( TOKENS_FOLLOWING_conditional_constraint_IN_constraint_statement_1911 )
6903
6887
  conditional_constraint319 = conditional_constraint
6904
6888
  @state.following.pop
@@ -6914,12 +6898,12 @@ module SfpLang
6914
6898
  root_0 = @adaptor.create_flat_list
6915
6899
 
6916
6900
 
6917
- # at line 686:4: reference ( 'is' )? 'in' set_value
6901
+ # at line 670:4: reference ( 'is' )? 'in' set_value
6918
6902
  @state.following.push( TOKENS_FOLLOWING_reference_IN_constraint_statement_1920 )
6919
6903
  reference320 = reference
6920
6904
  @state.following.pop
6921
6905
  @adaptor.add_child( root_0, reference320.tree )
6922
- # at line 686:14: ( 'is' )?
6906
+ # at line 670:14: ( 'is' )?
6923
6907
  alt_123 = 2
6924
6908
  look_123_0 = @input.peek( 1 )
6925
6909
 
@@ -6928,7 +6912,7 @@ module SfpLang
6928
6912
  end
6929
6913
  case alt_123
6930
6914
  when 1
6931
- # at line 686:14: 'is'
6915
+ # at line 670:14: 'is'
6932
6916
  string_literal321 = match( T__62, TOKENS_FOLLOWING_T__62_IN_constraint_statement_1922 )
6933
6917
 
6934
6918
  tree_for_string_literal321 = @adaptor.create_with_payload( string_literal321 )
@@ -6963,7 +6947,7 @@ module SfpLang
6963
6947
  root_0 = @adaptor.create_flat_list
6964
6948
 
6965
6949
 
6966
- # at line 698:4: reference ( 'isnot' | 'isnt' | 'not' ) 'in' set_value
6950
+ # at line 682:4: reference ( 'isnot' | 'isnt' | 'not' ) 'in' set_value
6967
6951
  @state.following.push( TOKENS_FOLLOWING_reference_IN_constraint_statement_1936 )
6968
6952
  reference324 = reference
6969
6953
  @state.following.pop
@@ -7009,7 +6993,7 @@ module SfpLang
7009
6993
  root_0 = @adaptor.create_flat_list
7010
6994
 
7011
6995
 
7012
- # at line 713:4: reference 'has' value
6996
+ # at line 697:4: reference 'has' value
7013
6997
  @state.following.push( TOKENS_FOLLOWING_reference_IN_constraint_statement_1957 )
7014
6998
  reference328 = reference
7015
6999
  @state.following.pop
@@ -7038,7 +7022,7 @@ module SfpLang
7038
7022
  root_0 = @adaptor.create_flat_list
7039
7023
 
7040
7024
 
7041
- # at line 722:4: reference binary_comp comp_value
7025
+ # at line 706:4: reference binary_comp comp_value
7042
7026
  @state.following.push( TOKENS_FOLLOWING_reference_IN_constraint_statement_1970 )
7043
7027
  reference331 = reference
7044
7028
  @state.following.pop
@@ -7062,7 +7046,7 @@ module SfpLang
7062
7046
  root_0 = @adaptor.create_flat_list
7063
7047
 
7064
7048
 
7065
- # at line 727:4: total_constraint
7049
+ # at line 711:4: total_constraint
7066
7050
  @state.following.push( TOKENS_FOLLOWING_total_constraint_IN_constraint_statement_1983 )
7067
7051
  total_constraint334 = total_constraint
7068
7052
  @state.following.pop
@@ -7095,7 +7079,7 @@ module SfpLang
7095
7079
  # parser rule total_constraint
7096
7080
  #
7097
7081
  # (in SfpLang.g)
7098
- # 730:1: total_constraint : 'total(' total_statement ')' binary_comp NUMBER ;
7082
+ # 714:1: total_constraint : 'total(' total_statement ')' binary_comp NUMBER ;
7099
7083
  #
7100
7084
  def total_constraint
7101
7085
  # -> uncomment the next line to manually enable rule tracing
@@ -7120,7 +7104,7 @@ module SfpLang
7120
7104
  root_0 = @adaptor.create_flat_list
7121
7105
 
7122
7106
 
7123
- # at line 731:4: 'total(' total_statement ')' binary_comp NUMBER
7107
+ # at line 715:4: 'total(' total_statement ')' binary_comp NUMBER
7124
7108
  string_literal335 = match( T__67, TOKENS_FOLLOWING_T__67_IN_total_constraint_1994 )
7125
7109
 
7126
7110
  tree_for_string_literal335 = @adaptor.create_with_payload( string_literal335 )
@@ -7171,7 +7155,7 @@ module SfpLang
7171
7155
  # parser rule total_statement
7172
7156
  #
7173
7157
  # (in SfpLang.g)
7174
- # 734:1: total_statement : reference equals_op value ;
7158
+ # 718:1: total_statement : reference equals_op value ;
7175
7159
  #
7176
7160
  def total_statement
7177
7161
  # -> uncomment the next line to manually enable rule tracing
@@ -7191,7 +7175,7 @@ module SfpLang
7191
7175
  root_0 = @adaptor.create_flat_list
7192
7176
 
7193
7177
 
7194
- # at line 735:4: reference equals_op value
7178
+ # at line 719:4: reference equals_op value
7195
7179
  @state.following.push( TOKENS_FOLLOWING_reference_IN_total_statement_2013 )
7196
7180
  reference340 = reference
7197
7181
  @state.following.pop
@@ -7231,7 +7215,7 @@ module SfpLang
7231
7215
  # parser rule comp_value
7232
7216
  #
7233
7217
  # (in SfpLang.g)
7234
- # 738:1: comp_value returns [val] : ( NUMBER | reference );
7218
+ # 722:1: comp_value returns [val] : ( NUMBER | reference );
7235
7219
  #
7236
7220
  def comp_value
7237
7221
  # -> uncomment the next line to manually enable rule tracing
@@ -7248,7 +7232,7 @@ module SfpLang
7248
7232
  tree_for_NUMBER343 = nil
7249
7233
 
7250
7234
  begin
7251
- # at line 739:2: ( NUMBER | reference )
7235
+ # at line 723:2: ( NUMBER | reference )
7252
7236
  alt_125 = 2
7253
7237
  look_125_0 = @input.peek( 1 )
7254
7238
 
@@ -7264,7 +7248,7 @@ module SfpLang
7264
7248
  root_0 = @adaptor.create_flat_list
7265
7249
 
7266
7250
 
7267
- # at line 739:4: NUMBER
7251
+ # at line 723:4: NUMBER
7268
7252
  __NUMBER343__ = match( NUMBER, TOKENS_FOLLOWING_NUMBER_IN_comp_value_2032 )
7269
7253
 
7270
7254
  tree_for_NUMBER343 = @adaptor.create_with_payload( __NUMBER343__ )
@@ -7278,7 +7262,7 @@ module SfpLang
7278
7262
  root_0 = @adaptor.create_flat_list
7279
7263
 
7280
7264
 
7281
- # at line 741:4: reference
7265
+ # at line 725:4: reference
7282
7266
  @state.following.push( TOKENS_FOLLOWING_reference_IN_comp_value_2041 )
7283
7267
  reference344 = reference
7284
7268
  @state.following.pop
@@ -7314,7 +7298,7 @@ module SfpLang
7314
7298
  # parser rule conditional_constraint
7315
7299
  #
7316
7300
  # (in SfpLang.g)
7317
- # 745:1: conditional_constraint returns [key, val] : 'if' conditional_constraint_if_part conditional_constraint_then_part ;
7301
+ # 729:1: conditional_constraint returns [key, val] : 'if' conditional_constraint_if_part conditional_constraint_then_part ;
7318
7302
  #
7319
7303
  def conditional_constraint
7320
7304
  # -> uncomment the next line to manually enable rule tracing
@@ -7335,7 +7319,7 @@ module SfpLang
7335
7319
  root_0 = @adaptor.create_flat_list
7336
7320
 
7337
7321
 
7338
- # at line 746:4: 'if' conditional_constraint_if_part conditional_constraint_then_part
7322
+ # at line 730:4: 'if' conditional_constraint_if_part conditional_constraint_then_part
7339
7323
  string_literal345 = match( T__32, TOKENS_FOLLOWING_T__32_IN_conditional_constraint_2060 )
7340
7324
 
7341
7325
  tree_for_string_literal345 = @adaptor.create_with_payload( string_literal345 )
@@ -7344,10 +7328,7 @@ module SfpLang
7344
7328
  # --> action
7345
7329
 
7346
7330
  return_value.key = id = self.next_id.to_s
7347
- @now[id] = { '_parent' => @now,
7348
- '_context' => 'constraint',
7349
- '_type' => 'or'
7350
- }
7331
+ @now[id] = self.create_constraint(id, 'imply')
7351
7332
  @now = @now[id]
7352
7333
 
7353
7334
  # <-- action
@@ -7389,7 +7370,7 @@ module SfpLang
7389
7370
  # parser rule conditional_constraint_if_part
7390
7371
  #
7391
7372
  # (in SfpLang.g)
7392
- # 760:1: conditional_constraint_if_part : ( constraint_statement ( NL )* | '{' ( NL )+ constraint_body '}' ( NL )* );
7373
+ # 741:1: conditional_constraint_if_part : ( constraint_statement ( NL )* | '{' ( NL )+ constraint_body '}' ( NL )* );
7393
7374
  #
7394
7375
  def conditional_constraint_if_part
7395
7376
  # -> uncomment the next line to manually enable rule tracing
@@ -7415,7 +7396,7 @@ module SfpLang
7415
7396
  tree_for_NL354 = nil
7416
7397
 
7417
7398
  begin
7418
- # at line 761:2: ( constraint_statement ( NL )* | '{' ( NL )+ constraint_body '}' ( NL )* )
7399
+ # at line 742:2: ( constraint_statement ( NL )* | '{' ( NL )+ constraint_body '}' ( NL )* )
7419
7400
  alt_129 = 2
7420
7401
  look_129_0 = @input.peek( 1 )
7421
7402
 
@@ -7431,12 +7412,12 @@ module SfpLang
7431
7412
  root_0 = @adaptor.create_flat_list
7432
7413
 
7433
7414
 
7434
- # at line 761:4: constraint_statement ( NL )*
7415
+ # at line 742:4: constraint_statement ( NL )*
7435
7416
  @state.following.push( TOKENS_FOLLOWING_constraint_statement_IN_conditional_constraint_if_part_2087 )
7436
7417
  constraint_statement348 = constraint_statement
7437
7418
  @state.following.pop
7438
7419
  @adaptor.add_child( root_0, constraint_statement348.tree )
7439
- # at line 761:25: ( NL )*
7420
+ # at line 742:25: ( NL )*
7440
7421
  while true # decision 126
7441
7422
  alt_126 = 2
7442
7423
  look_126_0 = @input.peek( 1 )
@@ -7447,7 +7428,7 @@ module SfpLang
7447
7428
  end
7448
7429
  case alt_126
7449
7430
  when 1
7450
- # at line 761:25: NL
7431
+ # at line 742:25: NL
7451
7432
  __NL349__ = match( NL, TOKENS_FOLLOWING_NL_IN_conditional_constraint_if_part_2089 )
7452
7433
 
7453
7434
  tree_for_NL349 = @adaptor.create_with_payload( __NL349__ )
@@ -7461,10 +7442,8 @@ module SfpLang
7461
7442
  # --> action
7462
7443
 
7463
7444
  id = self.next_id
7464
- @now[id] = { '_parent' => @now,
7465
- '_context' => 'constraint',
7466
- '_type' => 'not'
7467
- }
7445
+ @now[id] = self.create_constraint(id, 'and')
7446
+ @now[id]['_subtype'] = 'premise'
7468
7447
  @now[id][( constraint_statement348.nil? ? nil : constraint_statement348.key )] = ( constraint_statement348.nil? ? nil : constraint_statement348.val )
7469
7448
 
7470
7449
  # <-- action
@@ -7473,7 +7452,7 @@ module SfpLang
7473
7452
  root_0 = @adaptor.create_flat_list
7474
7453
 
7475
7454
 
7476
- # at line 770:4: '{' ( NL )+ constraint_body '}' ( NL )*
7455
+ # at line 749:4: '{' ( NL )+ constraint_body '}' ( NL )*
7477
7456
  char_literal350 = match( T__20, TOKENS_FOLLOWING_T__20_IN_conditional_constraint_if_part_2099 )
7478
7457
 
7479
7458
  tree_for_char_literal350 = @adaptor.create_with_payload( char_literal350 )
@@ -7482,11 +7461,12 @@ module SfpLang
7482
7461
  # --> action
7483
7462
 
7484
7463
  id = self.next_id
7485
- @now[id] = self.create_constraint(id, 'not')
7464
+ @now[id] = self.create_constraint(id, 'and')
7465
+ @now[id]['_subtype'] = 'premise'
7486
7466
  @now = @now[id]
7487
7467
 
7488
7468
  # <-- action
7489
- # at file 776:3: ( NL )+
7469
+ # at file 756:3: ( NL )+
7490
7470
  match_count_127 = 0
7491
7471
  while true
7492
7472
  alt_127 = 2
@@ -7498,7 +7478,7 @@ module SfpLang
7498
7478
  end
7499
7479
  case alt_127
7500
7480
  when 1
7501
- # at line 776:3: NL
7481
+ # at line 756:3: NL
7502
7482
  __NL351__ = match( NL, TOKENS_FOLLOWING_NL_IN_conditional_constraint_if_part_2107 )
7503
7483
 
7504
7484
  tree_for_NL351 = @adaptor.create_with_payload( __NL351__ )
@@ -7524,7 +7504,7 @@ module SfpLang
7524
7504
  tree_for_char_literal353 = @adaptor.create_with_payload( char_literal353 )
7525
7505
  @adaptor.add_child( root_0, tree_for_char_literal353 )
7526
7506
 
7527
- # at line 777:7: ( NL )*
7507
+ # at line 757:7: ( NL )*
7528
7508
  while true # decision 128
7529
7509
  alt_128 = 2
7530
7510
  look_128_0 = @input.peek( 1 )
@@ -7535,7 +7515,7 @@ module SfpLang
7535
7515
  end
7536
7516
  case alt_128
7537
7517
  when 1
7538
- # at line 777:7: NL
7518
+ # at line 757:7: NL
7539
7519
  __NL354__ = match( NL, TOKENS_FOLLOWING_NL_IN_conditional_constraint_if_part_2116 )
7540
7520
 
7541
7521
  tree_for_NL354 = @adaptor.create_with_payload( __NL354__ )
@@ -7577,7 +7557,7 @@ module SfpLang
7577
7557
  # parser rule conditional_constraint_then_part
7578
7558
  #
7579
7559
  # (in SfpLang.g)
7580
- # 781:1: conditional_constraint_then_part : ( 'then' constraint_statement | 'then' '{' ( NL )+ constraint_body '}' );
7560
+ # 761:1: conditional_constraint_then_part : ( 'then' constraint_statement | 'then' '{' ( NL )+ constraint_body '}' );
7581
7561
  #
7582
7562
  def conditional_constraint_then_part
7583
7563
  # -> uncomment the next line to manually enable rule tracing
@@ -7603,7 +7583,7 @@ module SfpLang
7603
7583
  tree_for_char_literal361 = nil
7604
7584
 
7605
7585
  begin
7606
- # at line 782:2: ( 'then' constraint_statement | 'then' '{' ( NL )+ constraint_body '}' )
7586
+ # at line 762:2: ( 'then' constraint_statement | 'then' '{' ( NL )+ constraint_body '}' )
7607
7587
  alt_131 = 2
7608
7588
  look_131_0 = @input.peek( 1 )
7609
7589
 
@@ -7625,7 +7605,7 @@ module SfpLang
7625
7605
  root_0 = @adaptor.create_flat_list
7626
7606
 
7627
7607
 
7628
- # at line 782:4: 'then' constraint_statement
7608
+ # at line 762:4: 'then' constraint_statement
7629
7609
  string_literal355 = match( T__33, TOKENS_FOLLOWING_T__33_IN_conditional_constraint_then_part_2132 )
7630
7610
 
7631
7611
  tree_for_string_literal355 = @adaptor.create_with_payload( string_literal355 )
@@ -7638,10 +7618,8 @@ module SfpLang
7638
7618
  # --> action
7639
7619
 
7640
7620
  id = self.next_id
7641
- @now[id] = { '_parent' => @now,
7642
- '_context' => 'constraint',
7643
- '_type' => 'and'
7644
- }
7621
+ @now[id] = self.create_constraint(id, 'and')
7622
+ @now[id]['_subtype'] = 'conclusion'
7645
7623
  @now[id][( constraint_statement356.nil? ? nil : constraint_statement356.key )] = ( constraint_statement356.nil? ? nil : constraint_statement356.val )
7646
7624
 
7647
7625
  # <-- action
@@ -7650,7 +7628,7 @@ module SfpLang
7650
7628
  root_0 = @adaptor.create_flat_list
7651
7629
 
7652
7630
 
7653
- # at line 791:4: 'then' '{' ( NL )+ constraint_body '}'
7631
+ # at line 769:4: 'then' '{' ( NL )+ constraint_body '}'
7654
7632
  string_literal357 = match( T__33, TOKENS_FOLLOWING_T__33_IN_conditional_constraint_then_part_2143 )
7655
7633
 
7656
7634
  tree_for_string_literal357 = @adaptor.create_with_payload( string_literal357 )
@@ -7659,10 +7637,8 @@ module SfpLang
7659
7637
  # --> action
7660
7638
 
7661
7639
  id = self.next_id
7662
- @now[id] = { '_parent' => @now,
7663
- '_context' => 'constraint',
7664
- '_type' => 'and'
7665
- }
7640
+ @now[id] = self.create_constraint(id, 'and')
7641
+ @now[id]['_subtype'] = 'conclusion'
7666
7642
  @now = @now[id]
7667
7643
 
7668
7644
  # <-- action
@@ -7671,7 +7647,7 @@ module SfpLang
7671
7647
  tree_for_char_literal358 = @adaptor.create_with_payload( char_literal358 )
7672
7648
  @adaptor.add_child( root_0, tree_for_char_literal358 )
7673
7649
 
7674
- # at file 800:7: ( NL )+
7650
+ # at file 776:7: ( NL )+
7675
7651
  match_count_130 = 0
7676
7652
  while true
7677
7653
  alt_130 = 2
@@ -7683,7 +7659,7 @@ module SfpLang
7683
7659
  end
7684
7660
  case alt_130
7685
7661
  when 1
7686
- # at line 800:7: NL
7662
+ # at line 776:7: NL
7687
7663
  __NL359__ = match( NL, TOKENS_FOLLOWING_NL_IN_conditional_constraint_then_part_2153 )
7688
7664
 
7689
7665
  tree_for_NL359 = @adaptor.create_with_payload( __NL359__ )
@@ -7740,7 +7716,7 @@ module SfpLang
7740
7716
  # parser rule effect_body
7741
7717
  #
7742
7718
  # (in SfpLang.g)
7743
- # 804:1: effect_body : ( ( mutation | mutation_iterator ) ( NL )+ )* ;
7719
+ # 780:1: effect_body : ( ( mutation | mutation_iterator ) ( NL )+ )* ;
7744
7720
  #
7745
7721
  def effect_body
7746
7722
  # -> uncomment the next line to manually enable rule tracing
@@ -7761,8 +7737,8 @@ module SfpLang
7761
7737
  root_0 = @adaptor.create_flat_list
7762
7738
 
7763
7739
 
7764
- # at line 805:4: ( ( mutation | mutation_iterator ) ( NL )+ )*
7765
- # at line 805:4: ( ( mutation | mutation_iterator ) ( NL )+ )*
7740
+ # at line 781:4: ( ( mutation | mutation_iterator ) ( NL )+ )*
7741
+ # at line 781:4: ( ( mutation | mutation_iterator ) ( NL )+ )*
7766
7742
  while true # decision 134
7767
7743
  alt_134 = 2
7768
7744
  look_134_0 = @input.peek( 1 )
@@ -7773,8 +7749,8 @@ module SfpLang
7773
7749
  end
7774
7750
  case alt_134
7775
7751
  when 1
7776
- # at line 806:4: ( mutation | mutation_iterator ) ( NL )+
7777
- # at line 806:4: ( mutation | mutation_iterator )
7752
+ # at line 782:4: ( mutation | mutation_iterator ) ( NL )+
7753
+ # at line 782:4: ( mutation | mutation_iterator )
7778
7754
  alt_132 = 2
7779
7755
  look_132_0 = @input.peek( 1 )
7780
7756
 
@@ -7787,7 +7763,7 @@ module SfpLang
7787
7763
  end
7788
7764
  case alt_132
7789
7765
  when 1
7790
- # at line 806:6: mutation
7766
+ # at line 782:6: mutation
7791
7767
  @state.following.push( TOKENS_FOLLOWING_mutation_IN_effect_body_2180 )
7792
7768
  mutation362 = mutation
7793
7769
  @state.following.pop
@@ -7797,14 +7773,14 @@ module SfpLang
7797
7773
  # <-- action
7798
7774
 
7799
7775
  when 2
7800
- # at line 808:6: mutation_iterator
7776
+ # at line 784:6: mutation_iterator
7801
7777
  @state.following.push( TOKENS_FOLLOWING_mutation_iterator_IN_effect_body_2193 )
7802
7778
  mutation_iterator363 = mutation_iterator
7803
7779
  @state.following.pop
7804
7780
  @adaptor.add_child( root_0, mutation_iterator363.tree )
7805
7781
 
7806
7782
  end
7807
- # at file 810:3: ( NL )+
7783
+ # at file 786:3: ( NL )+
7808
7784
  match_count_133 = 0
7809
7785
  while true
7810
7786
  alt_133 = 2
@@ -7816,7 +7792,7 @@ module SfpLang
7816
7792
  end
7817
7793
  case alt_133
7818
7794
  when 1
7819
- # at line 810:3: NL
7795
+ # at line 786:3: NL
7820
7796
  __NL364__ = match( NL, TOKENS_FOLLOWING_NL_IN_effect_body_2202 )
7821
7797
 
7822
7798
  tree_for_NL364 = @adaptor.create_with_payload( __NL364__ )
@@ -7865,7 +7841,7 @@ module SfpLang
7865
7841
  # parser rule mutation_iterator
7866
7842
  #
7867
7843
  # (in SfpLang.g)
7868
- # 813:1: mutation_iterator : 'foreach' path 'as' ID ( NL )* '{' ( NL )+ ( mutation ( NL )+ )* '}' ;
7844
+ # 789:1: mutation_iterator : 'foreach' path 'as' ID ( NL )* '{' ( NL )+ ( mutation ( NL )+ )* '}' ;
7869
7845
  #
7870
7846
  def mutation_iterator
7871
7847
  # -> uncomment the next line to manually enable rule tracing
@@ -7900,7 +7876,7 @@ module SfpLang
7900
7876
  root_0 = @adaptor.create_flat_list
7901
7877
 
7902
7878
 
7903
- # at line 814:4: 'foreach' path 'as' ID ( NL )* '{' ( NL )+ ( mutation ( NL )+ )* '}'
7879
+ # at line 790:4: 'foreach' path 'as' ID ( NL )* '{' ( NL )+ ( mutation ( NL )+ )* '}'
7904
7880
  string_literal365 = match( T__54, TOKENS_FOLLOWING_T__54_IN_mutation_iterator_2217 )
7905
7881
 
7906
7882
  tree_for_string_literal365 = @adaptor.create_with_payload( string_literal365 )
@@ -7920,7 +7896,7 @@ module SfpLang
7920
7896
  tree_for_ID368 = @adaptor.create_with_payload( __ID368__ )
7921
7897
  @adaptor.add_child( root_0, tree_for_ID368 )
7922
7898
 
7923
- # at line 814:27: ( NL )*
7899
+ # at line 790:27: ( NL )*
7924
7900
  while true # decision 135
7925
7901
  alt_135 = 2
7926
7902
  look_135_0 = @input.peek( 1 )
@@ -7931,7 +7907,7 @@ module SfpLang
7931
7907
  end
7932
7908
  case alt_135
7933
7909
  when 1
7934
- # at line 814:27: NL
7910
+ # at line 790:27: NL
7935
7911
  __NL369__ = match( NL, TOKENS_FOLLOWING_NL_IN_mutation_iterator_2225 )
7936
7912
 
7937
7913
  tree_for_NL369 = @adaptor.create_with_payload( __NL369__ )
@@ -7947,7 +7923,7 @@ module SfpLang
7947
7923
  tree_for_char_literal370 = @adaptor.create_with_payload( char_literal370 )
7948
7924
  @adaptor.add_child( root_0, tree_for_char_literal370 )
7949
7925
 
7950
- # at file 814:35: ( NL )+
7926
+ # at file 790:35: ( NL )+
7951
7927
  match_count_136 = 0
7952
7928
  while true
7953
7929
  alt_136 = 2
@@ -7959,7 +7935,7 @@ module SfpLang
7959
7935
  end
7960
7936
  case alt_136
7961
7937
  when 1
7962
- # at line 814:35: NL
7938
+ # at line 790:35: NL
7963
7939
  __NL371__ = match( NL, TOKENS_FOLLOWING_NL_IN_mutation_iterator_2230 )
7964
7940
 
7965
7941
  tree_for_NL371 = @adaptor.create_with_payload( __NL371__ )
@@ -7987,7 +7963,7 @@ module SfpLang
7987
7963
  @now = @now[id]
7988
7964
 
7989
7965
  # <-- action
7990
- # at line 824:3: ( mutation ( NL )+ )*
7966
+ # at line 800:3: ( mutation ( NL )+ )*
7991
7967
  while true # decision 138
7992
7968
  alt_138 = 2
7993
7969
  look_138_0 = @input.peek( 1 )
@@ -7998,7 +7974,7 @@ module SfpLang
7998
7974
  end
7999
7975
  case alt_138
8000
7976
  when 1
8001
- # at line 824:4: mutation ( NL )+
7977
+ # at line 800:4: mutation ( NL )+
8002
7978
  @state.following.push( TOKENS_FOLLOWING_mutation_IN_mutation_iterator_2240 )
8003
7979
  mutation372 = mutation
8004
7980
  @state.following.pop
@@ -8006,7 +7982,7 @@ module SfpLang
8006
7982
  # --> action
8007
7983
  @now[( mutation372.nil? ? nil : mutation372.key )] = ( mutation372.nil? ? nil : mutation372.val )
8008
7984
  # <-- action
8009
- # at file 826:3: ( NL )+
7985
+ # at file 802:3: ( NL )+
8010
7986
  match_count_137 = 0
8011
7987
  while true
8012
7988
  alt_137 = 2
@@ -8018,7 +7994,7 @@ module SfpLang
8018
7994
  end
8019
7995
  case alt_137
8020
7996
  when 1
8021
- # at line 826:3: NL
7997
+ # at line 802:3: NL
8022
7998
  __NL373__ = match( NL, TOKENS_FOLLOWING_NL_IN_mutation_iterator_2248 )
8023
7999
 
8024
8000
  tree_for_NL373 = @adaptor.create_with_payload( __NL373__ )
@@ -8075,7 +8051,7 @@ module SfpLang
8075
8051
  # parser rule mutation
8076
8052
  #
8077
8053
  # (in SfpLang.g)
8078
- # 831:1: mutation returns [key, val] : ( reference equals_op value | reference equals_op NULL | reference binary_op NUMBER | reference 'is' 'new' path ( object_body )? | 'delete' path | reference 'add(' value ')' | reference 'remove(' value ')' );
8054
+ # 807:1: mutation returns [key, val] : ( reference equals_op value | reference equals_op NULL | reference binary_op NUMBER | reference 'is' 'new' path ( object_body )? | 'delete' path | reference 'add(' value ')' | reference 'remove(' value ')' );
8079
8055
  #
8080
8056
  def mutation
8081
8057
  # -> uncomment the next line to manually enable rule tracing
@@ -8122,7 +8098,7 @@ module SfpLang
8122
8098
  tree_for_char_literal398 = nil
8123
8099
 
8124
8100
  begin
8125
- # at line 832:2: ( reference equals_op value | reference equals_op NULL | reference binary_op NUMBER | reference 'is' 'new' path ( object_body )? | 'delete' path | reference 'add(' value ')' | reference 'remove(' value ')' )
8101
+ # at line 808:2: ( reference equals_op value | reference equals_op NULL | reference binary_op NUMBER | reference 'is' 'new' path ( object_body )? | 'delete' path | reference 'add(' value ')' | reference 'remove(' value ')' )
8126
8102
  alt_140 = 7
8127
8103
  alt_140 = @dfa140.predict( @input )
8128
8104
  case alt_140
@@ -8130,7 +8106,7 @@ module SfpLang
8130
8106
  root_0 = @adaptor.create_flat_list
8131
8107
 
8132
8108
 
8133
- # at line 832:4: reference equals_op value
8109
+ # at line 808:4: reference equals_op value
8134
8110
  @state.following.push( TOKENS_FOLLOWING_reference_IN_mutation_2274 )
8135
8111
  reference375 = reference
8136
8112
  @state.following.pop
@@ -8157,7 +8133,7 @@ module SfpLang
8157
8133
  root_0 = @adaptor.create_flat_list
8158
8134
 
8159
8135
 
8160
- # at line 840:4: reference equals_op NULL
8136
+ # at line 816:4: reference equals_op NULL
8161
8137
  @state.following.push( TOKENS_FOLLOWING_reference_IN_mutation_2287 )
8162
8138
  reference378 = reference
8163
8139
  @state.following.pop
@@ -8185,7 +8161,7 @@ module SfpLang
8185
8161
  root_0 = @adaptor.create_flat_list
8186
8162
 
8187
8163
 
8188
- # at line 848:4: reference binary_op NUMBER
8164
+ # at line 824:4: reference binary_op NUMBER
8189
8165
  @state.following.push( TOKENS_FOLLOWING_reference_IN_mutation_2300 )
8190
8166
  reference381 = reference
8191
8167
  @state.following.pop
@@ -8213,7 +8189,7 @@ module SfpLang
8213
8189
  root_0 = @adaptor.create_flat_list
8214
8190
 
8215
8191
 
8216
- # at line 856:4: reference 'is' 'new' path ( object_body )?
8192
+ # at line 832:4: reference 'is' 'new' path ( object_body )?
8217
8193
  @state.following.push( TOKENS_FOLLOWING_reference_IN_mutation_2313 )
8218
8194
  reference384 = reference
8219
8195
  @state.following.pop
@@ -8243,7 +8219,7 @@ module SfpLang
8243
8219
  @now = @now[id]
8244
8220
 
8245
8221
  # <-- action
8246
- # at line 866:3: ( object_body )?
8222
+ # at line 842:3: ( object_body )?
8247
8223
  alt_139 = 2
8248
8224
  look_139_0 = @input.peek( 1 )
8249
8225
 
@@ -8252,7 +8228,7 @@ module SfpLang
8252
8228
  end
8253
8229
  case alt_139
8254
8230
  when 1
8255
- # at line 866:3: object_body
8231
+ # at line 842:3: object_body
8256
8232
  @state.following.push( TOKENS_FOLLOWING_object_body_IN_mutation_2327 )
8257
8233
  object_body388 = object_body
8258
8234
  @state.following.pop
@@ -8272,7 +8248,7 @@ module SfpLang
8272
8248
  root_0 = @adaptor.create_flat_list
8273
8249
 
8274
8250
 
8275
- # at line 873:4: 'delete' path
8251
+ # at line 849:4: 'delete' path
8276
8252
  string_literal389 = match( T__69, TOKENS_FOLLOWING_T__69_IN_mutation_2337 )
8277
8253
 
8278
8254
  tree_for_string_literal389 = @adaptor.create_with_payload( string_literal389 )
@@ -8297,7 +8273,7 @@ module SfpLang
8297
8273
  root_0 = @adaptor.create_flat_list
8298
8274
 
8299
8275
 
8300
- # at line 882:4: reference 'add(' value ')'
8276
+ # at line 858:4: reference 'add(' value ')'
8301
8277
  @state.following.push( TOKENS_FOLLOWING_reference_IN_mutation_2348 )
8302
8278
  reference391 = reference
8303
8279
  @state.following.pop
@@ -8330,7 +8306,7 @@ module SfpLang
8330
8306
  root_0 = @adaptor.create_flat_list
8331
8307
 
8332
8308
 
8333
- # at line 890:4: reference 'remove(' value ')'
8309
+ # at line 866:4: reference 'remove(' value ')'
8334
8310
  @state.following.push( TOKENS_FOLLOWING_reference_IN_mutation_2363 )
8335
8311
  reference395 = reference
8336
8312
  @state.following.pop
@@ -8386,7 +8362,7 @@ module SfpLang
8386
8362
  # parser rule set_value
8387
8363
  #
8388
8364
  # (in SfpLang.g)
8389
- # 900:1: set_value returns [val] : '(' ( set_item ( ',' ( NL )* set_item )* )? ')' ;
8365
+ # 876:1: set_value returns [val] : '(' ( set_item ( ',' ( NL )* set_item )* )? ')' ;
8390
8366
  #
8391
8367
  def set_value
8392
8368
  # -> uncomment the next line to manually enable rule tracing
@@ -8413,7 +8389,7 @@ module SfpLang
8413
8389
  root_0 = @adaptor.create_flat_list
8414
8390
 
8415
8391
 
8416
- # at line 901:4: '(' ( set_item ( ',' ( NL )* set_item )* )? ')'
8392
+ # at line 877:4: '(' ( set_item ( ',' ( NL )* set_item )* )? ')'
8417
8393
  char_literal399 = match( T__42, TOKENS_FOLLOWING_T__42_IN_set_value_2388 )
8418
8394
 
8419
8395
  tree_for_char_literal399 = @adaptor.create_with_payload( char_literal399 )
@@ -8422,7 +8398,7 @@ module SfpLang
8422
8398
  # --> action
8423
8399
  @set = Array.new
8424
8400
  # <-- action
8425
- # at line 903:3: ( set_item ( ',' ( NL )* set_item )* )?
8401
+ # at line 879:3: ( set_item ( ',' ( NL )* set_item )* )?
8426
8402
  alt_143 = 2
8427
8403
  look_143_0 = @input.peek( 1 )
8428
8404
 
@@ -8431,12 +8407,12 @@ module SfpLang
8431
8407
  end
8432
8408
  case alt_143
8433
8409
  when 1
8434
- # at line 903:4: set_item ( ',' ( NL )* set_item )*
8410
+ # at line 879:4: set_item ( ',' ( NL )* set_item )*
8435
8411
  @state.following.push( TOKENS_FOLLOWING_set_item_IN_set_value_2397 )
8436
8412
  set_item400 = set_item
8437
8413
  @state.following.pop
8438
8414
  @adaptor.add_child( root_0, set_item400.tree )
8439
- # at line 903:13: ( ',' ( NL )* set_item )*
8415
+ # at line 879:13: ( ',' ( NL )* set_item )*
8440
8416
  while true # decision 142
8441
8417
  alt_142 = 2
8442
8418
  look_142_0 = @input.peek( 1 )
@@ -8447,13 +8423,13 @@ module SfpLang
8447
8423
  end
8448
8424
  case alt_142
8449
8425
  when 1
8450
- # at line 903:14: ',' ( NL )* set_item
8426
+ # at line 879:14: ',' ( NL )* set_item
8451
8427
  char_literal401 = match( T__30, TOKENS_FOLLOWING_T__30_IN_set_value_2400 )
8452
8428
 
8453
8429
  tree_for_char_literal401 = @adaptor.create_with_payload( char_literal401 )
8454
8430
  @adaptor.add_child( root_0, tree_for_char_literal401 )
8455
8431
 
8456
- # at line 903:18: ( NL )*
8432
+ # at line 879:18: ( NL )*
8457
8433
  while true # decision 141
8458
8434
  alt_141 = 2
8459
8435
  look_141_0 = @input.peek( 1 )
@@ -8464,7 +8440,7 @@ module SfpLang
8464
8440
  end
8465
8441
  case alt_141
8466
8442
  when 1
8467
- # at line 903:18: NL
8443
+ # at line 879:18: NL
8468
8444
  __NL402__ = match( NL, TOKENS_FOLLOWING_NL_IN_set_value_2402 )
8469
8445
 
8470
8446
  tree_for_NL402 = @adaptor.create_with_payload( __NL402__ )
@@ -8521,7 +8497,7 @@ module SfpLang
8521
8497
  # parser rule set_item
8522
8498
  #
8523
8499
  # (in SfpLang.g)
8524
- # 908:1: set_item : value ;
8500
+ # 884:1: set_item : value ;
8525
8501
  #
8526
8502
  def set_item
8527
8503
  # -> uncomment the next line to manually enable rule tracing
@@ -8539,7 +8515,7 @@ module SfpLang
8539
8515
  root_0 = @adaptor.create_flat_list
8540
8516
 
8541
8517
 
8542
- # at line 909:4: value
8518
+ # at line 885:4: value
8543
8519
  @state.following.push( TOKENS_FOLLOWING_value_IN_set_item_2428 )
8544
8520
  value405 = value
8545
8521
  @state.following.pop
@@ -8574,7 +8550,7 @@ module SfpLang
8574
8550
  # parser rule value
8575
8551
  #
8576
8552
  # (in SfpLang.g)
8577
- # 913:1: value returns [val, type] : ( primitive_value | reference | set_value | 'any' );
8553
+ # 889:1: value returns [val, type] : ( primitive_value | reference | set_value | 'any' );
8578
8554
  #
8579
8555
  def value
8580
8556
  # -> uncomment the next line to manually enable rule tracing
@@ -8593,7 +8569,7 @@ module SfpLang
8593
8569
  tree_for_string_literal409 = nil
8594
8570
 
8595
8571
  begin
8596
- # at line 914:2: ( primitive_value | reference | set_value | 'any' )
8572
+ # at line 890:2: ( primitive_value | reference | set_value | 'any' )
8597
8573
  alt_144 = 4
8598
8574
  case look_144 = @input.peek( 1 )
8599
8575
  when STRING, NUMBER, BOOLEAN, MULTILINE_STRING then alt_144 = 1
@@ -8608,7 +8584,7 @@ module SfpLang
8608
8584
  root_0 = @adaptor.create_flat_list
8609
8585
 
8610
8586
 
8611
- # at line 914:4: primitive_value
8587
+ # at line 890:4: primitive_value
8612
8588
  @state.following.push( TOKENS_FOLLOWING_primitive_value_IN_value_2447 )
8613
8589
  primitive_value406 = primitive_value
8614
8590
  @state.following.pop
@@ -8624,7 +8600,7 @@ module SfpLang
8624
8600
  root_0 = @adaptor.create_flat_list
8625
8601
 
8626
8602
 
8627
- # at line 919:4: reference
8603
+ # at line 895:4: reference
8628
8604
  @state.following.push( TOKENS_FOLLOWING_reference_IN_value_2456 )
8629
8605
  reference407 = reference
8630
8606
  @state.following.pop
@@ -8640,7 +8616,7 @@ module SfpLang
8640
8616
  root_0 = @adaptor.create_flat_list
8641
8617
 
8642
8618
 
8643
- # at line 924:4: set_value
8619
+ # at line 900:4: set_value
8644
8620
  @state.following.push( TOKENS_FOLLOWING_set_value_IN_value_2465 )
8645
8621
  set_value408 = set_value
8646
8622
  @state.following.pop
@@ -8656,7 +8632,7 @@ module SfpLang
8656
8632
  root_0 = @adaptor.create_flat_list
8657
8633
 
8658
8634
 
8659
- # at line 929:4: 'any'
8635
+ # at line 905:4: 'any'
8660
8636
  string_literal409 = match( T__72, TOKENS_FOLLOWING_T__72_IN_value_2474 )
8661
8637
 
8662
8638
  tree_for_string_literal409 = @adaptor.create_with_payload( string_literal409 )
@@ -8696,7 +8672,7 @@ module SfpLang
8696
8672
  # parser rule primitive_value
8697
8673
  #
8698
8674
  # (in SfpLang.g)
8699
- # 936:1: primitive_value returns [val, type] : ( BOOLEAN | NUMBER | STRING | MULTILINE_STRING );
8675
+ # 912:1: primitive_value returns [val, type] : ( BOOLEAN | NUMBER | STRING | MULTILINE_STRING );
8700
8676
  #
8701
8677
  def primitive_value
8702
8678
  # -> uncomment the next line to manually enable rule tracing
@@ -8718,7 +8694,7 @@ module SfpLang
8718
8694
  tree_for_MULTILINE_STRING413 = nil
8719
8695
 
8720
8696
  begin
8721
- # at line 937:2: ( BOOLEAN | NUMBER | STRING | MULTILINE_STRING )
8697
+ # at line 913:2: ( BOOLEAN | NUMBER | STRING | MULTILINE_STRING )
8722
8698
  alt_145 = 4
8723
8699
  case look_145 = @input.peek( 1 )
8724
8700
  when BOOLEAN then alt_145 = 1
@@ -8733,7 +8709,7 @@ module SfpLang
8733
8709
  root_0 = @adaptor.create_flat_list
8734
8710
 
8735
8711
 
8736
- # at line 937:4: BOOLEAN
8712
+ # at line 913:4: BOOLEAN
8737
8713
  __BOOLEAN410__ = match( BOOLEAN, TOKENS_FOLLOWING_BOOLEAN_IN_primitive_value_2493 )
8738
8714
 
8739
8715
  tree_for_BOOLEAN410 = @adaptor.create_with_payload( __BOOLEAN410__ )
@@ -8754,7 +8730,7 @@ module SfpLang
8754
8730
  root_0 = @adaptor.create_flat_list
8755
8731
 
8756
8732
 
8757
- # at line 946:4: NUMBER
8733
+ # at line 922:4: NUMBER
8758
8734
  __NUMBER411__ = match( NUMBER, TOKENS_FOLLOWING_NUMBER_IN_primitive_value_2502 )
8759
8735
 
8760
8736
  tree_for_NUMBER411 = @adaptor.create_with_payload( __NUMBER411__ )
@@ -8771,7 +8747,7 @@ module SfpLang
8771
8747
  root_0 = @adaptor.create_flat_list
8772
8748
 
8773
8749
 
8774
- # at line 951:4: STRING
8750
+ # at line 927:4: STRING
8775
8751
  __STRING412__ = match( STRING, TOKENS_FOLLOWING_STRING_IN_primitive_value_2511 )
8776
8752
 
8777
8753
  tree_for_STRING412 = @adaptor.create_with_payload( __STRING412__ )
@@ -8788,7 +8764,7 @@ module SfpLang
8788
8764
  root_0 = @adaptor.create_flat_list
8789
8765
 
8790
8766
 
8791
- # at line 956:4: MULTILINE_STRING
8767
+ # at line 932:4: MULTILINE_STRING
8792
8768
  __MULTILINE_STRING413__ = match( MULTILINE_STRING, TOKENS_FOLLOWING_MULTILINE_STRING_IN_primitive_value_2520 )
8793
8769
 
8794
8770
  tree_for_MULTILINE_STRING413 = @adaptor.create_with_payload( __MULTILINE_STRING413__ )
@@ -8828,7 +8804,7 @@ module SfpLang
8828
8804
  # parser rule path
8829
8805
  #
8830
8806
  # (in SfpLang.g)
8831
- # 963:1: path : ID ( '.' ID )* ;
8807
+ # 939:1: path : ID ( '.' ID )* ;
8832
8808
  #
8833
8809
  def path
8834
8810
  # -> uncomment the next line to manually enable rule tracing
@@ -8851,13 +8827,13 @@ module SfpLang
8851
8827
  root_0 = @adaptor.create_flat_list
8852
8828
 
8853
8829
 
8854
- # at line 964:4: ID ( '.' ID )*
8830
+ # at line 940:4: ID ( '.' ID )*
8855
8831
  __ID414__ = match( ID, TOKENS_FOLLOWING_ID_IN_path_2535 )
8856
8832
 
8857
8833
  tree_for_ID414 = @adaptor.create_with_payload( __ID414__ )
8858
8834
  @adaptor.add_child( root_0, tree_for_ID414 )
8859
8835
 
8860
- # at line 964:6: ( '.' ID )*
8836
+ # at line 940:6: ( '.' ID )*
8861
8837
  while true # decision 146
8862
8838
  alt_146 = 2
8863
8839
  look_146_0 = @input.peek( 1 )
@@ -8868,7 +8844,7 @@ module SfpLang
8868
8844
  end
8869
8845
  case alt_146
8870
8846
  when 1
8871
- # at line 964:7: '.' ID
8847
+ # at line 940:7: '.' ID
8872
8848
  char_literal415 = match( T__73, TOKENS_FOLLOWING_T__73_IN_path_2537 )
8873
8849
 
8874
8850
  tree_for_char_literal415 = @adaptor.create_with_payload( char_literal415 )
@@ -8911,7 +8887,7 @@ module SfpLang
8911
8887
  # parser rule path_with_index
8912
8888
  #
8913
8889
  # (in SfpLang.g)
8914
- # 967:1: path_with_index : id_ref ( '.' id_ref )* ;
8890
+ # 943:1: path_with_index : id_ref ( '.' id_ref )* ;
8915
8891
  #
8916
8892
  def path_with_index
8917
8893
  # -> uncomment the next line to manually enable rule tracing
@@ -8932,12 +8908,12 @@ module SfpLang
8932
8908
  root_0 = @adaptor.create_flat_list
8933
8909
 
8934
8910
 
8935
- # at line 968:4: id_ref ( '.' id_ref )*
8911
+ # at line 944:4: id_ref ( '.' id_ref )*
8936
8912
  @state.following.push( TOKENS_FOLLOWING_id_ref_IN_path_with_index_2551 )
8937
8913
  id_ref417 = id_ref
8938
8914
  @state.following.pop
8939
8915
  @adaptor.add_child( root_0, id_ref417.tree )
8940
- # at line 968:10: ( '.' id_ref )*
8916
+ # at line 944:10: ( '.' id_ref )*
8941
8917
  while true # decision 147
8942
8918
  alt_147 = 2
8943
8919
  look_147_0 = @input.peek( 1 )
@@ -8948,7 +8924,7 @@ module SfpLang
8948
8924
  end
8949
8925
  case alt_147
8950
8926
  when 1
8951
- # at line 968:11: '.' id_ref
8927
+ # at line 944:11: '.' id_ref
8952
8928
  char_literal418 = match( T__73, TOKENS_FOLLOWING_T__73_IN_path_with_index_2553 )
8953
8929
 
8954
8930
  tree_for_char_literal418 = @adaptor.create_with_payload( char_literal418 )
@@ -8990,7 +8966,7 @@ module SfpLang
8990
8966
  # parser rule id_ref
8991
8967
  #
8992
8968
  # (in SfpLang.g)
8993
- # 971:1: id_ref : ID ( '[' NUMBER ']' )? ;
8969
+ # 947:1: id_ref : ID ( '[' NUMBER ']' )? ;
8994
8970
  #
8995
8971
  def id_ref
8996
8972
  # -> uncomment the next line to manually enable rule tracing
@@ -9015,13 +8991,13 @@ module SfpLang
9015
8991
  root_0 = @adaptor.create_flat_list
9016
8992
 
9017
8993
 
9018
- # at line 972:4: ID ( '[' NUMBER ']' )?
8994
+ # at line 948:4: ID ( '[' NUMBER ']' )?
9019
8995
  __ID420__ = match( ID, TOKENS_FOLLOWING_ID_IN_id_ref_2567 )
9020
8996
 
9021
8997
  tree_for_ID420 = @adaptor.create_with_payload( __ID420__ )
9022
8998
  @adaptor.add_child( root_0, tree_for_ID420 )
9023
8999
 
9024
- # at line 972:6: ( '[' NUMBER ']' )?
9000
+ # at line 948:6: ( '[' NUMBER ']' )?
9025
9001
  alt_148 = 2
9026
9002
  look_148_0 = @input.peek( 1 )
9027
9003
 
@@ -9030,7 +9006,7 @@ module SfpLang
9030
9006
  end
9031
9007
  case alt_148
9032
9008
  when 1
9033
- # at line 972:7: '[' NUMBER ']'
9009
+ # at line 948:7: '[' NUMBER ']'
9034
9010
  char_literal421 = match( T__28, TOKENS_FOLLOWING_T__28_IN_id_ref_2569 )
9035
9011
 
9036
9012
  tree_for_char_literal421 = @adaptor.create_with_payload( char_literal421 )
@@ -9075,7 +9051,7 @@ module SfpLang
9075
9051
  # parser rule reference
9076
9052
  #
9077
9053
  # (in SfpLang.g)
9078
- # 975:1: reference returns [val] : path_with_index ;
9054
+ # 951:1: reference returns [val] : path_with_index ;
9079
9055
  #
9080
9056
  def reference
9081
9057
  # -> uncomment the next line to manually enable rule tracing
@@ -9093,7 +9069,7 @@ module SfpLang
9093
9069
  root_0 = @adaptor.create_flat_list
9094
9070
 
9095
9071
 
9096
- # at line 976:4: path_with_index
9072
+ # at line 952:4: path_with_index
9097
9073
  @state.following.push( TOKENS_FOLLOWING_path_with_index_IN_reference_2590 )
9098
9074
  path_with_index424 = path_with_index
9099
9075
  @state.following.pop
@@ -9128,7 +9104,7 @@ module SfpLang
9128
9104
  # parser rule reference_type
9129
9105
  #
9130
9106
  # (in SfpLang.g)
9131
- # 980:1: reference_type returns [val] : 'isref' path ;
9107
+ # 956:1: reference_type returns [val] : 'isref' path ;
9132
9108
  #
9133
9109
  def reference_type
9134
9110
  # -> uncomment the next line to manually enable rule tracing
@@ -9148,7 +9124,7 @@ module SfpLang
9148
9124
  root_0 = @adaptor.create_flat_list
9149
9125
 
9150
9126
 
9151
- # at line 981:4: 'isref' path
9127
+ # at line 957:4: 'isref' path
9152
9128
  string_literal425 = match( T__74, TOKENS_FOLLOWING_T__74_IN_reference_type_2609 )
9153
9129
 
9154
9130
  tree_for_string_literal425 = @adaptor.create_with_payload( string_literal425 )
@@ -9192,7 +9168,7 @@ module SfpLang
9192
9168
  # parser rule set_type
9193
9169
  #
9194
9170
  # (in SfpLang.g)
9195
- # 989:1: set_type returns [val] : 'isset' path ;
9171
+ # 965:1: set_type returns [val] : 'isset' path ;
9196
9172
  #
9197
9173
  def set_type
9198
9174
  # -> uncomment the next line to manually enable rule tracing
@@ -9212,7 +9188,7 @@ module SfpLang
9212
9188
  root_0 = @adaptor.create_flat_list
9213
9189
 
9214
9190
 
9215
- # at line 990:4: 'isset' path
9191
+ # at line 966:4: 'isset' path
9216
9192
  string_literal427 = match( T__45, TOKENS_FOLLOWING_T__45_IN_set_type_2630 )
9217
9193
 
9218
9194
  tree_for_string_literal427 = @adaptor.create_with_payload( string_literal427 )
@@ -9257,7 +9233,7 @@ module SfpLang
9257
9233
  # parser rule probability_op
9258
9234
  #
9259
9235
  # (in SfpLang.g)
9260
- # 999:1: probability_op : 'either' ;
9236
+ # 975:1: probability_op : 'either' ;
9261
9237
  #
9262
9238
  def probability_op
9263
9239
  # -> uncomment the next line to manually enable rule tracing
@@ -9276,7 +9252,7 @@ module SfpLang
9276
9252
  root_0 = @adaptor.create_flat_list
9277
9253
 
9278
9254
 
9279
- # at line 1000:4: 'either'
9255
+ # at line 976:4: 'either'
9280
9256
  string_literal429 = match( T__75, TOKENS_FOLLOWING_T__75_IN_probability_op_2647 )
9281
9257
 
9282
9258
  tree_for_string_literal429 = @adaptor.create_with_payload( string_literal429 )
@@ -9309,7 +9285,7 @@ module SfpLang
9309
9285
  # parser rule equals_op
9310
9286
  #
9311
9287
  # (in SfpLang.g)
9312
- # 1003:1: equals_op : ( '=' | 'is' );
9288
+ # 979:1: equals_op : ( '=' | 'is' );
9313
9289
  #
9314
9290
  def equals_op
9315
9291
  # -> uncomment the next line to manually enable rule tracing
@@ -9367,7 +9343,7 @@ module SfpLang
9367
9343
  # parser rule not_equals_op
9368
9344
  #
9369
9345
  # (in SfpLang.g)
9370
- # 1008:1: not_equals_op : ( '!=' | 'isnt' | 'isnot' );
9346
+ # 984:1: not_equals_op : ( '!=' | 'isnt' | 'isnot' );
9371
9347
  #
9372
9348
  def not_equals_op
9373
9349
  # -> uncomment the next line to manually enable rule tracing
@@ -9425,7 +9401,7 @@ module SfpLang
9425
9401
  # parser rule binary_op
9426
9402
  #
9427
9403
  # (in SfpLang.g)
9428
- # 1014:1: binary_op : ( '+=' | '-=' | '*=' | '/=' );
9404
+ # 990:1: binary_op : ( '+=' | '-=' | '*=' | '/=' );
9429
9405
  #
9430
9406
  def binary_op
9431
9407
  # -> uncomment the next line to manually enable rule tracing
@@ -9483,7 +9459,7 @@ module SfpLang
9483
9459
  # parser rule binary_comp
9484
9460
  #
9485
9461
  # (in SfpLang.g)
9486
- # 1021:1: binary_comp : ( '>' | '>=' | '<' | '<=' );
9462
+ # 997:1: binary_comp : ( '>' | '>=' | '<' | '<=' );
9487
9463
  #
9488
9464
  def binary_comp
9489
9465
  # -> uncomment the next line to manually enable rule tracing
@@ -9640,7 +9616,7 @@ module SfpLang
9640
9616
 
9641
9617
  def description
9642
9618
  <<-'__dfa_description__'.strip!
9643
- 538:4: ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification )
9619
+ 534:4: ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification )
9644
9620
  __dfa_description__
9645
9621
  end
9646
9622
  end
@@ -9707,7 +9683,7 @@ module SfpLang
9707
9683
 
9708
9684
  def description
9709
9685
  <<-'__dfa_description__'.strip!
9710
- 650:1: constraint_statement returns [key, val] : ( reference | 'not' reference | reference equals_op value | reference equals_op NULL | reference not_equals_op value | reference not_equals_op NULL | conditional_constraint | reference ( 'is' )? 'in' set_value | reference ( 'isnot' | 'isnt' | 'not' ) 'in' set_value | reference 'has' value | reference binary_comp comp_value | total_constraint );
9686
+ 634:1: constraint_statement returns [key, val] : ( reference | 'not' reference | reference equals_op value | reference equals_op NULL | reference not_equals_op value | reference not_equals_op NULL | conditional_constraint | reference ( 'is' )? 'in' set_value | reference ( 'isnot' | 'isnt' | 'not' ) 'in' set_value | reference 'has' value | reference binary_comp comp_value | total_constraint );
9711
9687
  __dfa_description__
9712
9688
  end
9713
9689
  end
@@ -9759,7 +9735,7 @@ module SfpLang
9759
9735
 
9760
9736
  def description
9761
9737
  <<-'__dfa_description__'.strip!
9762
- 831:1: mutation returns [key, val] : ( reference equals_op value | reference equals_op NULL | reference binary_op NUMBER | reference 'is' 'new' path ( object_body )? | 'delete' path | reference 'add(' value ')' | reference 'remove(' value ')' );
9738
+ 807:1: mutation returns [key, val] : ( reference equals_op value | reference equals_op NULL | reference binary_op NUMBER | reference 'is' 'new' path ( object_body )? | 'delete' path | reference 'add(' value ')' | reference 'remove(' value ')' );
9763
9739
  __dfa_description__
9764
9740
  end
9765
9741
  end