sfp 0.3.4 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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