sfp 0.3.22 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 44ac56c90eaec6ecac630620c665b638f9ffab39
4
- data.tar.gz: aac76d92cb369a72ad935ac24ca33b06a93aa117
3
+ metadata.gz: 5aaa593d3387a397e9ec0ca4a44adfa88016ff00
4
+ data.tar.gz: 443fa1844bef24bb4c1ded0822d0519d600d481c
5
5
  SHA512:
6
- metadata.gz: c629e6db9ab2eee74150378093b3890ce34697e6ab7a0480e34d2025eae72f5af4bfa5e17f834e90ef3cbbdafc7d8f54e043009a48e44d35b3273e013cc27cfb
7
- data.tar.gz: 15e5d8e43c6c660ea6c2cfc4e8c47509714d111e95fad1b528e3bb27ec6a90a981bdfa22d45a5247d4ef3cb685be34b4a85c359890d8d5af950937281d15df66
6
+ metadata.gz: 721a5319c5ede930324912678407614473f1fdcf2014c00f3622069f1c04e9ec3881e63bcd6a1fb4a8351924d67475c9a0e0d258217d9915572c517e5b7cb2d8
7
+ data.tar.gz: eb70b081e1d8618e7de550ab06001b77c6beb5cbc89e90a9c87d84b08dac57c8b194cf4c31c15ff8cc3684537650fbd9fd62bd1cb69687f65f8ec004df9e8a3a
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.22
1
+ 0.4.1
@@ -5,7 +5,7 @@
5
5
  # Generated using ANTLR version: 3.5
6
6
  # Ruby runtime library version: 1.10.0
7
7
  # Input grammar file: SfpLang.g
8
- # Generated at: 2013-11-14 11:25:20
8
+ # Generated at: 2013-12-19 16:23:36
9
9
  #
10
10
 
11
11
  # ~~~> start load path setup
@@ -2041,7 +2041,7 @@ module SfpLang
2041
2041
 
2042
2042
 
2043
2043
  # - - - - main rule block - - - -
2044
- # at line 996:2: ( 'null' | 'nil' )
2044
+ # at line 1000:2: ( 'null' | 'nil' )
2045
2045
  alt_1 = 2
2046
2046
  look_1_0 = @input.peek( 1 )
2047
2047
 
@@ -2062,12 +2062,12 @@ module SfpLang
2062
2062
  end
2063
2063
  case alt_1
2064
2064
  when 1
2065
- # at line 996:4: 'null'
2065
+ # at line 1000:4: 'null'
2066
2066
  match( "null" )
2067
2067
 
2068
2068
 
2069
2069
  when 2
2070
- # at line 997:4: 'nil'
2070
+ # at line 1001:4: 'nil'
2071
2071
  match( "nil" )
2072
2072
 
2073
2073
 
@@ -2096,7 +2096,7 @@ module SfpLang
2096
2096
 
2097
2097
 
2098
2098
  # - - - - main rule block - - - -
2099
- # at line 1001:2: ( 'true' | 'false' | 'off' | 'on' | 'yes' | 'no' )
2099
+ # at line 1005:2: ( 'true' | 'false' | 'off' | 'on' | 'yes' | 'no' )
2100
2100
  alt_2 = 6
2101
2101
  case look_2 = @input.peek( 1 )
2102
2102
  when 0x74 then alt_2 = 1
@@ -2119,32 +2119,32 @@ module SfpLang
2119
2119
  end
2120
2120
  case alt_2
2121
2121
  when 1
2122
- # at line 1001:4: 'true'
2122
+ # at line 1005:4: 'true'
2123
2123
  match( "true" )
2124
2124
 
2125
2125
 
2126
2126
  when 2
2127
- # at line 1002:4: 'false'
2127
+ # at line 1006:4: 'false'
2128
2128
  match( "false" )
2129
2129
 
2130
2130
 
2131
2131
  when 3
2132
- # at line 1003:4: 'off'
2132
+ # at line 1007:4: 'off'
2133
2133
  match( "off" )
2134
2134
 
2135
2135
 
2136
2136
  when 4
2137
- # at line 1004:4: 'on'
2137
+ # at line 1008:4: 'on'
2138
2138
  match( "on" )
2139
2139
 
2140
2140
 
2141
2141
  when 5
2142
- # at line 1005:4: 'yes'
2142
+ # at line 1009:4: 'yes'
2143
2143
  match( "yes" )
2144
2144
 
2145
2145
 
2146
2146
  when 6
2147
- # at line 1006:4: 'no'
2147
+ # at line 1010:4: 'no'
2148
2148
  match( "no" )
2149
2149
 
2150
2150
 
@@ -2173,7 +2173,7 @@ module SfpLang
2173
2173
 
2174
2174
 
2175
2175
  # - - - - main rule block - - - -
2176
- # at line 1009:6: ( 'a' .. 'z' | 'A' .. 'Z' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )*
2176
+ # at line 1013:6: ( 'a' .. 'z' | 'A' .. 'Z' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )*
2177
2177
  if @input.peek( 1 ).between?( 0x41, 0x5a ) || @input.peek( 1 ).between?( 0x61, 0x7a )
2178
2178
  @input.consume
2179
2179
  else
@@ -2184,7 +2184,7 @@ module SfpLang
2184
2184
  end
2185
2185
 
2186
2186
 
2187
- # at line 1009:25: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )*
2187
+ # at line 1013:25: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )*
2188
2188
  while true # decision 3
2189
2189
  alt_3 = 2
2190
2190
  look_3_0 = @input.peek( 1 )
@@ -2237,8 +2237,8 @@ module SfpLang
2237
2237
 
2238
2238
 
2239
2239
  # - - - - main rule block - - - -
2240
- # at line 1013:4: ( '-' )? ( '0' .. '9' )+
2241
- # at line 1013:4: ( '-' )?
2240
+ # at line 1017:4: ( '-' )? ( '0' .. '9' )+
2241
+ # at line 1017:4: ( '-' )?
2242
2242
  alt_4 = 2
2243
2243
  look_4_0 = @input.peek( 1 )
2244
2244
 
@@ -2247,11 +2247,11 @@ module SfpLang
2247
2247
  end
2248
2248
  case alt_4
2249
2249
  when 1
2250
- # at line 1013:4: '-'
2250
+ # at line 1017:4: '-'
2251
2251
  match( 0x2d )
2252
2252
 
2253
2253
  end
2254
- # at file 1013:8: ( '0' .. '9' )+
2254
+ # at file 1017:8: ( '0' .. '9' )+
2255
2255
  match_count_5 = 0
2256
2256
  while true
2257
2257
  alt_5 = 2
@@ -2311,7 +2311,7 @@ module SfpLang
2311
2311
 
2312
2312
 
2313
2313
  # - - - - main rule block - - - -
2314
- # at line 1024:2: ( '//' (~ ( '\\n' | '\\r' ) )* | '#' (~ ( '\\n' | '\\r' ) )* | '/*' ( options {greedy=false; } : . )* '*/' )
2314
+ # at line 1028:2: ( '//' (~ ( '\\n' | '\\r' ) )* | '#' (~ ( '\\n' | '\\r' ) )* | '/*' ( options {greedy=false; } : . )* '*/' )
2315
2315
  alt_9 = 3
2316
2316
  look_9_0 = @input.peek( 1 )
2317
2317
 
@@ -2334,10 +2334,10 @@ module SfpLang
2334
2334
  end
2335
2335
  case alt_9
2336
2336
  when 1
2337
- # at line 1024:4: '//' (~ ( '\\n' | '\\r' ) )*
2337
+ # at line 1028:4: '//' (~ ( '\\n' | '\\r' ) )*
2338
2338
  match( "//" )
2339
2339
 
2340
- # at line 1024:9: (~ ( '\\n' | '\\r' ) )*
2340
+ # at line 1028:9: (~ ( '\\n' | '\\r' ) )*
2341
2341
  while true # decision 6
2342
2342
  alt_6 = 2
2343
2343
  look_6_0 = @input.peek( 1 )
@@ -2372,9 +2372,9 @@ module SfpLang
2372
2372
 
2373
2373
 
2374
2374
  when 2
2375
- # at line 1025:4: '#' (~ ( '\\n' | '\\r' ) )*
2375
+ # at line 1029:4: '#' (~ ( '\\n' | '\\r' ) )*
2376
2376
  match( 0x23 )
2377
- # at line 1025:8: (~ ( '\\n' | '\\r' ) )*
2377
+ # at line 1029:8: (~ ( '\\n' | '\\r' ) )*
2378
2378
  while true # decision 7
2379
2379
  alt_7 = 2
2380
2380
  look_7_0 = @input.peek( 1 )
@@ -2409,10 +2409,10 @@ module SfpLang
2409
2409
 
2410
2410
 
2411
2411
  when 3
2412
- # at line 1026:4: '/*' ( options {greedy=false; } : . )* '*/'
2412
+ # at line 1030:4: '/*' ( options {greedy=false; } : . )* '*/'
2413
2413
  match( "/*" )
2414
2414
 
2415
- # at line 1026:9: ( options {greedy=false; } : . )*
2415
+ # at line 1030:9: ( options {greedy=false; } : . )*
2416
2416
  while true # decision 8
2417
2417
  alt_8 = 2
2418
2418
  look_8_0 = @input.peek( 1 )
@@ -2432,7 +2432,7 @@ module SfpLang
2432
2432
  end
2433
2433
  case alt_8
2434
2434
  when 1
2435
- # at line 1026:37: .
2435
+ # at line 1030:37: .
2436
2436
  match_any
2437
2437
 
2438
2438
  else
@@ -2474,10 +2474,10 @@ module SfpLang
2474
2474
 
2475
2475
 
2476
2476
  # - - - - main rule block - - - -
2477
- # at line 1030:4: 'r\"' ( options {greedy=false; } : . )* '\"'
2477
+ # at line 1034:4: 'r\"' ( options {greedy=false; } : . )* '\"'
2478
2478
  match( "r\"" )
2479
2479
 
2480
- # at line 1030:9: ( options {greedy=false; } : . )*
2480
+ # at line 1034:9: ( options {greedy=false; } : . )*
2481
2481
  while true # decision 10
2482
2482
  alt_10 = 2
2483
2483
  look_10_0 = @input.peek( 1 )
@@ -2490,7 +2490,7 @@ module SfpLang
2490
2490
  end
2491
2491
  case alt_10
2492
2492
  when 1
2493
- # at line 1030:37: .
2493
+ # at line 1034:37: .
2494
2494
  match_any
2495
2495
 
2496
2496
  else
@@ -2524,8 +2524,8 @@ module SfpLang
2524
2524
 
2525
2525
 
2526
2526
  # - - - - main rule block - - - -
2527
- # at line 1033:6: ( ( '\\r' )? '\\n' | ';' )
2528
- # at line 1033:6: ( ( '\\r' )? '\\n' | ';' )
2527
+ # at line 1037:6: ( ( '\\r' )? '\\n' | ';' )
2528
+ # at line 1037:6: ( ( '\\r' )? '\\n' | ';' )
2529
2529
  alt_12 = 2
2530
2530
  look_12_0 = @input.peek( 1 )
2531
2531
 
@@ -2539,8 +2539,8 @@ module SfpLang
2539
2539
  end
2540
2540
  case alt_12
2541
2541
  when 1
2542
- # at line 1033:7: ( '\\r' )? '\\n'
2543
- # at line 1033:7: ( '\\r' )?
2542
+ # at line 1037:7: ( '\\r' )? '\\n'
2543
+ # at line 1037:7: ( '\\r' )?
2544
2544
  alt_11 = 2
2545
2545
  look_11_0 = @input.peek( 1 )
2546
2546
 
@@ -2549,14 +2549,14 @@ module SfpLang
2549
2549
  end
2550
2550
  case alt_11
2551
2551
  when 1
2552
- # at line 1033:7: '\\r'
2552
+ # at line 1037:7: '\\r'
2553
2553
  match( 0xd )
2554
2554
 
2555
2555
  end
2556
2556
  match( 0xa )
2557
2557
 
2558
2558
  when 2
2559
- # at line 1033:18: ';'
2559
+ # at line 1037:18: ';'
2560
2560
  match( 0x3b )
2561
2561
 
2562
2562
  end
@@ -2585,7 +2585,7 @@ module SfpLang
2585
2585
 
2586
2586
 
2587
2587
  # - - - - main rule block - - - -
2588
- # at line 1036:8: ( ' ' | '\\t' )
2588
+ # at line 1040:8: ( ' ' | '\\t' )
2589
2589
  if @input.peek(1) == 0x9 || @input.peek(1) == 0x20
2590
2590
  @input.consume
2591
2591
  else
@@ -2626,9 +2626,9 @@ module SfpLang
2626
2626
 
2627
2627
 
2628
2628
  # - - - - main rule block - - - -
2629
- # at line 1040:5: '\"' ( ESC_SEQ |~ ( '\\\\' | '\"' ) )* '\"'
2629
+ # at line 1044:5: '\"' ( ESC_SEQ |~ ( '\\\\' | '\"' ) )* '\"'
2630
2630
  match( 0x22 )
2631
- # at line 1040:9: ( ESC_SEQ |~ ( '\\\\' | '\"' ) )*
2631
+ # at line 1044:9: ( ESC_SEQ |~ ( '\\\\' | '\"' ) )*
2632
2632
  while true # decision 13
2633
2633
  alt_13 = 3
2634
2634
  look_13_0 = @input.peek( 1 )
@@ -2641,12 +2641,12 @@ module SfpLang
2641
2641
  end
2642
2642
  case alt_13
2643
2643
  when 1
2644
- # at line 1040:11: ESC_SEQ
2644
+ # at line 1044:11: ESC_SEQ
2645
2645
  esc_seq!
2646
2646
 
2647
2647
 
2648
2648
  when 2
2649
- # at line 1040:21: ~ ( '\\\\' | '\"' )
2649
+ # at line 1044:21: ~ ( '\\\\' | '\"' )
2650
2650
  if @input.peek( 1 ).between?( 0x0, 0x21 ) || @input.peek( 1 ).between?( 0x23, 0x5b ) || @input.peek( 1 ).between?( 0x5d, 0xff )
2651
2651
  @input.consume
2652
2652
  else
@@ -2686,7 +2686,7 @@ module SfpLang
2686
2686
 
2687
2687
 
2688
2688
  # - - - - main rule block - - - -
2689
- # at line 1045:12: ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+
2689
+ # at line 1049:12: ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+
2690
2690
  if @input.peek(1) == 0x45 || @input.peek(1) == 0x65
2691
2691
  @input.consume
2692
2692
  else
@@ -2697,7 +2697,7 @@ module SfpLang
2697
2697
  end
2698
2698
 
2699
2699
 
2700
- # at line 1045:22: ( '+' | '-' )?
2700
+ # at line 1049:22: ( '+' | '-' )?
2701
2701
  alt_14 = 2
2702
2702
  look_14_0 = @input.peek( 1 )
2703
2703
 
@@ -2719,7 +2719,7 @@ module SfpLang
2719
2719
 
2720
2720
 
2721
2721
  end
2722
- # at file 1045:33: ( '0' .. '9' )+
2722
+ # at file 1049:33: ( '0' .. '9' )+
2723
2723
  match_count_15 = 0
2724
2724
  while true
2725
2725
  alt_15 = 2
@@ -2803,7 +2803,7 @@ module SfpLang
2803
2803
 
2804
2804
 
2805
2805
  # - - - - main rule block - - - -
2806
- # at line 1052:2: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UNICODE_ESC | OCTAL_ESC )
2806
+ # at line 1056:2: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UNICODE_ESC | OCTAL_ESC )
2807
2807
  alt_16 = 3
2808
2808
  look_16_0 = @input.peek( 1 )
2809
2809
 
@@ -2822,7 +2822,7 @@ module SfpLang
2822
2822
  end
2823
2823
  case alt_16
2824
2824
  when 1
2825
- # at line 1052:6: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' )
2825
+ # at line 1056:6: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' )
2826
2826
  match( 0x5c )
2827
2827
  if @input.peek(1) == 0x22 || @input.peek(1) == 0x27 || @input.peek(1) == 0x5c || @input.peek(1) == 0x62 || @input.peek(1) == 0x66 || @input.peek(1) == 0x6e || @input.peek(1) == 0x72 || @input.peek(1) == 0x74
2828
2828
  @input.consume
@@ -2836,12 +2836,12 @@ module SfpLang
2836
2836
 
2837
2837
 
2838
2838
  when 2
2839
- # at line 1053:6: UNICODE_ESC
2839
+ # at line 1057:6: UNICODE_ESC
2840
2840
  unicode_esc!
2841
2841
 
2842
2842
 
2843
2843
  when 3
2844
- # at line 1054:6: OCTAL_ESC
2844
+ # at line 1058:6: OCTAL_ESC
2845
2845
  octal_esc!
2846
2846
 
2847
2847
 
@@ -2864,7 +2864,7 @@ module SfpLang
2864
2864
 
2865
2865
 
2866
2866
  # - - - - main rule block - - - -
2867
- # at line 1059:2: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
2867
+ # at line 1063:2: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
2868
2868
  alt_17 = 3
2869
2869
  look_17_0 = @input.peek( 1 )
2870
2870
 
@@ -2906,7 +2906,7 @@ module SfpLang
2906
2906
  end
2907
2907
  case alt_17
2908
2908
  when 1
2909
- # at line 1059:6: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
2909
+ # at line 1063:6: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
2910
2910
  match( 0x5c )
2911
2911
  if @input.peek( 1 ).between?( 0x30, 0x33 )
2912
2912
  @input.consume
@@ -2940,7 +2940,7 @@ module SfpLang
2940
2940
 
2941
2941
 
2942
2942
  when 2
2943
- # at line 1060:6: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
2943
+ # at line 1064:6: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
2944
2944
  match( 0x5c )
2945
2945
  if @input.peek( 1 ).between?( 0x30, 0x37 )
2946
2946
  @input.consume
@@ -2964,7 +2964,7 @@ module SfpLang
2964
2964
 
2965
2965
 
2966
2966
  when 3
2967
- # at line 1061:6: '\\\\' ( '0' .. '7' )
2967
+ # at line 1065:6: '\\\\' ( '0' .. '7' )
2968
2968
  match( 0x5c )
2969
2969
  if @input.peek( 1 ).between?( 0x30, 0x37 )
2970
2970
  @input.consume
@@ -2996,7 +2996,7 @@ module SfpLang
2996
2996
 
2997
2997
 
2998
2998
  # - - - - main rule block - - - -
2999
- # at line 1066:6: '\\\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT
2999
+ # at line 1070:6: '\\\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT
3000
3000
  match( 0x5c )
3001
3001
  match( 0x75 )
3002
3002
 
@@ -5,7 +5,7 @@
5
5
  # Generated using ANTLR version: 3.5
6
6
  # Ruby runtime library version: 1.10.0
7
7
  # Input grammar file: SfpLang.g
8
- # Generated at: 2013-11-14 11:25:17
8
+ # Generated at: 2013-12-19 16:23:34
9
9
  #
10
10
 
11
11
  # ~~~> start load path setup
@@ -2064,15 +2064,19 @@ module SfpLang
2064
2064
  # --> action
2065
2065
 
2066
2066
  template = @root.at?(( path68 && @input.to_s( path68.start, path68.stop ) ))
2067
- raise Exception, "Object template #{( path68 && @input.to_s( path68.start, path68.stop ) )} is not found!" if
2068
- template.is_a?(Sfp::Unknown) or template.is_a?(Sfp::Undefined)
2069
- raise Exception, "#{( path68 && @input.to_s( path68.start, path68.stop ) )} is not an object!" if
2070
- !template.is_a?(Hash) or template['_context'] != 'object'
2071
- @now[__ID66__.text] = Sfp::Helper.deep_clone(template)
2072
- @now[__ID66__.text].accept(Sfp::Visitor::ParentEliminator.new)
2073
- @now[__ID66__.text]['_parent'] = @now
2074
- @now[__ID66__.text]['_self'] = __ID66__.text
2075
- @now[__ID66__.text].accept(Sfp::Visitor::SfpGenerator.new(@root))
2067
+ if template.is_a?(Sfp::Unknown) or template.is_a?(Sfp::Undefined)
2068
+ raise Exception, "Object template #{( path68 && @input.to_s( path68.start, path68.stop ) )} is not found!"
2069
+ end
2070
+ if !template.is_a?(Hash) or (template['_context'] != 'object' and template['_context'] != 'abstract')
2071
+ puts template['_context']
2072
+ raise Exception, "#{( path68 && @input.to_s( path68.start, path68.stop ) )}:[#{template['_context']}] is not an object or an abstract object!"
2073
+ end
2074
+ object = @now[__ID66__.text] = Sfp::Helper.deep_clone(template)
2075
+ object.accept(Sfp::Visitor::ParentEliminator.new)
2076
+ object['_parent'] = @now
2077
+ object['_self'] = __ID66__.text
2078
+ object['_context'] = 'object'
2079
+ object.accept(Sfp::Visitor::SfpGenerator.new(@root))
2076
2080
  @use_template = true
2077
2081
 
2078
2082
  # <-- action
@@ -2092,7 +2096,7 @@ module SfpLang
2092
2096
 
2093
2097
  # <-- action
2094
2098
 
2095
- # at line 226:3: ( 'isa' object_schema ( object_schemata )* )?
2099
+ # at line 230:3: ( 'isa' object_schema ( object_schemata )* )?
2096
2100
  alt_28 = 2
2097
2101
  look_28_0 = @input.peek( 1 )
2098
2102
 
@@ -2101,7 +2105,7 @@ module SfpLang
2101
2105
  end
2102
2106
  case alt_28
2103
2107
  when 1
2104
- # at line 226:4: 'isa' object_schema ( object_schemata )*
2108
+ # at line 230:4: 'isa' object_schema ( object_schemata )*
2105
2109
  string_literal69 = match( T__66, TOKENS_FOLLOWING_T__66_IN_object_def_506 )
2106
2110
  tree_for_string_literal69 = @adaptor.create_with_payload( string_literal69 )
2107
2111
  @adaptor.add_child( root_0, tree_for_string_literal69 )
@@ -2112,7 +2116,7 @@ module SfpLang
2112
2116
  @state.following.pop
2113
2117
  @adaptor.add_child( root_0, object_schema70.tree )
2114
2118
 
2115
- # at line 226:24: ( object_schemata )*
2119
+ # at line 230:24: ( object_schemata )*
2116
2120
  while true # decision 27
2117
2121
  alt_27 = 2
2118
2122
  look_27_0 = @input.peek( 1 )
@@ -2123,7 +2127,7 @@ module SfpLang
2123
2127
  end
2124
2128
  case alt_27
2125
2129
  when 1
2126
- # at line 226:25: object_schemata
2130
+ # at line 230:25: object_schemata
2127
2131
  @state.following.push( TOKENS_FOLLOWING_object_schemata_IN_object_def_511 )
2128
2132
  object_schemata71 = object_schemata
2129
2133
  @state.following.pop
@@ -2137,7 +2141,7 @@ module SfpLang
2137
2141
 
2138
2142
 
2139
2143
  end
2140
- # at line 227:3: ( object_body )?
2144
+ # at line 231:3: ( object_body )?
2141
2145
  alt_29 = 2
2142
2146
  look_29_0 = @input.peek( 1 )
2143
2147
 
@@ -2146,7 +2150,7 @@ module SfpLang
2146
2150
  end
2147
2151
  case alt_29
2148
2152
  when 1
2149
- # at line 227:3: object_body
2153
+ # at line 231:3: object_body
2150
2154
  @state.following.push( TOKENS_FOLLOWING_object_body_IN_object_def_520 )
2151
2155
  object_body72 = object_body
2152
2156
  @state.following.pop
@@ -2206,7 +2210,7 @@ module SfpLang
2206
2210
  # parser rule object_body
2207
2211
  #
2208
2212
  # (in SfpLang.g)
2209
- # 247:1: object_body : '{' ( NL )* ( object_attribute | procedure ( NL )* )* '}' ;
2213
+ # 251:1: object_body : '{' ( NL )* ( object_attribute | procedure ( NL )* )* '}' ;
2210
2214
  #
2211
2215
  def object_body
2212
2216
  # -> uncomment the next line to manually enable rule tracing
@@ -2238,13 +2242,13 @@ module SfpLang
2238
2242
  root_0 = @adaptor.create_flat_list
2239
2243
 
2240
2244
 
2241
- # at line 248:4: '{' ( NL )* ( object_attribute | procedure ( NL )* )* '}'
2245
+ # at line 252:4: '{' ( NL )* ( object_attribute | procedure ( NL )* )* '}'
2242
2246
  char_literal73 = match( T__84, TOKENS_FOLLOWING_T__84_IN_object_body_536 )
2243
2247
  tree_for_char_literal73 = @adaptor.create_with_payload( char_literal73 )
2244
2248
  @adaptor.add_child( root_0, tree_for_char_literal73 )
2245
2249
 
2246
2250
 
2247
- # at line 248:8: ( NL )*
2251
+ # at line 252:8: ( NL )*
2248
2252
  while true # decision 30
2249
2253
  alt_30 = 2
2250
2254
  look_30_0 = @input.peek( 1 )
@@ -2255,7 +2259,7 @@ module SfpLang
2255
2259
  end
2256
2260
  case alt_30
2257
2261
  when 1
2258
- # at line 248:8: NL
2262
+ # at line 252:8: NL
2259
2263
  __NL74__ = match( NL, TOKENS_FOLLOWING_NL_IN_object_body_538 )
2260
2264
  tree_for_NL74 = @adaptor.create_with_payload( __NL74__ )
2261
2265
  @adaptor.add_child( root_0, tree_for_NL74 )
@@ -2267,7 +2271,7 @@ module SfpLang
2267
2271
  end
2268
2272
  end # loop for decision 30
2269
2273
 
2270
- # at line 248:12: ( object_attribute | procedure ( NL )* )*
2274
+ # at line 252:12: ( object_attribute | procedure ( NL )* )*
2271
2275
  while true # decision 32
2272
2276
  alt_32 = 3
2273
2277
  look_32_0 = @input.peek( 1 )
@@ -2280,7 +2284,7 @@ module SfpLang
2280
2284
  end
2281
2285
  case alt_32
2282
2286
  when 1
2283
- # at line 248:14: object_attribute
2287
+ # at line 252:14: object_attribute
2284
2288
  @state.following.push( TOKENS_FOLLOWING_object_attribute_IN_object_body_543 )
2285
2289
  object_attribute75 = object_attribute
2286
2290
  @state.following.pop
@@ -2288,13 +2292,13 @@ module SfpLang
2288
2292
 
2289
2293
 
2290
2294
  when 2
2291
- # at line 248:33: procedure ( NL )*
2295
+ # at line 252:33: procedure ( NL )*
2292
2296
  @state.following.push( TOKENS_FOLLOWING_procedure_IN_object_body_547 )
2293
2297
  procedure76 = procedure
2294
2298
  @state.following.pop
2295
2299
  @adaptor.add_child( root_0, procedure76.tree )
2296
2300
 
2297
- # at line 248:43: ( NL )*
2301
+ # at line 252:43: ( NL )*
2298
2302
  while true # decision 31
2299
2303
  alt_31 = 2
2300
2304
  look_31_0 = @input.peek( 1 )
@@ -2305,7 +2309,7 @@ module SfpLang
2305
2309
  end
2306
2310
  case alt_31
2307
2311
  when 1
2308
- # at line 248:43: NL
2312
+ # at line 252:43: NL
2309
2313
  __NL77__ = match( NL, TOKENS_FOLLOWING_NL_IN_object_body_549 )
2310
2314
  tree_for_NL77 = @adaptor.create_with_payload( __NL77__ )
2311
2315
  @adaptor.add_child( root_0, tree_for_NL77 )
@@ -2359,7 +2363,7 @@ module SfpLang
2359
2363
  # parser rule object_attribute
2360
2364
  #
2361
2365
  # (in SfpLang.g)
2362
- # 251:1: object_attribute : ( attribute | ID equals_op NULL ( NL )+ );
2366
+ # 255:1: object_attribute : ( attribute | ID equals_op NULL ( NL )+ );
2363
2367
  #
2364
2368
  def object_attribute
2365
2369
  # -> uncomment the next line to manually enable rule tracing
@@ -2386,7 +2390,7 @@ module SfpLang
2386
2390
  tree_for_NL83 = nil
2387
2391
 
2388
2392
  begin
2389
- # at line 252:2: ( attribute | ID equals_op NULL ( NL )+ )
2393
+ # at line 256:2: ( attribute | ID equals_op NULL ( NL )+ )
2390
2394
  alt_34 = 2
2391
2395
  look_34_0 = @input.peek( 1 )
2392
2396
 
@@ -2421,7 +2425,7 @@ module SfpLang
2421
2425
  root_0 = @adaptor.create_flat_list
2422
2426
 
2423
2427
 
2424
- # at line 252:4: attribute
2428
+ # at line 256:4: attribute
2425
2429
  @state.following.push( TOKENS_FOLLOWING_attribute_IN_object_attribute_566 )
2426
2430
  attribute79 = attribute
2427
2431
  @state.following.pop
@@ -2432,7 +2436,7 @@ module SfpLang
2432
2436
  root_0 = @adaptor.create_flat_list
2433
2437
 
2434
2438
 
2435
- # at line 253:4: ID equals_op NULL ( NL )+
2439
+ # at line 257:4: ID equals_op NULL ( NL )+
2436
2440
  __ID80__ = match( ID, TOKENS_FOLLOWING_ID_IN_object_attribute_571 )
2437
2441
  tree_for_ID80 = @adaptor.create_with_payload( __ID80__ )
2438
2442
  @adaptor.add_child( root_0, tree_for_ID80 )
@@ -2448,7 +2452,7 @@ module SfpLang
2448
2452
  @adaptor.add_child( root_0, tree_for_NULL82 )
2449
2453
 
2450
2454
 
2451
- # at file 253:22: ( NL )+
2455
+ # at file 257:22: ( NL )+
2452
2456
  match_count_33 = 0
2453
2457
  while true
2454
2458
  alt_33 = 2
@@ -2460,7 +2464,7 @@ module SfpLang
2460
2464
  end
2461
2465
  case alt_33
2462
2466
  when 1
2463
- # at line 253:22: NL
2467
+ # at line 257:22: NL
2464
2468
  __NL83__ = match( NL, TOKENS_FOLLOWING_NL_IN_object_attribute_577 )
2465
2469
  tree_for_NL83 = @adaptor.create_with_payload( __NL83__ )
2466
2470
  @adaptor.add_child( root_0, tree_for_NL83 )
@@ -2515,7 +2519,7 @@ module SfpLang
2515
2519
  # parser rule state_dependency
2516
2520
  #
2517
2521
  # (in SfpLang.g)
2518
- # 257:1: state_dependency : 'if' dep_effect ( NL )* 'then' ( NL )* '{' ( NL )* constraint_body '}' ( ( NL )* 'or' ( NL )* '{' ( NL )* constraint_body '}' )* ( NL )+ ;
2522
+ # 261:1: state_dependency : 'if' dep_effect ( NL )* 'then' ( NL )* '{' ( NL )* constraint_body '}' ( ( NL )* 'or' ( NL )* '{' ( NL )* constraint_body '}' )* ( NL )+ ;
2519
2523
  #
2520
2524
  def state_dependency
2521
2525
  # -> uncomment the next line to manually enable rule tracing
@@ -2568,7 +2572,7 @@ module SfpLang
2568
2572
  root_0 = @adaptor.create_flat_list
2569
2573
 
2570
2574
 
2571
- # at line 258:4: 'if' dep_effect ( NL )* 'then' ( NL )* '{' ( NL )* constraint_body '}' ( ( NL )* 'or' ( NL )* '{' ( NL )* constraint_body '}' )* ( NL )+
2575
+ # at line 262:4: 'if' dep_effect ( NL )* 'then' ( NL )* '{' ( NL )* constraint_body '}' ( ( NL )* 'or' ( NL )* '{' ( NL )* constraint_body '}' )* ( NL )+
2572
2576
  string_literal84 = match( T__62, TOKENS_FOLLOWING_T__62_IN_state_dependency_593 )
2573
2577
  tree_for_string_literal84 = @adaptor.create_with_payload( string_literal84 )
2574
2578
  @adaptor.add_child( root_0, tree_for_string_literal84 )
@@ -2579,7 +2583,7 @@ module SfpLang
2579
2583
  @state.following.pop
2580
2584
  @adaptor.add_child( root_0, dep_effect85.tree )
2581
2585
 
2582
- # at line 259:14: ( NL )*
2586
+ # at line 263:14: ( NL )*
2583
2587
  while true # decision 35
2584
2588
  alt_35 = 2
2585
2589
  look_35_0 = @input.peek( 1 )
@@ -2590,7 +2594,7 @@ module SfpLang
2590
2594
  end
2591
2595
  case alt_35
2592
2596
  when 1
2593
- # at line 259:14: NL
2597
+ # at line 263:14: NL
2594
2598
  __NL86__ = match( NL, TOKENS_FOLLOWING_NL_IN_state_dependency_599 )
2595
2599
  tree_for_NL86 = @adaptor.create_with_payload( __NL86__ )
2596
2600
  @adaptor.add_child( root_0, tree_for_NL86 )
@@ -2607,7 +2611,7 @@ module SfpLang
2607
2611
  @adaptor.add_child( root_0, tree_for_string_literal87 )
2608
2612
 
2609
2613
 
2610
- # at line 259:25: ( NL )*
2614
+ # at line 263:25: ( NL )*
2611
2615
  while true # decision 36
2612
2616
  alt_36 = 2
2613
2617
  look_36_0 = @input.peek( 1 )
@@ -2618,7 +2622,7 @@ module SfpLang
2618
2622
  end
2619
2623
  case alt_36
2620
2624
  when 1
2621
- # at line 259:25: NL
2625
+ # at line 263:25: NL
2622
2626
  __NL88__ = match( NL, TOKENS_FOLLOWING_NL_IN_state_dependency_604 )
2623
2627
  tree_for_NL88 = @adaptor.create_with_payload( __NL88__ )
2624
2628
  @adaptor.add_child( root_0, tree_for_NL88 )
@@ -2635,7 +2639,7 @@ module SfpLang
2635
2639
  @adaptor.add_child( root_0, tree_for_char_literal89 )
2636
2640
 
2637
2641
 
2638
- # at line 260:3: ( NL )*
2642
+ # at line 264:3: ( NL )*
2639
2643
  while true # decision 37
2640
2644
  alt_37 = 2
2641
2645
  look_37_0 = @input.peek( 1 )
@@ -2646,7 +2650,7 @@ module SfpLang
2646
2650
  end
2647
2651
  case alt_37
2648
2652
  when 1
2649
- # at line 260:3: NL
2653
+ # at line 264:3: NL
2650
2654
  __NL90__ = match( NL, TOKENS_FOLLOWING_NL_IN_state_dependency_611 )
2651
2655
  tree_for_NL90 = @adaptor.create_with_payload( __NL90__ )
2652
2656
  @adaptor.add_child( root_0, tree_for_NL90 )
@@ -2668,14 +2672,14 @@ module SfpLang
2668
2672
  @adaptor.add_child( root_0, tree_for_char_literal92 )
2669
2673
 
2670
2674
 
2671
- # at line 262:3: ( ( NL )* 'or' ( NL )* '{' ( NL )* constraint_body '}' )*
2675
+ # at line 266:3: ( ( NL )* 'or' ( NL )* '{' ( NL )* constraint_body '}' )*
2672
2676
  while true # decision 41
2673
2677
  alt_41 = 2
2674
2678
  alt_41 = @dfa41.predict( @input )
2675
2679
  case alt_41
2676
2680
  when 1
2677
- # at line 262:5: ( NL )* 'or' ( NL )* '{' ( NL )* constraint_body '}'
2678
- # at line 262:5: ( NL )*
2681
+ # at line 266:5: ( NL )* 'or' ( NL )* '{' ( NL )* constraint_body '}'
2682
+ # at line 266:5: ( NL )*
2679
2683
  while true # decision 38
2680
2684
  alt_38 = 2
2681
2685
  look_38_0 = @input.peek( 1 )
@@ -2686,7 +2690,7 @@ module SfpLang
2686
2690
  end
2687
2691
  case alt_38
2688
2692
  when 1
2689
- # at line 262:5: NL
2693
+ # at line 266:5: NL
2690
2694
  __NL93__ = match( NL, TOKENS_FOLLOWING_NL_IN_state_dependency_625 )
2691
2695
  tree_for_NL93 = @adaptor.create_with_payload( __NL93__ )
2692
2696
  @adaptor.add_child( root_0, tree_for_NL93 )
@@ -2703,7 +2707,7 @@ module SfpLang
2703
2707
  @adaptor.add_child( root_0, tree_for_string_literal94 )
2704
2708
 
2705
2709
 
2706
- # at line 262:14: ( NL )*
2710
+ # at line 266:14: ( NL )*
2707
2711
  while true # decision 39
2708
2712
  alt_39 = 2
2709
2713
  look_39_0 = @input.peek( 1 )
@@ -2714,7 +2718,7 @@ module SfpLang
2714
2718
  end
2715
2719
  case alt_39
2716
2720
  when 1
2717
- # at line 262:14: NL
2721
+ # at line 266:14: NL
2718
2722
  __NL95__ = match( NL, TOKENS_FOLLOWING_NL_IN_state_dependency_630 )
2719
2723
  tree_for_NL95 = @adaptor.create_with_payload( __NL95__ )
2720
2724
  @adaptor.add_child( root_0, tree_for_NL95 )
@@ -2731,7 +2735,7 @@ module SfpLang
2731
2735
  @adaptor.add_child( root_0, tree_for_char_literal96 )
2732
2736
 
2733
2737
 
2734
- # at line 263:3: ( NL )*
2738
+ # at line 267:3: ( NL )*
2735
2739
  while true # decision 40
2736
2740
  alt_40 = 2
2737
2741
  look_40_0 = @input.peek( 1 )
@@ -2742,7 +2746,7 @@ module SfpLang
2742
2746
  end
2743
2747
  case alt_40
2744
2748
  when 1
2745
- # at line 263:3: NL
2749
+ # at line 267:3: NL
2746
2750
  __NL97__ = match( NL, TOKENS_FOLLOWING_NL_IN_state_dependency_637 )
2747
2751
  tree_for_NL97 = @adaptor.create_with_payload( __NL97__ )
2748
2752
  @adaptor.add_child( root_0, tree_for_NL97 )
@@ -2770,7 +2774,7 @@ module SfpLang
2770
2774
  end
2771
2775
  end # loop for decision 41
2772
2776
 
2773
- # at file 265:3: ( NL )+
2777
+ # at file 269:3: ( NL )+
2774
2778
  match_count_42 = 0
2775
2779
  while true
2776
2780
  alt_42 = 2
@@ -2782,7 +2786,7 @@ module SfpLang
2782
2786
  end
2783
2787
  case alt_42
2784
2788
  when 1
2785
- # at line 265:3: NL
2789
+ # at line 269:3: NL
2786
2790
  __NL100__ = match( NL, TOKENS_FOLLOWING_NL_IN_state_dependency_650 )
2787
2791
  tree_for_NL100 = @adaptor.create_with_payload( __NL100__ )
2788
2792
  @adaptor.add_child( root_0, tree_for_NL100 )
@@ -2831,7 +2835,7 @@ module SfpLang
2831
2835
  # parser rule dep_effect
2832
2836
  #
2833
2837
  # (in SfpLang.g)
2834
- # 268:1: dep_effect : reference equals_op ( value | NULL ) ;
2838
+ # 272:1: dep_effect : reference equals_op ( value | NULL ) ;
2835
2839
  #
2836
2840
  def dep_effect
2837
2841
  # -> uncomment the next line to manually enable rule tracing
@@ -2858,7 +2862,7 @@ module SfpLang
2858
2862
  root_0 = @adaptor.create_flat_list
2859
2863
 
2860
2864
 
2861
- # at line 269:4: reference equals_op ( value | NULL )
2865
+ # at line 273:4: reference equals_op ( value | NULL )
2862
2866
  @state.following.push( TOKENS_FOLLOWING_reference_IN_dep_effect_662 )
2863
2867
  reference101 = reference
2864
2868
  @state.following.pop
@@ -2869,7 +2873,7 @@ module SfpLang
2869
2873
  @state.following.pop
2870
2874
  @adaptor.add_child( root_0, equals_op102.tree )
2871
2875
 
2872
- # at line 270:3: ( value | NULL )
2876
+ # at line 274:3: ( value | NULL )
2873
2877
  alt_43 = 2
2874
2878
  look_43_0 = @input.peek( 1 )
2875
2879
 
@@ -2883,7 +2887,7 @@ module SfpLang
2883
2887
  end
2884
2888
  case alt_43
2885
2889
  when 1
2886
- # at line 270:5: value
2890
+ # at line 274:5: value
2887
2891
  @state.following.push( TOKENS_FOLLOWING_value_IN_dep_effect_671 )
2888
2892
  value103 = value
2889
2893
  @state.following.pop
@@ -2891,7 +2895,7 @@ module SfpLang
2891
2895
 
2892
2896
 
2893
2897
  when 2
2894
- # at line 271:5: NULL
2898
+ # at line 275:5: NULL
2895
2899
  __NULL104__ = match( NULL, TOKENS_FOLLOWING_NULL_IN_dep_effect_677 )
2896
2900
  tree_for_NULL104 = @adaptor.create_with_payload( __NULL104__ )
2897
2901
  @adaptor.add_child( root_0, tree_for_NULL104 )
@@ -2930,7 +2934,7 @@ module SfpLang
2930
2934
  # parser rule op_param
2931
2935
  #
2932
2936
  # (in SfpLang.g)
2933
- # 275:1: op_param : ID equals_op reference ( NL )+ ;
2937
+ # 279:1: op_param : ID equals_op reference ( NL )+ ;
2934
2938
  #
2935
2939
  def op_param
2936
2940
  # -> uncomment the next line to manually enable rule tracing
@@ -2958,7 +2962,7 @@ module SfpLang
2958
2962
  root_0 = @adaptor.create_flat_list
2959
2963
 
2960
2964
 
2961
- # at line 276:4: ID equals_op reference ( NL )+
2965
+ # at line 280:4: ID equals_op reference ( NL )+
2962
2966
  __ID105__ = match( ID, TOKENS_FOLLOWING_ID_IN_op_param_693 )
2963
2967
  tree_for_ID105 = @adaptor.create_with_payload( __ID105__ )
2964
2968
  @adaptor.add_child( root_0, tree_for_ID105 )
@@ -2974,7 +2978,7 @@ module SfpLang
2974
2978
  @state.following.pop
2975
2979
  @adaptor.add_child( root_0, reference107.tree )
2976
2980
 
2977
- # at file 276:27: ( NL )+
2981
+ # at file 280:27: ( NL )+
2978
2982
  match_count_44 = 0
2979
2983
  while true
2980
2984
  alt_44 = 2
@@ -2986,7 +2990,7 @@ module SfpLang
2986
2990
  end
2987
2991
  case alt_44
2988
2992
  when 1
2989
- # at line 276:27: NL
2993
+ # at line 280:27: NL
2990
2994
  __NL108__ = match( NL, TOKENS_FOLLOWING_NL_IN_op_param_699 )
2991
2995
  tree_for_NL108 = @adaptor.create_with_payload( __NL108__ )
2992
2996
  @adaptor.add_child( root_0, tree_for_NL108 )
@@ -3040,7 +3044,7 @@ module SfpLang
3040
3044
  # parser rule op_conditions
3041
3045
  #
3042
3046
  # (in SfpLang.g)
3043
- # 280:1: op_conditions : ( 'conditions' | 'condition' ) '{' ( NL )* ( op_statement )* '}' ( NL )+ ;
3047
+ # 284:1: op_conditions : ( 'conditions' | 'condition' ) '{' ( NL )* ( op_statement )* '}' ( NL )+ ;
3044
3048
  #
3045
3049
  def op_conditions
3046
3050
  # -> uncomment the next line to manually enable rule tracing
@@ -3073,7 +3077,7 @@ module SfpLang
3073
3077
  root_0 = @adaptor.create_flat_list
3074
3078
 
3075
3079
 
3076
- # at line 281:4: ( 'conditions' | 'condition' ) '{' ( NL )* ( op_statement )* '}' ( NL )+
3080
+ # at line 285:4: ( 'conditions' | 'condition' ) '{' ( NL )* ( op_statement )* '}' ( NL )+
3077
3081
  set109 = @input.look
3078
3082
 
3079
3083
  if @input.peek( 1 ).between?( T__45, T__46 )
@@ -3094,7 +3098,7 @@ module SfpLang
3094
3098
  @adaptor.add_child( root_0, tree_for_char_literal110 )
3095
3099
 
3096
3100
 
3097
- # at line 281:37: ( NL )*
3101
+ # at line 285:37: ( NL )*
3098
3102
  while true # decision 45
3099
3103
  alt_45 = 2
3100
3104
  look_45_0 = @input.peek( 1 )
@@ -3105,7 +3109,7 @@ module SfpLang
3105
3109
  end
3106
3110
  case alt_45
3107
3111
  when 1
3108
- # at line 281:37: NL
3112
+ # at line 285:37: NL
3109
3113
  __NL111__ = match( NL, TOKENS_FOLLOWING_NL_IN_op_conditions_725 )
3110
3114
  tree_for_NL111 = @adaptor.create_with_payload( __NL111__ )
3111
3115
  @adaptor.add_child( root_0, tree_for_NL111 )
@@ -3125,7 +3129,7 @@ module SfpLang
3125
3129
 
3126
3130
  # <-- action
3127
3131
 
3128
- # at line 286:3: ( op_statement )*
3132
+ # at line 290:3: ( op_statement )*
3129
3133
  while true # decision 46
3130
3134
  alt_46 = 2
3131
3135
  look_46_0 = @input.peek( 1 )
@@ -3136,7 +3140,7 @@ module SfpLang
3136
3140
  end
3137
3141
  case alt_46
3138
3142
  when 1
3139
- # at line 286:3: op_statement
3143
+ # at line 290:3: op_statement
3140
3144
  @state.following.push( TOKENS_FOLLOWING_op_statement_IN_op_conditions_734 )
3141
3145
  op_statement112 = op_statement
3142
3146
  @state.following.pop
@@ -3153,7 +3157,7 @@ module SfpLang
3153
3157
  @adaptor.add_child( root_0, tree_for_char_literal113 )
3154
3158
 
3155
3159
 
3156
- # at file 287:7: ( NL )+
3160
+ # at file 291:7: ( NL )+
3157
3161
  match_count_47 = 0
3158
3162
  while true
3159
3163
  alt_47 = 2
@@ -3165,7 +3169,7 @@ module SfpLang
3165
3169
  end
3166
3170
  case alt_47
3167
3171
  when 1
3168
- # at line 287:7: NL
3172
+ # at line 291:7: NL
3169
3173
  __NL114__ = match( NL, TOKENS_FOLLOWING_NL_IN_op_conditions_741 )
3170
3174
  tree_for_NL114 = @adaptor.create_with_payload( __NL114__ )
3171
3175
  @adaptor.add_child( root_0, tree_for_NL114 )
@@ -3219,7 +3223,7 @@ module SfpLang
3219
3223
  # parser rule op_effects
3220
3224
  #
3221
3225
  # (in SfpLang.g)
3222
- # 291:1: op_effects : 'effects' '{' ( NL )* ( op_statement )* '}' ( NL )+ ;
3226
+ # 295:1: op_effects : 'effects' '{' ( NL )* ( op_statement )* '}' ( NL )+ ;
3223
3227
  #
3224
3228
  def op_effects
3225
3229
  # -> uncomment the next line to manually enable rule tracing
@@ -3252,7 +3256,7 @@ module SfpLang
3252
3256
  root_0 = @adaptor.create_flat_list
3253
3257
 
3254
3258
 
3255
- # at line 292:4: 'effects' '{' ( NL )* ( op_statement )* '}' ( NL )+
3259
+ # at line 296:4: 'effects' '{' ( NL )* ( op_statement )* '}' ( NL )+
3256
3260
  string_literal115 = match( T__51, TOKENS_FOLLOWING_T__51_IN_op_effects_757 )
3257
3261
  tree_for_string_literal115 = @adaptor.create_with_payload( string_literal115 )
3258
3262
  @adaptor.add_child( root_0, tree_for_string_literal115 )
@@ -3263,7 +3267,7 @@ module SfpLang
3263
3267
  @adaptor.add_child( root_0, tree_for_char_literal116 )
3264
3268
 
3265
3269
 
3266
- # at line 292:18: ( NL )*
3270
+ # at line 296:18: ( NL )*
3267
3271
  while true # decision 48
3268
3272
  alt_48 = 2
3269
3273
  look_48_0 = @input.peek( 1 )
@@ -3274,7 +3278,7 @@ module SfpLang
3274
3278
  end
3275
3279
  case alt_48
3276
3280
  when 1
3277
- # at line 292:18: NL
3281
+ # at line 296:18: NL
3278
3282
  __NL117__ = match( NL, TOKENS_FOLLOWING_NL_IN_op_effects_761 )
3279
3283
  tree_for_NL117 = @adaptor.create_with_payload( __NL117__ )
3280
3284
  @adaptor.add_child( root_0, tree_for_NL117 )
@@ -3294,7 +3298,7 @@ module SfpLang
3294
3298
 
3295
3299
  # <-- action
3296
3300
 
3297
- # at line 297:3: ( op_statement )*
3301
+ # at line 301:3: ( op_statement )*
3298
3302
  while true # decision 49
3299
3303
  alt_49 = 2
3300
3304
  look_49_0 = @input.peek( 1 )
@@ -3305,7 +3309,7 @@ module SfpLang
3305
3309
  end
3306
3310
  case alt_49
3307
3311
  when 1
3308
- # at line 297:3: op_statement
3312
+ # at line 301:3: op_statement
3309
3313
  @state.following.push( TOKENS_FOLLOWING_op_statement_IN_op_effects_770 )
3310
3314
  op_statement118 = op_statement
3311
3315
  @state.following.pop
@@ -3322,7 +3326,7 @@ module SfpLang
3322
3326
  @adaptor.add_child( root_0, tree_for_char_literal119 )
3323
3327
 
3324
3328
 
3325
- # at file 298:7: ( NL )+
3329
+ # at file 302:7: ( NL )+
3326
3330
  match_count_50 = 0
3327
3331
  while true
3328
3332
  alt_50 = 2
@@ -3334,7 +3338,7 @@ module SfpLang
3334
3338
  end
3335
3339
  case alt_50
3336
3340
  when 1
3337
- # at line 298:7: NL
3341
+ # at line 302:7: NL
3338
3342
  __NL120__ = match( NL, TOKENS_FOLLOWING_NL_IN_op_effects_777 )
3339
3343
  tree_for_NL120 = @adaptor.create_with_payload( __NL120__ )
3340
3344
  @adaptor.add_child( root_0, tree_for_NL120 )
@@ -3388,7 +3392,7 @@ module SfpLang
3388
3392
  # parser rule op_statement
3389
3393
  #
3390
3394
  # (in SfpLang.g)
3391
- # 302:1: op_statement : reference equals_op value ( NL )+ ;
3395
+ # 306:1: op_statement : reference equals_op value ( NL )+ ;
3392
3396
  #
3393
3397
  def op_statement
3394
3398
  # -> uncomment the next line to manually enable rule tracing
@@ -3415,7 +3419,7 @@ module SfpLang
3415
3419
  root_0 = @adaptor.create_flat_list
3416
3420
 
3417
3421
 
3418
- # at line 303:4: reference equals_op value ( NL )+
3422
+ # at line 307:4: reference equals_op value ( NL )+
3419
3423
  @state.following.push( TOKENS_FOLLOWING_reference_IN_op_statement_793 )
3420
3424
  reference121 = reference
3421
3425
  @state.following.pop
@@ -3431,7 +3435,7 @@ module SfpLang
3431
3435
  @state.following.pop
3432
3436
  @adaptor.add_child( root_0, value123.tree )
3433
3437
 
3434
- # at file 303:30: ( NL )+
3438
+ # at file 307:30: ( NL )+
3435
3439
  match_count_51 = 0
3436
3440
  while true
3437
3441
  alt_51 = 2
@@ -3443,7 +3447,7 @@ module SfpLang
3443
3447
  end
3444
3448
  case alt_51
3445
3449
  when 1
3446
- # at line 303:30: NL
3450
+ # at line 307:30: NL
3447
3451
  __NL124__ = match( NL, TOKENS_FOLLOWING_NL_IN_op_statement_799 )
3448
3452
  tree_for_NL124 = @adaptor.create_with_payload( __NL124__ )
3449
3453
  @adaptor.add_child( root_0, tree_for_NL124 )
@@ -3497,7 +3501,7 @@ module SfpLang
3497
3501
  # parser rule procedure
3498
3502
  #
3499
3503
  # (in SfpLang.g)
3500
- # 307:1: procedure : ( 'synchronized' )? ( 'procedure' | 'sub' ) ID ( parameters )? '{' ( NL )* ( 'cost' equals_op NUMBER ( NL )+ )? ( conditions )? effects '}' ;
3504
+ # 311:1: procedure : ( 'synchronized' )? ( 'procedure' | 'sub' ) ID ( parameters )? '{' ( NL )* ( 'cost' equals_op NUMBER ( NL )+ )? ( conditions )? effects '}' ;
3501
3505
  #
3502
3506
  def procedure
3503
3507
  # -> uncomment the next line to manually enable rule tracing
@@ -3541,12 +3545,12 @@ module SfpLang
3541
3545
  root_0 = @adaptor.create_flat_list
3542
3546
 
3543
3547
 
3544
- # at line 308:4: ( 'synchronized' )? ( 'procedure' | 'sub' ) ID ( parameters )? '{' ( NL )* ( 'cost' equals_op NUMBER ( NL )+ )? ( conditions )? effects '}'
3548
+ # at line 312:4: ( 'synchronized' )? ( 'procedure' | 'sub' ) ID ( parameters )? '{' ( NL )* ( 'cost' equals_op NUMBER ( NL )+ )? ( conditions )? effects '}'
3545
3549
  # --> action
3546
3550
  @synchronized = false
3547
3551
  # <-- action
3548
3552
 
3549
- # at line 309:3: ( 'synchronized' )?
3553
+ # at line 313:3: ( 'synchronized' )?
3550
3554
  alt_52 = 2
3551
3555
  look_52_0 = @input.peek( 1 )
3552
3556
 
@@ -3555,7 +3559,7 @@ module SfpLang
3555
3559
  end
3556
3560
  case alt_52
3557
3561
  when 1
3558
- # at line 309:4: 'synchronized'
3562
+ # at line 313:4: 'synchronized'
3559
3563
  string_literal125 = match( T__80, TOKENS_FOLLOWING_T__80_IN_procedure_820 )
3560
3564
  tree_for_string_literal125 = @adaptor.create_with_payload( string_literal125 )
3561
3565
  @adaptor.add_child( root_0, tree_for_string_literal125 )
@@ -3604,7 +3608,7 @@ module SfpLang
3604
3608
 
3605
3609
  # <-- action
3606
3610
 
3607
- # at line 322:3: ( parameters )?
3611
+ # at line 326:3: ( parameters )?
3608
3612
  alt_53 = 2
3609
3613
  look_53_0 = @input.peek( 1 )
3610
3614
 
@@ -3613,7 +3617,7 @@ module SfpLang
3613
3617
  end
3614
3618
  case alt_53
3615
3619
  when 1
3616
- # at line 322:3: parameters
3620
+ # at line 326:3: parameters
3617
3621
  @state.following.push( TOKENS_FOLLOWING_parameters_IN_procedure_842 )
3618
3622
  parameters128 = parameters
3619
3623
  @state.following.pop
@@ -3626,7 +3630,7 @@ module SfpLang
3626
3630
  @adaptor.add_child( root_0, tree_for_char_literal129 )
3627
3631
 
3628
3632
 
3629
- # at line 322:19: ( NL )*
3633
+ # at line 326:19: ( NL )*
3630
3634
  while true # decision 54
3631
3635
  alt_54 = 2
3632
3636
  look_54_0 = @input.peek( 1 )
@@ -3637,7 +3641,7 @@ module SfpLang
3637
3641
  end
3638
3642
  case alt_54
3639
3643
  when 1
3640
- # at line 322:19: NL
3644
+ # at line 326:19: NL
3641
3645
  __NL130__ = match( NL, TOKENS_FOLLOWING_NL_IN_procedure_847 )
3642
3646
  tree_for_NL130 = @adaptor.create_with_payload( __NL130__ )
3643
3647
  @adaptor.add_child( root_0, tree_for_NL130 )
@@ -3649,7 +3653,7 @@ module SfpLang
3649
3653
  end
3650
3654
  end # loop for decision 54
3651
3655
 
3652
- # at line 323:3: ( 'cost' equals_op NUMBER ( NL )+ )?
3656
+ # at line 327:3: ( 'cost' equals_op NUMBER ( NL )+ )?
3653
3657
  alt_56 = 2
3654
3658
  look_56_0 = @input.peek( 1 )
3655
3659
 
@@ -3658,7 +3662,7 @@ module SfpLang
3658
3662
  end
3659
3663
  case alt_56
3660
3664
  when 1
3661
- # at line 323:5: 'cost' equals_op NUMBER ( NL )+
3665
+ # at line 327:5: 'cost' equals_op NUMBER ( NL )+
3662
3666
  string_literal131 = match( T__48, TOKENS_FOLLOWING_T__48_IN_procedure_855 )
3663
3667
  tree_for_string_literal131 = @adaptor.create_with_payload( string_literal131 )
3664
3668
  @adaptor.add_child( root_0, tree_for_string_literal131 )
@@ -3679,7 +3683,7 @@ module SfpLang
3679
3683
  @now['_cost'] = __NUMBER133__.text.to_i
3680
3684
  # <-- action
3681
3685
 
3682
- # at file 325:4: ( NL )+
3686
+ # at file 329:4: ( NL )+
3683
3687
  match_count_55 = 0
3684
3688
  while true
3685
3689
  alt_55 = 2
@@ -3691,7 +3695,7 @@ module SfpLang
3691
3695
  end
3692
3696
  case alt_55
3693
3697
  when 1
3694
- # at line 325:4: NL
3698
+ # at line 329:4: NL
3695
3699
  __NL134__ = match( NL, TOKENS_FOLLOWING_NL_IN_procedure_869 )
3696
3700
  tree_for_NL134 = @adaptor.create_with_payload( __NL134__ )
3697
3701
  @adaptor.add_child( root_0, tree_for_NL134 )
@@ -3711,7 +3715,7 @@ module SfpLang
3711
3715
 
3712
3716
 
3713
3717
  end
3714
- # at line 327:3: ( conditions )?
3718
+ # at line 331:3: ( conditions )?
3715
3719
  alt_57 = 2
3716
3720
  look_57_0 = @input.peek( 1 )
3717
3721
 
@@ -3720,7 +3724,7 @@ module SfpLang
3720
3724
  end
3721
3725
  case alt_57
3722
3726
  when 1
3723
- # at line 327:3: conditions
3727
+ # at line 331:3: conditions
3724
3728
  @state.following.push( TOKENS_FOLLOWING_conditions_IN_procedure_879 )
3725
3729
  conditions135 = conditions
3726
3730
  @state.following.pop
@@ -3774,7 +3778,7 @@ module SfpLang
3774
3778
  # parser rule parameters
3775
3779
  #
3776
3780
  # (in SfpLang.g)
3777
- # 331:1: parameters : '(' parameter ( ',' ( NL )* parameter )* ')' ;
3781
+ # 335:1: parameters : '(' parameter ( ',' ( NL )* parameter )* ')' ;
3778
3782
  #
3779
3783
  def parameters
3780
3784
  # -> uncomment the next line to manually enable rule tracing
@@ -3806,7 +3810,7 @@ module SfpLang
3806
3810
  root_0 = @adaptor.create_flat_list
3807
3811
 
3808
3812
 
3809
- # at line 332:4: '(' parameter ( ',' ( NL )* parameter )* ')'
3813
+ # at line 336:4: '(' parameter ( ',' ( NL )* parameter )* ')'
3810
3814
  char_literal138 = match( T__19, TOKENS_FOLLOWING_T__19_IN_parameters_899 )
3811
3815
  tree_for_char_literal138 = @adaptor.create_with_payload( char_literal138 )
3812
3816
  @adaptor.add_child( root_0, tree_for_char_literal138 )
@@ -3817,7 +3821,7 @@ module SfpLang
3817
3821
  @state.following.pop
3818
3822
  @adaptor.add_child( root_0, parameter139.tree )
3819
3823
 
3820
- # at line 332:18: ( ',' ( NL )* parameter )*
3824
+ # at line 336:18: ( ',' ( NL )* parameter )*
3821
3825
  while true # decision 59
3822
3826
  alt_59 = 2
3823
3827
  look_59_0 = @input.peek( 1 )
@@ -3828,13 +3832,13 @@ module SfpLang
3828
3832
  end
3829
3833
  case alt_59
3830
3834
  when 1
3831
- # at line 332:19: ',' ( NL )* parameter
3835
+ # at line 336:19: ',' ( NL )* parameter
3832
3836
  char_literal140 = match( T__23, TOKENS_FOLLOWING_T__23_IN_parameters_904 )
3833
3837
  tree_for_char_literal140 = @adaptor.create_with_payload( char_literal140 )
3834
3838
  @adaptor.add_child( root_0, tree_for_char_literal140 )
3835
3839
 
3836
3840
 
3837
- # at line 332:23: ( NL )*
3841
+ # at line 336:23: ( NL )*
3838
3842
  while true # decision 58
3839
3843
  alt_58 = 2
3840
3844
  look_58_0 = @input.peek( 1 )
@@ -3845,7 +3849,7 @@ module SfpLang
3845
3849
  end
3846
3850
  case alt_58
3847
3851
  when 1
3848
- # at line 332:23: NL
3852
+ # at line 336:23: NL
3849
3853
  __NL141__ = match( NL, TOKENS_FOLLOWING_NL_IN_parameters_906 )
3850
3854
  tree_for_NL141 = @adaptor.create_with_payload( __NL141__ )
3851
3855
  @adaptor.add_child( root_0, tree_for_NL141 )
@@ -3904,7 +3908,7 @@ module SfpLang
3904
3908
  # parser rule parameter
3905
3909
  #
3906
3910
  # (in SfpLang.g)
3907
- # 335:1: parameter : ( ID ':' path | ID reference_type | ID 'areall' path | ID 'isset' path );
3911
+ # 339:1: parameter : ( ID ':' path | ID reference_type | ID 'areall' path | ID 'isset' path );
3908
3912
  #
3909
3913
  def parameter
3910
3914
  # -> uncomment the next line to manually enable rule tracing
@@ -3941,7 +3945,7 @@ module SfpLang
3941
3945
  tree_for_string_literal153 = nil
3942
3946
 
3943
3947
  begin
3944
- # at line 336:2: ( ID ':' path | ID reference_type | ID 'areall' path | ID 'isset' path )
3948
+ # at line 340:2: ( ID ':' path | ID reference_type | ID 'areall' path | ID 'isset' path )
3945
3949
  alt_60 = 4
3946
3950
  look_60_0 = @input.peek( 1 )
3947
3951
 
@@ -3964,7 +3968,7 @@ module SfpLang
3964
3968
  root_0 = @adaptor.create_flat_list
3965
3969
 
3966
3970
 
3967
- # at line 336:4: ID ':' path
3971
+ # at line 340:4: ID ':' path
3968
3972
  __ID144__ = match( ID, TOKENS_FOLLOWING_ID_IN_parameter_925 )
3969
3973
  tree_for_ID144 = @adaptor.create_with_payload( __ID144__ )
3970
3974
  @adaptor.add_child( root_0, tree_for_ID144 )
@@ -3994,7 +3998,7 @@ module SfpLang
3994
3998
  root_0 = @adaptor.create_flat_list
3995
3999
 
3996
4000
 
3997
- # at line 342:4: ID reference_type
4001
+ # at line 346:4: ID reference_type
3998
4002
  __ID147__ = match( ID, TOKENS_FOLLOWING_ID_IN_parameter_938 )
3999
4003
  tree_for_ID147 = @adaptor.create_with_payload( __ID147__ )
4000
4004
  @adaptor.add_child( root_0, tree_for_ID147 )
@@ -4015,7 +4019,7 @@ module SfpLang
4015
4019
  root_0 = @adaptor.create_flat_list
4016
4020
 
4017
4021
 
4018
- # at line 344:4: ID 'areall' path
4022
+ # at line 348:4: ID 'areall' path
4019
4023
  __ID149__ = match( ID, TOKENS_FOLLOWING_ID_IN_parameter_949 )
4020
4024
  tree_for_ID149 = @adaptor.create_with_payload( __ID149__ )
4021
4025
  @adaptor.add_child( root_0, tree_for_ID149 )
@@ -4046,7 +4050,7 @@ module SfpLang
4046
4050
  root_0 = @adaptor.create_flat_list
4047
4051
 
4048
4052
 
4049
- # at line 351:4: ID 'isset' path
4053
+ # at line 355:4: ID 'isset' path
4050
4054
  __ID152__ = match( ID, TOKENS_FOLLOWING_ID_IN_parameter_962 )
4051
4055
  tree_for_ID152 = @adaptor.create_with_payload( __ID152__ )
4052
4056
  @adaptor.add_child( root_0, tree_for_ID152 )
@@ -4104,7 +4108,7 @@ module SfpLang
4104
4108
  # parser rule conditions
4105
4109
  #
4106
4110
  # (in SfpLang.g)
4107
- # 360:1: conditions : ( 'conditions' | 'condition' ) '{' ( NL )* constraint_body '}' ( NL )+ ;
4111
+ # 364:1: conditions : ( 'conditions' | 'condition' ) '{' ( NL )* constraint_body '}' ( NL )+ ;
4108
4112
  #
4109
4113
  def conditions
4110
4114
  # -> uncomment the next line to manually enable rule tracing
@@ -4137,7 +4141,7 @@ module SfpLang
4137
4141
  root_0 = @adaptor.create_flat_list
4138
4142
 
4139
4143
 
4140
- # at line 361:4: ( 'conditions' | 'condition' ) '{' ( NL )* constraint_body '}' ( NL )+
4144
+ # at line 365:4: ( 'conditions' | 'condition' ) '{' ( NL )* constraint_body '}' ( NL )+
4141
4145
  set155 = @input.look
4142
4146
 
4143
4147
  if @input.peek( 1 ).between?( T__45, T__46 )
@@ -4166,7 +4170,7 @@ module SfpLang
4166
4170
  @adaptor.add_child( root_0, tree_for_char_literal156 )
4167
4171
 
4168
4172
 
4169
- # at line 366:7: ( NL )*
4173
+ # at line 370:7: ( NL )*
4170
4174
  while true # decision 61
4171
4175
  alt_61 = 2
4172
4176
  look_61_0 = @input.peek( 1 )
@@ -4177,7 +4181,7 @@ module SfpLang
4177
4181
  end
4178
4182
  case alt_61
4179
4183
  when 1
4180
- # at line 366:7: NL
4184
+ # at line 370:7: NL
4181
4185
  __NL157__ = match( NL, TOKENS_FOLLOWING_NL_IN_conditions_997 )
4182
4186
  tree_for_NL157 = @adaptor.create_with_payload( __NL157__ )
4183
4187
  @adaptor.add_child( root_0, tree_for_NL157 )
@@ -4199,7 +4203,7 @@ module SfpLang
4199
4203
  @adaptor.add_child( root_0, tree_for_char_literal159 )
4200
4204
 
4201
4205
 
4202
- # at file 366:31: ( NL )+
4206
+ # at file 370:31: ( NL )+
4203
4207
  match_count_62 = 0
4204
4208
  while true
4205
4209
  alt_62 = 2
@@ -4211,7 +4215,7 @@ module SfpLang
4211
4215
  end
4212
4216
  case alt_62
4213
4217
  when 1
4214
- # at line 366:31: NL
4218
+ # at line 370:31: NL
4215
4219
  __NL160__ = match( NL, TOKENS_FOLLOWING_NL_IN_conditions_1004 )
4216
4220
  tree_for_NL160 = @adaptor.create_with_payload( __NL160__ )
4217
4221
  @adaptor.add_child( root_0, tree_for_NL160 )
@@ -4265,7 +4269,7 @@ module SfpLang
4265
4269
  # parser rule effects
4266
4270
  #
4267
4271
  # (in SfpLang.g)
4268
- # 371:1: effects : ( 'effects' | 'effect' ) '{' ( NL )* effect_body '}' ( NL )+ ;
4272
+ # 375:1: effects : ( 'effects' | 'effect' ) '{' ( NL )* effect_body '}' ( NL )+ ;
4269
4273
  #
4270
4274
  def effects
4271
4275
  # -> uncomment the next line to manually enable rule tracing
@@ -4298,7 +4302,7 @@ module SfpLang
4298
4302
  root_0 = @adaptor.create_flat_list
4299
4303
 
4300
4304
 
4301
- # at line 372:4: ( 'effects' | 'effect' ) '{' ( NL )* effect_body '}' ( NL )+
4305
+ # at line 376:4: ( 'effects' | 'effect' ) '{' ( NL )* effect_body '}' ( NL )+
4302
4306
  set161 = @input.look
4303
4307
 
4304
4308
  if @input.peek( 1 ).between?( T__50, T__51 )
@@ -4328,7 +4332,7 @@ module SfpLang
4328
4332
  @adaptor.add_child( root_0, tree_for_char_literal162 )
4329
4333
 
4330
4334
 
4331
- # at line 378:7: ( NL )*
4335
+ # at line 382:7: ( NL )*
4332
4336
  while true # decision 63
4333
4337
  alt_63 = 2
4334
4338
  look_63_0 = @input.peek( 1 )
@@ -4339,7 +4343,7 @@ module SfpLang
4339
4343
  end
4340
4344
  case alt_63
4341
4345
  when 1
4342
- # at line 378:7: NL
4346
+ # at line 382:7: NL
4343
4347
  __NL163__ = match( NL, TOKENS_FOLLOWING_NL_IN_effects_1037 )
4344
4348
  tree_for_NL163 = @adaptor.create_with_payload( __NL163__ )
4345
4349
  @adaptor.add_child( root_0, tree_for_NL163 )
@@ -4361,7 +4365,7 @@ module SfpLang
4361
4365
  @adaptor.add_child( root_0, tree_for_char_literal165 )
4362
4366
 
4363
4367
 
4364
- # at file 380:7: ( NL )+
4368
+ # at file 384:7: ( NL )+
4365
4369
  match_count_64 = 0
4366
4370
  while true
4367
4371
  alt_64 = 2
@@ -4373,7 +4377,7 @@ module SfpLang
4373
4377
  end
4374
4378
  case alt_64
4375
4379
  when 1
4376
- # at line 380:7: NL
4380
+ # at line 384:7: NL
4377
4381
  __NL166__ = match( NL, TOKENS_FOLLOWING_NL_IN_effects_1050 )
4378
4382
  tree_for_NL166 = @adaptor.create_with_payload( __NL166__ )
4379
4383
  @adaptor.add_child( root_0, tree_for_NL166 )
@@ -4430,7 +4434,7 @@ module SfpLang
4430
4434
  # parser rule goal_constraint
4431
4435
  #
4432
4436
  # (in SfpLang.g)
4433
- # 387:1: goal_constraint : 'goal' ( 'constraint' )? ( NL )* '{' ( NL )* ( goal_body )* '}' ;
4437
+ # 391:1: goal_constraint : 'goal' ( 'constraint' )? ( NL )* '{' ( NL )* ( goal_body )* '}' ;
4434
4438
  #
4435
4439
  def goal_constraint
4436
4440
  # -> uncomment the next line to manually enable rule tracing
@@ -4465,13 +4469,13 @@ module SfpLang
4465
4469
  root_0 = @adaptor.create_flat_list
4466
4470
 
4467
4471
 
4468
- # at line 388:4: 'goal' ( 'constraint' )? ( NL )* '{' ( NL )* ( goal_body )* '}'
4472
+ # at line 392:4: 'goal' ( 'constraint' )? ( NL )* '{' ( NL )* ( goal_body )* '}'
4469
4473
  string_literal167 = match( T__60, TOKENS_FOLLOWING_T__60_IN_goal_constraint_1066 )
4470
4474
  tree_for_string_literal167 = @adaptor.create_with_payload( string_literal167 )
4471
4475
  @adaptor.add_child( root_0, tree_for_string_literal167 )
4472
4476
 
4473
4477
 
4474
- # at line 388:11: ( 'constraint' )?
4478
+ # at line 392:11: ( 'constraint' )?
4475
4479
  alt_65 = 2
4476
4480
  look_65_0 = @input.peek( 1 )
4477
4481
 
@@ -4480,7 +4484,7 @@ module SfpLang
4480
4484
  end
4481
4485
  case alt_65
4482
4486
  when 1
4483
- # at line 388:11: 'constraint'
4487
+ # at line 392:11: 'constraint'
4484
4488
  string_literal168 = match( T__47, TOKENS_FOLLOWING_T__47_IN_goal_constraint_1068 )
4485
4489
  tree_for_string_literal168 = @adaptor.create_with_payload( string_literal168 )
4486
4490
  @adaptor.add_child( root_0, tree_for_string_literal168 )
@@ -4488,7 +4492,7 @@ module SfpLang
4488
4492
 
4489
4493
 
4490
4494
  end
4491
- # at line 388:25: ( NL )*
4495
+ # at line 392:25: ( NL )*
4492
4496
  while true # decision 66
4493
4497
  alt_66 = 2
4494
4498
  look_66_0 = @input.peek( 1 )
@@ -4499,7 +4503,7 @@ module SfpLang
4499
4503
  end
4500
4504
  case alt_66
4501
4505
  when 1
4502
- # at line 388:25: NL
4506
+ # at line 392:25: NL
4503
4507
  __NL169__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_constraint_1071 )
4504
4508
  tree_for_NL169 = @adaptor.create_with_payload( __NL169__ )
4505
4509
  @adaptor.add_child( root_0, tree_for_NL169 )
@@ -4528,7 +4532,7 @@ module SfpLang
4528
4532
  @adaptor.add_child( root_0, tree_for_char_literal170 )
4529
4533
 
4530
4534
 
4531
- # at line 397:7: ( NL )*
4535
+ # at line 401:7: ( NL )*
4532
4536
  while true # decision 67
4533
4537
  alt_67 = 2
4534
4538
  look_67_0 = @input.peek( 1 )
@@ -4539,7 +4543,7 @@ module SfpLang
4539
4543
  end
4540
4544
  case alt_67
4541
4545
  when 1
4542
- # at line 397:7: NL
4546
+ # at line 401:7: NL
4543
4547
  __NL171__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_constraint_1082 )
4544
4548
  tree_for_NL171 = @adaptor.create_with_payload( __NL171__ )
4545
4549
  @adaptor.add_child( root_0, tree_for_NL171 )
@@ -4551,7 +4555,7 @@ module SfpLang
4551
4555
  end
4552
4556
  end # loop for decision 67
4553
4557
 
4554
- # at line 397:11: ( goal_body )*
4558
+ # at line 401:11: ( goal_body )*
4555
4559
  while true # decision 68
4556
4560
  alt_68 = 2
4557
4561
  look_68_0 = @input.peek( 1 )
@@ -4562,7 +4566,7 @@ module SfpLang
4562
4566
  end
4563
4567
  case alt_68
4564
4568
  when 1
4565
- # at line 397:11: goal_body
4569
+ # at line 401:11: goal_body
4566
4570
  @state.following.push( TOKENS_FOLLOWING_goal_body_IN_goal_constraint_1085 )
4567
4571
  goal_body172 = goal_body
4568
4572
  @state.following.pop
@@ -4615,7 +4619,7 @@ module SfpLang
4615
4619
  # parser rule global_constraint
4616
4620
  #
4617
4621
  # (in SfpLang.g)
4618
- # 401:1: global_constraint : ( 'global' | 'always' ) ( 'constraint' )? ( NL )* '{' ( NL )* constraint_body '}' ;
4622
+ # 405:1: global_constraint : ( 'global' | 'always' ) ( 'constraint' )? ( NL )* '{' ( NL )* constraint_body '}' ;
4619
4623
  #
4620
4624
  def global_constraint
4621
4625
  # -> uncomment the next line to manually enable rule tracing
@@ -4650,7 +4654,7 @@ module SfpLang
4650
4654
  root_0 = @adaptor.create_flat_list
4651
4655
 
4652
4656
 
4653
- # at line 402:4: ( 'global' | 'always' ) ( 'constraint' )? ( NL )* '{' ( NL )* constraint_body '}'
4657
+ # at line 406:4: ( 'global' | 'always' ) ( 'constraint' )? ( NL )* '{' ( NL )* constraint_body '}'
4654
4658
  set174 = @input.look
4655
4659
 
4656
4660
  if @input.peek(1) == T__39 || @input.peek(1) == T__59
@@ -4666,7 +4670,7 @@ module SfpLang
4666
4670
  end
4667
4671
 
4668
4672
 
4669
- # at line 402:24: ( 'constraint' )?
4673
+ # at line 406:24: ( 'constraint' )?
4670
4674
  alt_69 = 2
4671
4675
  look_69_0 = @input.peek( 1 )
4672
4676
 
@@ -4675,7 +4679,7 @@ module SfpLang
4675
4679
  end
4676
4680
  case alt_69
4677
4681
  when 1
4678
- # at line 402:24: 'constraint'
4682
+ # at line 406:24: 'constraint'
4679
4683
  string_literal175 = match( T__47, TOKENS_FOLLOWING_T__47_IN_global_constraint_1109 )
4680
4684
  tree_for_string_literal175 = @adaptor.create_with_payload( string_literal175 )
4681
4685
  @adaptor.add_child( root_0, tree_for_string_literal175 )
@@ -4683,7 +4687,7 @@ module SfpLang
4683
4687
 
4684
4688
 
4685
4689
  end
4686
- # at line 402:38: ( NL )*
4690
+ # at line 406:38: ( NL )*
4687
4691
  while true # decision 70
4688
4692
  alt_70 = 2
4689
4693
  look_70_0 = @input.peek( 1 )
@@ -4694,7 +4698,7 @@ module SfpLang
4694
4698
  end
4695
4699
  case alt_70
4696
4700
  when 1
4697
- # at line 402:38: NL
4701
+ # at line 406:38: NL
4698
4702
  __NL176__ = match( NL, TOKENS_FOLLOWING_NL_IN_global_constraint_1112 )
4699
4703
  tree_for_NL176 = @adaptor.create_with_payload( __NL176__ )
4700
4704
  @adaptor.add_child( root_0, tree_for_NL176 )
@@ -4719,7 +4723,7 @@ module SfpLang
4719
4723
  @adaptor.add_child( root_0, tree_for_char_literal177 )
4720
4724
 
4721
4725
 
4722
- # at line 407:7: ( NL )*
4726
+ # at line 411:7: ( NL )*
4723
4727
  while true # decision 71
4724
4728
  alt_71 = 2
4725
4729
  look_71_0 = @input.peek( 1 )
@@ -4730,7 +4734,7 @@ module SfpLang
4730
4734
  end
4731
4735
  case alt_71
4732
4736
  when 1
4733
- # at line 407:7: NL
4737
+ # at line 411:7: NL
4734
4738
  __NL178__ = match( NL, TOKENS_FOLLOWING_NL_IN_global_constraint_1123 )
4735
4739
  tree_for_NL178 = @adaptor.create_with_payload( __NL178__ )
4736
4740
  @adaptor.add_child( root_0, tree_for_NL178 )
@@ -4788,7 +4792,7 @@ module SfpLang
4788
4792
  # parser rule sometime_constraint
4789
4793
  #
4790
4794
  # (in SfpLang.g)
4791
- # 411:1: sometime_constraint : 'sometime' ( 'constraint' )? ( NL )* '{' ( NL )* constraint_body '}' ;
4795
+ # 415:1: sometime_constraint : 'sometime' ( 'constraint' )? ( NL )* '{' ( NL )* constraint_body '}' ;
4792
4796
  #
4793
4797
  def sometime_constraint
4794
4798
  # -> uncomment the next line to manually enable rule tracing
@@ -4823,13 +4827,13 @@ module SfpLang
4823
4827
  root_0 = @adaptor.create_flat_list
4824
4828
 
4825
4829
 
4826
- # at line 412:4: 'sometime' ( 'constraint' )? ( NL )* '{' ( NL )* constraint_body '}'
4830
+ # at line 416:4: 'sometime' ( 'constraint' )? ( NL )* '{' ( NL )* constraint_body '}'
4827
4831
  string_literal181 = match( T__77, TOKENS_FOLLOWING_T__77_IN_sometime_constraint_1143 )
4828
4832
  tree_for_string_literal181 = @adaptor.create_with_payload( string_literal181 )
4829
4833
  @adaptor.add_child( root_0, tree_for_string_literal181 )
4830
4834
 
4831
4835
 
4832
- # at line 412:15: ( 'constraint' )?
4836
+ # at line 416:15: ( 'constraint' )?
4833
4837
  alt_72 = 2
4834
4838
  look_72_0 = @input.peek( 1 )
4835
4839
 
@@ -4838,7 +4842,7 @@ module SfpLang
4838
4842
  end
4839
4843
  case alt_72
4840
4844
  when 1
4841
- # at line 412:15: 'constraint'
4845
+ # at line 416:15: 'constraint'
4842
4846
  string_literal182 = match( T__47, TOKENS_FOLLOWING_T__47_IN_sometime_constraint_1145 )
4843
4847
  tree_for_string_literal182 = @adaptor.create_with_payload( string_literal182 )
4844
4848
  @adaptor.add_child( root_0, tree_for_string_literal182 )
@@ -4846,7 +4850,7 @@ module SfpLang
4846
4850
 
4847
4851
 
4848
4852
  end
4849
- # at line 412:29: ( NL )*
4853
+ # at line 416:29: ( NL )*
4850
4854
  while true # decision 73
4851
4855
  alt_73 = 2
4852
4856
  look_73_0 = @input.peek( 1 )
@@ -4857,7 +4861,7 @@ module SfpLang
4857
4861
  end
4858
4862
  case alt_73
4859
4863
  when 1
4860
- # at line 412:29: NL
4864
+ # at line 416:29: NL
4861
4865
  __NL183__ = match( NL, TOKENS_FOLLOWING_NL_IN_sometime_constraint_1148 )
4862
4866
  tree_for_NL183 = @adaptor.create_with_payload( __NL183__ )
4863
4867
  @adaptor.add_child( root_0, tree_for_NL183 )
@@ -4882,7 +4886,7 @@ module SfpLang
4882
4886
  @adaptor.add_child( root_0, tree_for_char_literal184 )
4883
4887
 
4884
4888
 
4885
- # at line 417:7: ( NL )*
4889
+ # at line 421:7: ( NL )*
4886
4890
  while true # decision 74
4887
4891
  alt_74 = 2
4888
4892
  look_74_0 = @input.peek( 1 )
@@ -4893,7 +4897,7 @@ module SfpLang
4893
4897
  end
4894
4898
  case alt_74
4895
4899
  when 1
4896
- # at line 417:7: NL
4900
+ # at line 421:7: NL
4897
4901
  __NL185__ = match( NL, TOKENS_FOLLOWING_NL_IN_sometime_constraint_1159 )
4898
4902
  tree_for_NL185 = @adaptor.create_with_payload( __NL185__ )
4899
4903
  @adaptor.add_child( root_0, tree_for_NL185 )
@@ -4951,7 +4955,7 @@ module SfpLang
4951
4955
  # parser rule goal_body
4952
4956
  #
4953
4957
  # (in SfpLang.g)
4954
- # 422:1: goal_body : ( ( ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+ ) | ( 'always' | 'global' ) ( NL )* '{' ( NL )* constraint_body '}' ( NL )+ | 'sometime' ( NL )* '{' ( NL )* constraint_body '}' ( NL )+ | 'within' NUMBER ( NL )* '{' ( NL )* constraint_body '}' ( NL )+ | 'after' ( NL )* '{' ( NL )* constraint_body '}' ( NL )* ( 'then' | 'within' NUMBER ) ( NL )* '{' ( NL )* constraint_body '}' ( NL )+ | 'before' ( NL )* '{' ( NL )* constraint_body '}' ( NL )* 'then' ( NL )* '{' ( NL )* constraint_body '}' ( NL )+ );
4958
+ # 426:1: goal_body : ( ( ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+ ) | ( 'always' | 'global' ) ( NL )* '{' ( NL )* constraint_body '}' ( NL )+ | 'sometime' ( NL )* '{' ( NL )* constraint_body '}' ( NL )+ | 'within' NUMBER ( NL )* '{' ( NL )* constraint_body '}' ( NL )+ | 'after' ( NL )* '{' ( NL )* constraint_body '}' ( NL )* ( 'then' | 'within' NUMBER ) ( NL )* '{' ( NL )* constraint_body '}' ( NL )+ | 'before' ( NL )* '{' ( NL )* constraint_body '}' ( NL )* 'then' ( NL )* '{' ( NL )* constraint_body '}' ( NL )+ );
4955
4959
  #
4956
4960
  def goal_body
4957
4961
  # -> uncomment the next line to manually enable rule tracing
@@ -5073,7 +5077,7 @@ module SfpLang
5073
5077
  tree_for_NL244 = nil
5074
5078
 
5075
5079
  begin
5076
- # at line 423:2: ( ( ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+ ) | ( 'always' | 'global' ) ( NL )* '{' ( NL )* constraint_body '}' ( NL )+ | 'sometime' ( NL )* '{' ( NL )* constraint_body '}' ( NL )+ | 'within' NUMBER ( NL )* '{' ( NL )* constraint_body '}' ( NL )+ | 'after' ( NL )* '{' ( NL )* constraint_body '}' ( NL )* ( 'then' | 'within' NUMBER ) ( NL )* '{' ( NL )* constraint_body '}' ( NL )+ | 'before' ( NL )* '{' ( NL )* constraint_body '}' ( NL )* 'then' ( NL )* '{' ( NL )* constraint_body '}' ( NL )+ )
5080
+ # at line 427:2: ( ( ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+ ) | ( 'always' | 'global' ) ( NL )* '{' ( NL )* constraint_body '}' ( NL )+ | 'sometime' ( NL )* '{' ( NL )* constraint_body '}' ( NL )+ | 'within' NUMBER ( NL )* '{' ( NL )* constraint_body '}' ( NL )+ | 'after' ( NL )* '{' ( NL )* constraint_body '}' ( NL )* ( 'then' | 'within' NUMBER ) ( NL )* '{' ( NL )* constraint_body '}' ( NL )+ | 'before' ( NL )* '{' ( NL )* constraint_body '}' ( NL )* 'then' ( NL )* '{' ( NL )* constraint_body '}' ( NL )+ )
5077
5081
  alt_99 = 6
5078
5082
  case look_99 = @input.peek( 1 )
5079
5083
  when ID, T__53, T__56, T__57, T__58, T__62, T__72, T__82 then alt_99 = 1
@@ -5091,15 +5095,15 @@ module SfpLang
5091
5095
  root_0 = @adaptor.create_flat_list
5092
5096
 
5093
5097
 
5094
- # at line 423:4: ( ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+ )
5095
- # at line 423:4: ( ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+ )
5096
- # at line 424:4: ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+
5097
- # at line 424:4: ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification )
5098
+ # at line 427:4: ( ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+ )
5099
+ # at line 427:4: ( ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+ )
5100
+ # at line 428:4: ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+
5101
+ # at line 428:4: ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification )
5098
5102
  alt_75 = 4
5099
5103
  alt_75 = @dfa75.predict( @input )
5100
5104
  case alt_75
5101
5105
  when 1
5102
- # at line 424:6: constraint_statement
5106
+ # at line 428:6: constraint_statement
5103
5107
  @state.following.push( TOKENS_FOLLOWING_constraint_statement_IN_goal_body_1187 )
5104
5108
  constraint_statement188 = constraint_statement
5105
5109
  @state.following.pop
@@ -5114,7 +5118,7 @@ module SfpLang
5114
5118
 
5115
5119
 
5116
5120
  when 2
5117
- # at line 428:6: constraint_namespace
5121
+ # at line 432:6: constraint_namespace
5118
5122
  @state.following.push( TOKENS_FOLLOWING_constraint_namespace_IN_goal_body_1200 )
5119
5123
  constraint_namespace189 = constraint_namespace
5120
5124
  @state.following.pop
@@ -5122,7 +5126,7 @@ module SfpLang
5122
5126
 
5123
5127
 
5124
5128
  when 3
5125
- # at line 429:6: constraint_iterator
5129
+ # at line 433:6: constraint_iterator
5126
5130
  @state.following.push( TOKENS_FOLLOWING_constraint_iterator_IN_goal_body_1207 )
5127
5131
  constraint_iterator190 = constraint_iterator
5128
5132
  @state.following.pop
@@ -5130,7 +5134,7 @@ module SfpLang
5130
5134
 
5131
5135
 
5132
5136
  when 4
5133
- # at line 430:6: constraint_class_quantification
5137
+ # at line 434:6: constraint_class_quantification
5134
5138
  @state.following.push( TOKENS_FOLLOWING_constraint_class_quantification_IN_goal_body_1214 )
5135
5139
  constraint_class_quantification191 = constraint_class_quantification
5136
5140
  @state.following.pop
@@ -5138,7 +5142,7 @@ module SfpLang
5138
5142
 
5139
5143
 
5140
5144
  end
5141
- # at file 432:3: ( NL )+
5145
+ # at file 436:3: ( NL )+
5142
5146
  match_count_76 = 0
5143
5147
  while true
5144
5148
  alt_76 = 2
@@ -5150,7 +5154,7 @@ module SfpLang
5150
5154
  end
5151
5155
  case alt_76
5152
5156
  when 1
5153
- # at line 432:3: NL
5157
+ # at line 436:3: NL
5154
5158
  __NL192__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_body_1223 )
5155
5159
  tree_for_NL192 = @adaptor.create_with_payload( __NL192__ )
5156
5160
  @adaptor.add_child( root_0, tree_for_NL192 )
@@ -5174,7 +5178,7 @@ module SfpLang
5174
5178
  root_0 = @adaptor.create_flat_list
5175
5179
 
5176
5180
 
5177
- # at line 433:4: ( 'always' | 'global' ) ( NL )* '{' ( NL )* constraint_body '}' ( NL )+
5181
+ # at line 437:4: ( 'always' | 'global' ) ( NL )* '{' ( NL )* constraint_body '}' ( NL )+
5178
5182
  set193 = @input.look
5179
5183
 
5180
5184
  if @input.peek(1) == T__39 || @input.peek(1) == T__59
@@ -5190,7 +5194,7 @@ module SfpLang
5190
5194
  end
5191
5195
 
5192
5196
 
5193
- # at line 433:24: ( NL )*
5197
+ # at line 437:24: ( NL )*
5194
5198
  while true # decision 77
5195
5199
  alt_77 = 2
5196
5200
  look_77_0 = @input.peek( 1 )
@@ -5201,7 +5205,7 @@ module SfpLang
5201
5205
  end
5202
5206
  case alt_77
5203
5207
  when 1
5204
- # at line 433:24: NL
5208
+ # at line 437:24: NL
5205
5209
  __NL194__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_body_1236 )
5206
5210
  tree_for_NL194 = @adaptor.create_with_payload( __NL194__ )
5207
5211
  @adaptor.add_child( root_0, tree_for_NL194 )
@@ -5227,7 +5231,7 @@ module SfpLang
5227
5231
  @adaptor.add_child( root_0, tree_for_char_literal195 )
5228
5232
 
5229
5233
 
5230
- # at line 439:7: ( NL )*
5234
+ # at line 443:7: ( NL )*
5231
5235
  while true # decision 78
5232
5236
  alt_78 = 2
5233
5237
  look_78_0 = @input.peek( 1 )
@@ -5238,7 +5242,7 @@ module SfpLang
5238
5242
  end
5239
5243
  case alt_78
5240
5244
  when 1
5241
- # at line 439:7: NL
5245
+ # at line 443:7: NL
5242
5246
  __NL196__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_body_1247 )
5243
5247
  tree_for_NL196 = @adaptor.create_with_payload( __NL196__ )
5244
5248
  @adaptor.add_child( root_0, tree_for_NL196 )
@@ -5260,7 +5264,7 @@ module SfpLang
5260
5264
  @adaptor.add_child( root_0, tree_for_char_literal198 )
5261
5265
 
5262
5266
 
5263
- # at file 439:31: ( NL )+
5267
+ # at file 443:31: ( NL )+
5264
5268
  match_count_79 = 0
5265
5269
  while true
5266
5270
  alt_79 = 2
@@ -5272,7 +5276,7 @@ module SfpLang
5272
5276
  end
5273
5277
  case alt_79
5274
5278
  when 1
5275
- # at line 439:31: NL
5279
+ # at line 443:31: NL
5276
5280
  __NL199__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_body_1254 )
5277
5281
  tree_for_NL199 = @adaptor.create_with_payload( __NL199__ )
5278
5282
  @adaptor.add_child( root_0, tree_for_NL199 )
@@ -5300,13 +5304,13 @@ module SfpLang
5300
5304
  root_0 = @adaptor.create_flat_list
5301
5305
 
5302
5306
 
5303
- # at line 441:4: 'sometime' ( NL )* '{' ( NL )* constraint_body '}' ( NL )+
5307
+ # at line 445:4: 'sometime' ( NL )* '{' ( NL )* constraint_body '}' ( NL )+
5304
5308
  string_literal200 = match( T__77, TOKENS_FOLLOWING_T__77_IN_goal_body_1264 )
5305
5309
  tree_for_string_literal200 = @adaptor.create_with_payload( string_literal200 )
5306
5310
  @adaptor.add_child( root_0, tree_for_string_literal200 )
5307
5311
 
5308
5312
 
5309
- # at line 441:15: ( NL )*
5313
+ # at line 445:15: ( NL )*
5310
5314
  while true # decision 80
5311
5315
  alt_80 = 2
5312
5316
  look_80_0 = @input.peek( 1 )
@@ -5317,7 +5321,7 @@ module SfpLang
5317
5321
  end
5318
5322
  case alt_80
5319
5323
  when 1
5320
- # at line 441:15: NL
5324
+ # at line 445:15: NL
5321
5325
  __NL201__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_body_1266 )
5322
5326
  tree_for_NL201 = @adaptor.create_with_payload( __NL201__ )
5323
5327
  @adaptor.add_child( root_0, tree_for_NL201 )
@@ -5346,7 +5350,7 @@ module SfpLang
5346
5350
  @adaptor.add_child( root_0, tree_for_char_literal202 )
5347
5351
 
5348
5352
 
5349
- # at line 450:7: ( NL )*
5353
+ # at line 454:7: ( NL )*
5350
5354
  while true # decision 81
5351
5355
  alt_81 = 2
5352
5356
  look_81_0 = @input.peek( 1 )
@@ -5357,7 +5361,7 @@ module SfpLang
5357
5361
  end
5358
5362
  case alt_81
5359
5363
  when 1
5360
- # at line 450:7: NL
5364
+ # at line 454:7: NL
5361
5365
  __NL203__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_body_1277 )
5362
5366
  tree_for_NL203 = @adaptor.create_with_payload( __NL203__ )
5363
5367
  @adaptor.add_child( root_0, tree_for_NL203 )
@@ -5379,7 +5383,7 @@ module SfpLang
5379
5383
  @adaptor.add_child( root_0, tree_for_char_literal205 )
5380
5384
 
5381
5385
 
5382
- # at file 450:31: ( NL )+
5386
+ # at file 454:31: ( NL )+
5383
5387
  match_count_82 = 0
5384
5388
  while true
5385
5389
  alt_82 = 2
@@ -5391,7 +5395,7 @@ module SfpLang
5391
5395
  end
5392
5396
  case alt_82
5393
5397
  when 1
5394
- # at line 450:31: NL
5398
+ # at line 454:31: NL
5395
5399
  __NL206__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_body_1284 )
5396
5400
  tree_for_NL206 = @adaptor.create_with_payload( __NL206__ )
5397
5401
  @adaptor.add_child( root_0, tree_for_NL206 )
@@ -5424,7 +5428,7 @@ module SfpLang
5424
5428
  root_0 = @adaptor.create_flat_list
5425
5429
 
5426
5430
 
5427
- # at line 453:4: 'within' NUMBER ( NL )* '{' ( NL )* constraint_body '}' ( NL )+
5431
+ # at line 457:4: 'within' NUMBER ( NL )* '{' ( NL )* constraint_body '}' ( NL )+
5428
5432
  string_literal207 = match( T__83, TOKENS_FOLLOWING_T__83_IN_goal_body_1298 )
5429
5433
  tree_for_string_literal207 = @adaptor.create_with_payload( string_literal207 )
5430
5434
  @adaptor.add_child( root_0, tree_for_string_literal207 )
@@ -5435,7 +5439,7 @@ module SfpLang
5435
5439
  @adaptor.add_child( root_0, tree_for_NUMBER208 )
5436
5440
 
5437
5441
 
5438
- # at line 453:20: ( NL )*
5442
+ # at line 457:20: ( NL )*
5439
5443
  while true # decision 83
5440
5444
  alt_83 = 2
5441
5445
  look_83_0 = @input.peek( 1 )
@@ -5446,7 +5450,7 @@ module SfpLang
5446
5450
  end
5447
5451
  case alt_83
5448
5452
  when 1
5449
- # at line 453:20: NL
5453
+ # at line 457:20: NL
5450
5454
  __NL209__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_body_1302 )
5451
5455
  tree_for_NL209 = @adaptor.create_with_payload( __NL209__ )
5452
5456
  @adaptor.add_child( root_0, tree_for_NL209 )
@@ -5473,7 +5477,7 @@ module SfpLang
5473
5477
  @adaptor.add_child( root_0, tree_for_char_literal210 )
5474
5478
 
5475
5479
 
5476
- # at line 460:7: ( NL )*
5480
+ # at line 464:7: ( NL )*
5477
5481
  while true # decision 84
5478
5482
  alt_84 = 2
5479
5483
  look_84_0 = @input.peek( 1 )
@@ -5484,7 +5488,7 @@ module SfpLang
5484
5488
  end
5485
5489
  case alt_84
5486
5490
  when 1
5487
- # at line 460:7: NL
5491
+ # at line 464:7: NL
5488
5492
  __NL211__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_body_1313 )
5489
5493
  tree_for_NL211 = @adaptor.create_with_payload( __NL211__ )
5490
5494
  @adaptor.add_child( root_0, tree_for_NL211 )
@@ -5506,7 +5510,7 @@ module SfpLang
5506
5510
  @adaptor.add_child( root_0, tree_for_char_literal213 )
5507
5511
 
5508
5512
 
5509
- # at file 460:31: ( NL )+
5513
+ # at file 464:31: ( NL )+
5510
5514
  match_count_85 = 0
5511
5515
  while true
5512
5516
  alt_85 = 2
@@ -5518,7 +5522,7 @@ module SfpLang
5518
5522
  end
5519
5523
  case alt_85
5520
5524
  when 1
5521
- # at line 460:31: NL
5525
+ # at line 464:31: NL
5522
5526
  __NL214__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_body_1320 )
5523
5527
  tree_for_NL214 = @adaptor.create_with_payload( __NL214__ )
5524
5528
  @adaptor.add_child( root_0, tree_for_NL214 )
@@ -5546,13 +5550,13 @@ module SfpLang
5546
5550
  root_0 = @adaptor.create_flat_list
5547
5551
 
5548
5552
 
5549
- # at line 462:4: 'after' ( NL )* '{' ( NL )* constraint_body '}' ( NL )* ( 'then' | 'within' NUMBER ) ( NL )* '{' ( NL )* constraint_body '}' ( NL )+
5553
+ # at line 466:4: 'after' ( NL )* '{' ( NL )* constraint_body '}' ( NL )* ( 'then' | 'within' NUMBER ) ( NL )* '{' ( NL )* constraint_body '}' ( NL )+
5550
5554
  string_literal215 = match( T__38, TOKENS_FOLLOWING_T__38_IN_goal_body_1330 )
5551
5555
  tree_for_string_literal215 = @adaptor.create_with_payload( string_literal215 )
5552
5556
  @adaptor.add_child( root_0, tree_for_string_literal215 )
5553
5557
 
5554
5558
 
5555
- # at line 462:12: ( NL )*
5559
+ # at line 466:12: ( NL )*
5556
5560
  while true # decision 86
5557
5561
  alt_86 = 2
5558
5562
  look_86_0 = @input.peek( 1 )
@@ -5563,7 +5567,7 @@ module SfpLang
5563
5567
  end
5564
5568
  case alt_86
5565
5569
  when 1
5566
- # at line 462:12: NL
5570
+ # at line 466:12: NL
5567
5571
  __NL216__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_body_1332 )
5568
5572
  tree_for_NL216 = @adaptor.create_with_payload( __NL216__ )
5569
5573
  @adaptor.add_child( root_0, tree_for_NL216 )
@@ -5596,7 +5600,7 @@ module SfpLang
5596
5600
  @adaptor.add_child( root_0, tree_for_char_literal217 )
5597
5601
 
5598
5602
 
5599
- # at line 475:7: ( NL )*
5603
+ # at line 479:7: ( NL )*
5600
5604
  while true # decision 87
5601
5605
  alt_87 = 2
5602
5606
  look_87_0 = @input.peek( 1 )
@@ -5607,7 +5611,7 @@ module SfpLang
5607
5611
  end
5608
5612
  case alt_87
5609
5613
  when 1
5610
- # at line 475:7: NL
5614
+ # at line 479:7: NL
5611
5615
  __NL218__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_body_1343 )
5612
5616
  tree_for_NL218 = @adaptor.create_with_payload( __NL218__ )
5613
5617
  @adaptor.add_child( root_0, tree_for_NL218 )
@@ -5629,7 +5633,7 @@ module SfpLang
5629
5633
  @adaptor.add_child( root_0, tree_for_char_literal220 )
5630
5634
 
5631
5635
 
5632
- # at line 475:31: ( NL )*
5636
+ # at line 479:31: ( NL )*
5633
5637
  while true # decision 88
5634
5638
  alt_88 = 2
5635
5639
  look_88_0 = @input.peek( 1 )
@@ -5640,7 +5644,7 @@ module SfpLang
5640
5644
  end
5641
5645
  case alt_88
5642
5646
  when 1
5643
- # at line 475:31: NL
5647
+ # at line 479:31: NL
5644
5648
  __NL221__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_body_1350 )
5645
5649
  tree_for_NL221 = @adaptor.create_with_payload( __NL221__ )
5646
5650
  @adaptor.add_child( root_0, tree_for_NL221 )
@@ -5657,7 +5661,7 @@ module SfpLang
5657
5661
  self.goto_parent()
5658
5662
  # <-- action
5659
5663
 
5660
- # at line 477:3: ( 'then' | 'within' NUMBER )
5664
+ # at line 481:3: ( 'then' | 'within' NUMBER )
5661
5665
  alt_89 = 2
5662
5666
  look_89_0 = @input.peek( 1 )
5663
5667
 
@@ -5671,7 +5675,7 @@ module SfpLang
5671
5675
  end
5672
5676
  case alt_89
5673
5677
  when 1
5674
- # at line 477:5: 'then'
5678
+ # at line 481:5: 'then'
5675
5679
  string_literal222 = match( T__81, TOKENS_FOLLOWING_T__81_IN_goal_body_1361 )
5676
5680
  tree_for_string_literal222 = @adaptor.create_with_payload( string_literal222 )
5677
5681
  @adaptor.add_child( root_0, tree_for_string_literal222 )
@@ -5679,7 +5683,7 @@ module SfpLang
5679
5683
 
5680
5684
 
5681
5685
  when 2
5682
- # at line 478:6: 'within' NUMBER
5686
+ # at line 482:6: 'within' NUMBER
5683
5687
  string_literal223 = match( T__83, TOKENS_FOLLOWING_T__83_IN_goal_body_1368 )
5684
5688
  tree_for_string_literal223 = @adaptor.create_with_payload( string_literal223 )
5685
5689
  @adaptor.add_child( root_0, tree_for_string_literal223 )
@@ -5697,7 +5701,7 @@ module SfpLang
5697
5701
 
5698
5702
 
5699
5703
  end
5700
- # at line 480:5: ( NL )*
5704
+ # at line 484:5: ( NL )*
5701
5705
  while true # decision 90
5702
5706
  alt_90 = 2
5703
5707
  look_90_0 = @input.peek( 1 )
@@ -5708,7 +5712,7 @@ module SfpLang
5708
5712
  end
5709
5713
  case alt_90
5710
5714
  when 1
5711
- # at line 480:5: NL
5715
+ # at line 484:5: NL
5712
5716
  __NL225__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_body_1382 )
5713
5717
  tree_for_NL225 = @adaptor.create_with_payload( __NL225__ )
5714
5718
  @adaptor.add_child( root_0, tree_for_NL225 )
@@ -5733,7 +5737,7 @@ module SfpLang
5733
5737
  @adaptor.add_child( root_0, tree_for_char_literal226 )
5734
5738
 
5735
5739
 
5736
- # at line 485:7: ( NL )*
5740
+ # at line 489:7: ( NL )*
5737
5741
  while true # decision 91
5738
5742
  alt_91 = 2
5739
5743
  look_91_0 = @input.peek( 1 )
@@ -5744,7 +5748,7 @@ module SfpLang
5744
5748
  end
5745
5749
  case alt_91
5746
5750
  when 1
5747
- # at line 485:7: NL
5751
+ # at line 489:7: NL
5748
5752
  __NL227__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_body_1393 )
5749
5753
  tree_for_NL227 = @adaptor.create_with_payload( __NL227__ )
5750
5754
  @adaptor.add_child( root_0, tree_for_NL227 )
@@ -5766,7 +5770,7 @@ module SfpLang
5766
5770
  @adaptor.add_child( root_0, tree_for_char_literal229 )
5767
5771
 
5768
5772
 
5769
- # at file 485:31: ( NL )+
5773
+ # at file 489:31: ( NL )+
5770
5774
  match_count_92 = 0
5771
5775
  while true
5772
5776
  alt_92 = 2
@@ -5778,7 +5782,7 @@ module SfpLang
5778
5782
  end
5779
5783
  case alt_92
5780
5784
  when 1
5781
- # at line 485:31: NL
5785
+ # at line 489:31: NL
5782
5786
  __NL230__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_body_1400 )
5783
5787
  tree_for_NL230 = @adaptor.create_with_payload( __NL230__ )
5784
5788
  @adaptor.add_child( root_0, tree_for_NL230 )
@@ -5816,13 +5820,13 @@ module SfpLang
5816
5820
  root_0 = @adaptor.create_flat_list
5817
5821
 
5818
5822
 
5819
- # at line 489:4: 'before' ( NL )* '{' ( NL )* constraint_body '}' ( NL )* 'then' ( NL )* '{' ( NL )* constraint_body '}' ( NL )+
5823
+ # at line 493:4: 'before' ( NL )* '{' ( NL )* constraint_body '}' ( NL )* 'then' ( NL )* '{' ( NL )* constraint_body '}' ( NL )+
5820
5824
  string_literal231 = match( T__43, TOKENS_FOLLOWING_T__43_IN_goal_body_1418 )
5821
5825
  tree_for_string_literal231 = @adaptor.create_with_payload( string_literal231 )
5822
5826
  @adaptor.add_child( root_0, tree_for_string_literal231 )
5823
5827
 
5824
5828
 
5825
- # at line 489:13: ( NL )*
5829
+ # at line 493:13: ( NL )*
5826
5830
  while true # decision 93
5827
5831
  alt_93 = 2
5828
5832
  look_93_0 = @input.peek( 1 )
@@ -5833,7 +5837,7 @@ module SfpLang
5833
5837
  end
5834
5838
  case alt_93
5835
5839
  when 1
5836
- # at line 489:13: NL
5840
+ # at line 493:13: NL
5837
5841
  __NL232__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_body_1420 )
5838
5842
  tree_for_NL232 = @adaptor.create_with_payload( __NL232__ )
5839
5843
  @adaptor.add_child( root_0, tree_for_NL232 )
@@ -5861,7 +5865,7 @@ module SfpLang
5861
5865
  @adaptor.add_child( root_0, tree_for_char_literal233 )
5862
5866
 
5863
5867
 
5864
- # at line 497:7: ( NL )*
5868
+ # at line 501:7: ( NL )*
5865
5869
  while true # decision 94
5866
5870
  alt_94 = 2
5867
5871
  look_94_0 = @input.peek( 1 )
@@ -5872,7 +5876,7 @@ module SfpLang
5872
5876
  end
5873
5877
  case alt_94
5874
5878
  when 1
5875
- # at line 497:7: NL
5879
+ # at line 501:7: NL
5876
5880
  __NL234__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_body_1431 )
5877
5881
  tree_for_NL234 = @adaptor.create_with_payload( __NL234__ )
5878
5882
  @adaptor.add_child( root_0, tree_for_NL234 )
@@ -5894,7 +5898,7 @@ module SfpLang
5894
5898
  @adaptor.add_child( root_0, tree_for_char_literal236 )
5895
5899
 
5896
5900
 
5897
- # at line 497:31: ( NL )*
5901
+ # at line 501:31: ( NL )*
5898
5902
  while true # decision 95
5899
5903
  alt_95 = 2
5900
5904
  look_95_0 = @input.peek( 1 )
@@ -5905,7 +5909,7 @@ module SfpLang
5905
5909
  end
5906
5910
  case alt_95
5907
5911
  when 1
5908
- # at line 497:31: NL
5912
+ # at line 501:31: NL
5909
5913
  __NL237__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_body_1438 )
5910
5914
  tree_for_NL237 = @adaptor.create_with_payload( __NL237__ )
5911
5915
  @adaptor.add_child( root_0, tree_for_NL237 )
@@ -5927,7 +5931,7 @@ module SfpLang
5927
5931
  @adaptor.add_child( root_0, tree_for_string_literal238 )
5928
5932
 
5929
5933
 
5930
- # at line 499:10: ( NL )*
5934
+ # at line 503:10: ( NL )*
5931
5935
  while true # decision 96
5932
5936
  alt_96 = 2
5933
5937
  look_96_0 = @input.peek( 1 )
@@ -5938,7 +5942,7 @@ module SfpLang
5938
5942
  end
5939
5943
  case alt_96
5940
5944
  when 1
5941
- # at line 499:10: NL
5945
+ # at line 503:10: NL
5942
5946
  __NL239__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_body_1449 )
5943
5947
  tree_for_NL239 = @adaptor.create_with_payload( __NL239__ )
5944
5948
  @adaptor.add_child( root_0, tree_for_NL239 )
@@ -5963,7 +5967,7 @@ module SfpLang
5963
5967
  @adaptor.add_child( root_0, tree_for_char_literal240 )
5964
5968
 
5965
5969
 
5966
- # at line 504:7: ( NL )*
5970
+ # at line 508:7: ( NL )*
5967
5971
  while true # decision 97
5968
5972
  alt_97 = 2
5969
5973
  look_97_0 = @input.peek( 1 )
@@ -5974,7 +5978,7 @@ module SfpLang
5974
5978
  end
5975
5979
  case alt_97
5976
5980
  when 1
5977
- # at line 504:7: NL
5981
+ # at line 508:7: NL
5978
5982
  __NL241__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_body_1460 )
5979
5983
  tree_for_NL241 = @adaptor.create_with_payload( __NL241__ )
5980
5984
  @adaptor.add_child( root_0, tree_for_NL241 )
@@ -5996,7 +6000,7 @@ module SfpLang
5996
6000
  @adaptor.add_child( root_0, tree_for_char_literal243 )
5997
6001
 
5998
6002
 
5999
- # at file 504:31: ( NL )+
6003
+ # at file 508:31: ( NL )+
6000
6004
  match_count_98 = 0
6001
6005
  while true
6002
6006
  alt_98 = 2
@@ -6008,7 +6012,7 @@ module SfpLang
6008
6012
  end
6009
6013
  case alt_98
6010
6014
  when 1
6011
- # at line 504:31: NL
6015
+ # at line 508:31: NL
6012
6016
  __NL244__ = match( NL, TOKENS_FOLLOWING_NL_IN_goal_body_1467 )
6013
6017
  tree_for_NL244 = @adaptor.create_with_payload( __NL244__ )
6014
6018
  @adaptor.add_child( root_0, tree_for_NL244 )
@@ -6068,7 +6072,7 @@ module SfpLang
6068
6072
  # parser rule nested_constraint
6069
6073
  #
6070
6074
  # (in SfpLang.g)
6071
- # 509:1: nested_constraint : '{' ( NL )* constraint_body '}' ;
6075
+ # 513:1: nested_constraint : '{' ( NL )* constraint_body '}' ;
6072
6076
  #
6073
6077
  def nested_constraint
6074
6078
  # -> uncomment the next line to manually enable rule tracing
@@ -6097,13 +6101,13 @@ module SfpLang
6097
6101
  root_0 = @adaptor.create_flat_list
6098
6102
 
6099
6103
 
6100
- # at line 510:4: '{' ( NL )* constraint_body '}'
6104
+ # at line 514:4: '{' ( NL )* constraint_body '}'
6101
6105
  char_literal245 = match( T__84, TOKENS_FOLLOWING_T__84_IN_nested_constraint_1487 )
6102
6106
  tree_for_char_literal245 = @adaptor.create_with_payload( char_literal245 )
6103
6107
  @adaptor.add_child( root_0, tree_for_char_literal245 )
6104
6108
 
6105
6109
 
6106
- # at line 510:8: ( NL )*
6110
+ # at line 514:8: ( NL )*
6107
6111
  while true # decision 100
6108
6112
  alt_100 = 2
6109
6113
  look_100_0 = @input.peek( 1 )
@@ -6114,7 +6118,7 @@ module SfpLang
6114
6118
  end
6115
6119
  case alt_100
6116
6120
  when 1
6117
- # at line 510:8: NL
6121
+ # at line 514:8: NL
6118
6122
  __NL246__ = match( NL, TOKENS_FOLLOWING_NL_IN_nested_constraint_1489 )
6119
6123
  tree_for_NL246 = @adaptor.create_with_payload( __NL246__ )
6120
6124
  @adaptor.add_child( root_0, tree_for_NL246 )
@@ -6167,7 +6171,7 @@ module SfpLang
6167
6171
  # parser rule constraint
6168
6172
  #
6169
6173
  # (in SfpLang.g)
6170
- # 513:1: constraint : 'constraint' ID '{' ( NL )* constraint_body '}' ;
6174
+ # 517:1: constraint : 'constraint' ID '{' ( NL )* constraint_body '}' ;
6171
6175
  #
6172
6176
  def constraint
6173
6177
  # -> uncomment the next line to manually enable rule tracing
@@ -6200,7 +6204,7 @@ module SfpLang
6200
6204
  root_0 = @adaptor.create_flat_list
6201
6205
 
6202
6206
 
6203
- # at line 514:4: 'constraint' ID '{' ( NL )* constraint_body '}'
6207
+ # at line 518:4: 'constraint' ID '{' ( NL )* constraint_body '}'
6204
6208
  string_literal249 = match( T__47, TOKENS_FOLLOWING_T__47_IN_constraint_1505 )
6205
6209
  tree_for_string_literal249 = @adaptor.create_with_payload( string_literal249 )
6206
6210
  @adaptor.add_child( root_0, tree_for_string_literal249 )
@@ -6224,7 +6228,7 @@ module SfpLang
6224
6228
  @adaptor.add_child( root_0, tree_for_char_literal251 )
6225
6229
 
6226
6230
 
6227
- # at line 519:7: ( NL )*
6231
+ # at line 523:7: ( NL )*
6228
6232
  while true # decision 101
6229
6233
  alt_101 = 2
6230
6234
  look_101_0 = @input.peek( 1 )
@@ -6235,7 +6239,7 @@ module SfpLang
6235
6239
  end
6236
6240
  case alt_101
6237
6241
  when 1
6238
- # at line 519:7: NL
6242
+ # at line 523:7: NL
6239
6243
  __NL252__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_1517 )
6240
6244
  tree_for_NL252 = @adaptor.create_with_payload( __NL252__ )
6241
6245
  @adaptor.add_child( root_0, tree_for_NL252 )
@@ -6293,7 +6297,7 @@ module SfpLang
6293
6297
  # parser rule constraint_body
6294
6298
  #
6295
6299
  # (in SfpLang.g)
6296
- # 523:1: constraint_body : ( ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+ )* ;
6300
+ # 527:1: constraint_body : ( ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+ )* ;
6297
6301
  #
6298
6302
  def constraint_body
6299
6303
  # -> uncomment the next line to manually enable rule tracing
@@ -6321,8 +6325,8 @@ module SfpLang
6321
6325
  root_0 = @adaptor.create_flat_list
6322
6326
 
6323
6327
 
6324
- # at line 524:4: ( ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+ )*
6325
- # at line 524:4: ( ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+ )*
6328
+ # at line 528:4: ( ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+ )*
6329
+ # at line 528:4: ( ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+ )*
6326
6330
  while true # decision 104
6327
6331
  alt_104 = 2
6328
6332
  look_104_0 = @input.peek( 1 )
@@ -6333,13 +6337,13 @@ module SfpLang
6333
6337
  end
6334
6338
  case alt_104
6335
6339
  when 1
6336
- # at line 525:4: ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+
6337
- # at line 525:4: ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification )
6340
+ # at line 529:4: ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification ) ( NL )+
6341
+ # at line 529:4: ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification )
6338
6342
  alt_102 = 4
6339
6343
  alt_102 = @dfa102.predict( @input )
6340
6344
  case alt_102
6341
6345
  when 1
6342
- # at line 525:6: constraint_statement
6346
+ # at line 529:6: constraint_statement
6343
6347
  @state.following.push( TOKENS_FOLLOWING_constraint_statement_IN_constraint_body_1544 )
6344
6348
  constraint_statement255 = constraint_statement
6345
6349
  @state.following.pop
@@ -6354,7 +6358,7 @@ module SfpLang
6354
6358
 
6355
6359
 
6356
6360
  when 2
6357
- # at line 529:6: constraint_namespace
6361
+ # at line 533:6: constraint_namespace
6358
6362
  @state.following.push( TOKENS_FOLLOWING_constraint_namespace_IN_constraint_body_1557 )
6359
6363
  constraint_namespace256 = constraint_namespace
6360
6364
  @state.following.pop
@@ -6362,7 +6366,7 @@ module SfpLang
6362
6366
 
6363
6367
 
6364
6368
  when 3
6365
- # at line 530:6: constraint_iterator
6369
+ # at line 534:6: constraint_iterator
6366
6370
  @state.following.push( TOKENS_FOLLOWING_constraint_iterator_IN_constraint_body_1564 )
6367
6371
  constraint_iterator257 = constraint_iterator
6368
6372
  @state.following.pop
@@ -6370,7 +6374,7 @@ module SfpLang
6370
6374
 
6371
6375
 
6372
6376
  when 4
6373
- # at line 531:6: constraint_class_quantification
6377
+ # at line 535:6: constraint_class_quantification
6374
6378
  @state.following.push( TOKENS_FOLLOWING_constraint_class_quantification_IN_constraint_body_1571 )
6375
6379
  constraint_class_quantification258 = constraint_class_quantification
6376
6380
  @state.following.pop
@@ -6378,7 +6382,7 @@ module SfpLang
6378
6382
 
6379
6383
 
6380
6384
  end
6381
- # at file 533:3: ( NL )+
6385
+ # at file 537:3: ( NL )+
6382
6386
  match_count_103 = 0
6383
6387
  while true
6384
6388
  alt_103 = 2
@@ -6390,7 +6394,7 @@ module SfpLang
6390
6394
  end
6391
6395
  case alt_103
6392
6396
  when 1
6393
- # at line 533:3: NL
6397
+ # at line 537:3: NL
6394
6398
  __NL259__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_body_1580 )
6395
6399
  tree_for_NL259 = @adaptor.create_with_payload( __NL259__ )
6396
6400
  @adaptor.add_child( root_0, tree_for_NL259 )
@@ -6445,7 +6449,7 @@ module SfpLang
6445
6449
  # parser rule constraint_namespace
6446
6450
  #
6447
6451
  # (in SfpLang.g)
6448
- # 536:1: constraint_namespace : path ( NL )* '{' ( NL )* ( constraint_statement ( NL )+ )* '}' ;
6452
+ # 540:1: constraint_namespace : path ( NL )* '{' ( NL )* ( constraint_statement ( NL )+ )* '}' ;
6449
6453
  #
6450
6454
  def constraint_namespace
6451
6455
  # -> uncomment the next line to manually enable rule tracing
@@ -6479,13 +6483,13 @@ module SfpLang
6479
6483
  root_0 = @adaptor.create_flat_list
6480
6484
 
6481
6485
 
6482
- # at line 537:4: path ( NL )* '{' ( NL )* ( constraint_statement ( NL )+ )* '}'
6486
+ # at line 541:4: path ( NL )* '{' ( NL )* ( constraint_statement ( NL )+ )* '}'
6483
6487
  @state.following.push( TOKENS_FOLLOWING_path_IN_constraint_namespace_1594 )
6484
6488
  path260 = path
6485
6489
  @state.following.pop
6486
6490
  @adaptor.add_child( root_0, path260.tree )
6487
6491
 
6488
- # at line 537:9: ( NL )*
6492
+ # at line 541:9: ( NL )*
6489
6493
  while true # decision 105
6490
6494
  alt_105 = 2
6491
6495
  look_105_0 = @input.peek( 1 )
@@ -6496,7 +6500,7 @@ module SfpLang
6496
6500
  end
6497
6501
  case alt_105
6498
6502
  when 1
6499
- # at line 537:9: NL
6503
+ # at line 541:9: NL
6500
6504
  __NL261__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_namespace_1596 )
6501
6505
  tree_for_NL261 = @adaptor.create_with_payload( __NL261__ )
6502
6506
  @adaptor.add_child( root_0, tree_for_NL261 )
@@ -6513,7 +6517,7 @@ module SfpLang
6513
6517
  @adaptor.add_child( root_0, tree_for_char_literal262 )
6514
6518
 
6515
6519
 
6516
- # at line 537:17: ( NL )*
6520
+ # at line 541:17: ( NL )*
6517
6521
  while true # decision 106
6518
6522
  alt_106 = 2
6519
6523
  look_106_0 = @input.peek( 1 )
@@ -6524,7 +6528,7 @@ module SfpLang
6524
6528
  end
6525
6529
  case alt_106
6526
6530
  when 1
6527
- # at line 537:17: NL
6531
+ # at line 541:17: NL
6528
6532
  __NL263__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_namespace_1601 )
6529
6533
  tree_for_NL263 = @adaptor.create_with_payload( __NL263__ )
6530
6534
  @adaptor.add_child( root_0, tree_for_NL263 )
@@ -6536,7 +6540,7 @@ module SfpLang
6536
6540
  end
6537
6541
  end # loop for decision 106
6538
6542
 
6539
- # at line 537:21: ( constraint_statement ( NL )+ )*
6543
+ # at line 541:21: ( constraint_statement ( NL )+ )*
6540
6544
  while true # decision 108
6541
6545
  alt_108 = 2
6542
6546
  look_108_0 = @input.peek( 1 )
@@ -6547,7 +6551,7 @@ module SfpLang
6547
6551
  end
6548
6552
  case alt_108
6549
6553
  when 1
6550
- # at line 537:22: constraint_statement ( NL )+
6554
+ # at line 541:22: constraint_statement ( NL )+
6551
6555
  @state.following.push( TOKENS_FOLLOWING_constraint_statement_IN_constraint_namespace_1605 )
6552
6556
  constraint_statement264 = constraint_statement
6553
6557
  @state.following.pop
@@ -6561,7 +6565,7 @@ module SfpLang
6561
6565
 
6562
6566
  # <-- action
6563
6567
 
6564
- # at file 542:3: ( NL )+
6568
+ # at file 546:3: ( NL )+
6565
6569
  match_count_107 = 0
6566
6570
  while true
6567
6571
  alt_107 = 2
@@ -6573,7 +6577,7 @@ module SfpLang
6573
6577
  end
6574
6578
  case alt_107
6575
6579
  when 1
6576
- # at line 542:3: NL
6580
+ # at line 546:3: NL
6577
6581
  __NL265__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_namespace_1613 )
6578
6582
  tree_for_NL265 = @adaptor.create_with_payload( __NL265__ )
6579
6583
  @adaptor.add_child( root_0, tree_for_NL265 )
@@ -6633,7 +6637,7 @@ module SfpLang
6633
6637
  # parser rule constraint_iterator
6634
6638
  #
6635
6639
  # (in SfpLang.g)
6636
- # 545:1: constraint_iterator : 'foreach' '(' path 'as' ID ')' ( NL )* '{' ( NL )+ ( constraint_statement ( NL )+ )* '}' ;
6640
+ # 549:1: constraint_iterator : 'foreach' '(' path 'as' ID ')' ( NL )* '{' ( NL )+ ( constraint_statement ( NL )+ )* '}' ;
6637
6641
  #
6638
6642
  def constraint_iterator
6639
6643
  # -> uncomment the next line to manually enable rule tracing
@@ -6677,7 +6681,7 @@ module SfpLang
6677
6681
  root_0 = @adaptor.create_flat_list
6678
6682
 
6679
6683
 
6680
- # at line 546:4: 'foreach' '(' path 'as' ID ')' ( NL )* '{' ( NL )+ ( constraint_statement ( NL )+ )* '}'
6684
+ # at line 550:4: 'foreach' '(' path 'as' ID ')' ( NL )* '{' ( NL )+ ( constraint_statement ( NL )+ )* '}'
6681
6685
  string_literal267 = match( T__57, TOKENS_FOLLOWING_T__57_IN_constraint_iterator_1629 )
6682
6686
  tree_for_string_literal267 = @adaptor.create_with_payload( string_literal267 )
6683
6687
  @adaptor.add_child( root_0, tree_for_string_literal267 )
@@ -6708,7 +6712,7 @@ module SfpLang
6708
6712
  @adaptor.add_child( root_0, tree_for_char_literal272 )
6709
6713
 
6710
6714
 
6711
- # at line 546:35: ( NL )*
6715
+ # at line 550:35: ( NL )*
6712
6716
  while true # decision 109
6713
6717
  alt_109 = 2
6714
6718
  look_109_0 = @input.peek( 1 )
@@ -6719,7 +6723,7 @@ module SfpLang
6719
6723
  end
6720
6724
  case alt_109
6721
6725
  when 1
6722
- # at line 546:35: NL
6726
+ # at line 550:35: NL
6723
6727
  __NL273__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_iterator_1641 )
6724
6728
  tree_for_NL273 = @adaptor.create_with_payload( __NL273__ )
6725
6729
  @adaptor.add_child( root_0, tree_for_NL273 )
@@ -6736,7 +6740,7 @@ module SfpLang
6736
6740
  @adaptor.add_child( root_0, tree_for_char_literal274 )
6737
6741
 
6738
6742
 
6739
- # at file 546:43: ( NL )+
6743
+ # at file 550:43: ( NL )+
6740
6744
  match_count_110 = 0
6741
6745
  while true
6742
6746
  alt_110 = 2
@@ -6748,7 +6752,7 @@ module SfpLang
6748
6752
  end
6749
6753
  case alt_110
6750
6754
  when 1
6751
- # at line 546:43: NL
6755
+ # at line 550:43: NL
6752
6756
  __NL275__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_iterator_1646 )
6753
6757
  tree_for_NL275 = @adaptor.create_with_payload( __NL275__ )
6754
6758
  @adaptor.add_child( root_0, tree_for_NL275 )
@@ -6781,7 +6785,7 @@ module SfpLang
6781
6785
 
6782
6786
  # <-- action
6783
6787
 
6784
- # at line 558:3: ( constraint_statement ( NL )+ )*
6788
+ # at line 562:3: ( constraint_statement ( NL )+ )*
6785
6789
  while true # decision 112
6786
6790
  alt_112 = 2
6787
6791
  look_112_0 = @input.peek( 1 )
@@ -6792,7 +6796,7 @@ module SfpLang
6792
6796
  end
6793
6797
  case alt_112
6794
6798
  when 1
6795
- # at line 558:4: constraint_statement ( NL )+
6799
+ # at line 562:4: constraint_statement ( NL )+
6796
6800
  @state.following.push( TOKENS_FOLLOWING_constraint_statement_IN_constraint_iterator_1656 )
6797
6801
  constraint_statement276 = constraint_statement
6798
6802
  @state.following.pop
@@ -6805,7 +6809,7 @@ module SfpLang
6805
6809
 
6806
6810
  # <-- action
6807
6811
 
6808
- # at file 562:3: ( NL )+
6812
+ # at file 566:3: ( NL )+
6809
6813
  match_count_111 = 0
6810
6814
  while true
6811
6815
  alt_111 = 2
@@ -6817,7 +6821,7 @@ module SfpLang
6817
6821
  end
6818
6822
  case alt_111
6819
6823
  when 1
6820
- # at line 562:3: NL
6824
+ # at line 566:3: NL
6821
6825
  __NL277__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_iterator_1664 )
6822
6826
  tree_for_NL277 = @adaptor.create_with_payload( __NL277__ )
6823
6827
  @adaptor.add_child( root_0, tree_for_NL277 )
@@ -6885,7 +6889,7 @@ module SfpLang
6885
6889
  # parser rule quantification_keyword
6886
6890
  #
6887
6891
  # (in SfpLang.g)
6888
- # 570:1: quantification_keyword : ( 'forall' | 'exist' | 'forsome' );
6892
+ # 574:1: quantification_keyword : ( 'forall' | 'exist' | 'forsome' );
6889
6893
  #
6890
6894
  def quantification_keyword
6891
6895
  # -> uncomment the next line to manually enable rule tracing
@@ -6956,7 +6960,7 @@ module SfpLang
6956
6960
  # parser rule constraint_class_quantification
6957
6961
  #
6958
6962
  # (in SfpLang.g)
6959
- # 576:1: constraint_class_quantification : quantification_keyword '(' path 'as' ID ')' ( ( binary_comp | '=' ) NUMBER )? ( NL )* '{' ( NL )+ ( constraint_statement ( NL )+ | constraint_different ( NL )+ | constraint_iterator ( NL )+ )* '}' ;
6963
+ # 580:1: constraint_class_quantification : quantification_keyword '(' path 'as' ID ')' ( ( binary_comp | '=' ) NUMBER )? ( NL )* '{' ( NL )+ ( constraint_statement ( NL )+ | constraint_different ( NL )+ | constraint_iterator ( NL )+ )* '}' ;
6960
6964
  #
6961
6965
  def constraint_class_quantification
6962
6966
  # -> uncomment the next line to manually enable rule tracing
@@ -7010,7 +7014,7 @@ module SfpLang
7010
7014
  root_0 = @adaptor.create_flat_list
7011
7015
 
7012
7016
 
7013
- # at line 577:4: quantification_keyword '(' path 'as' ID ')' ( ( binary_comp | '=' ) NUMBER )? ( NL )* '{' ( NL )+ ( constraint_statement ( NL )+ | constraint_different ( NL )+ | constraint_iterator ( NL )+ )* '}'
7017
+ # at line 581:4: quantification_keyword '(' path 'as' ID ')' ( ( binary_comp | '=' ) NUMBER )? ( NL )* '{' ( NL )+ ( constraint_statement ( NL )+ | constraint_different ( NL )+ | constraint_iterator ( NL )+ )* '}'
7014
7018
  @state.following.push( TOKENS_FOLLOWING_quantification_keyword_IN_constraint_class_quantification_1707 )
7015
7019
  quantification_keyword280 = quantification_keyword
7016
7020
  @state.following.pop
@@ -7060,7 +7064,7 @@ module SfpLang
7060
7064
 
7061
7065
  # <-- action
7062
7066
 
7063
- # at line 593:3: ( ( binary_comp | '=' ) NUMBER )?
7067
+ # at line 597:3: ( ( binary_comp | '=' ) NUMBER )?
7064
7068
  alt_114 = 2
7065
7069
  look_114_0 = @input.peek( 1 )
7066
7070
 
@@ -7069,8 +7073,8 @@ module SfpLang
7069
7073
  end
7070
7074
  case alt_114
7071
7075
  when 1
7072
- # at line 593:5: ( binary_comp | '=' ) NUMBER
7073
- # at line 593:5: ( binary_comp | '=' )
7076
+ # at line 597:5: ( binary_comp | '=' ) NUMBER
7077
+ # at line 597:5: ( binary_comp | '=' )
7074
7078
  alt_113 = 2
7075
7079
  look_113_0 = @input.peek( 1 )
7076
7080
 
@@ -7084,7 +7088,7 @@ module SfpLang
7084
7088
  end
7085
7089
  case alt_113
7086
7090
  when 1
7087
- # at line 593:7: binary_comp
7091
+ # at line 597:7: binary_comp
7088
7092
  @state.following.push( TOKENS_FOLLOWING_binary_comp_IN_constraint_class_quantification_1729 )
7089
7093
  binary_comp286 = binary_comp
7090
7094
  @state.following.pop
@@ -7097,7 +7101,7 @@ module SfpLang
7097
7101
 
7098
7102
 
7099
7103
  when 2
7100
- # at line 595:6: '='
7104
+ # at line 599:6: '='
7101
7105
  char_literal287 = match( T__31, TOKENS_FOLLOWING_T__31_IN_constraint_class_quantification_1742 )
7102
7106
  tree_for_char_literal287 = @adaptor.create_with_payload( char_literal287 )
7103
7107
  @adaptor.add_child( root_0, tree_for_char_literal287 )
@@ -7122,7 +7126,7 @@ module SfpLang
7122
7126
 
7123
7127
 
7124
7128
  end
7125
- # at line 601:3: ( NL )*
7129
+ # at line 605:3: ( NL )*
7126
7130
  while true # decision 115
7127
7131
  alt_115 = 2
7128
7132
  look_115_0 = @input.peek( 1 )
@@ -7133,7 +7137,7 @@ module SfpLang
7133
7137
  end
7134
7138
  case alt_115
7135
7139
  when 1
7136
- # at line 601:3: NL
7140
+ # at line 605:3: NL
7137
7141
  __NL289__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_class_quantification_1772 )
7138
7142
  tree_for_NL289 = @adaptor.create_with_payload( __NL289__ )
7139
7143
  @adaptor.add_child( root_0, tree_for_NL289 )
@@ -7150,7 +7154,7 @@ module SfpLang
7150
7154
  @adaptor.add_child( root_0, tree_for_char_literal290 )
7151
7155
 
7152
7156
 
7153
- # at file 601:11: ( NL )+
7157
+ # at file 605:11: ( NL )+
7154
7158
  match_count_116 = 0
7155
7159
  while true
7156
7160
  alt_116 = 2
@@ -7162,7 +7166,7 @@ module SfpLang
7162
7166
  end
7163
7167
  case alt_116
7164
7168
  when 1
7165
- # at line 601:11: NL
7169
+ # at line 605:11: NL
7166
7170
  __NL291__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_class_quantification_1777 )
7167
7171
  tree_for_NL291 = @adaptor.create_with_payload( __NL291__ )
7168
7172
  @adaptor.add_child( root_0, tree_for_NL291 )
@@ -7180,7 +7184,7 @@ module SfpLang
7180
7184
  end
7181
7185
 
7182
7186
 
7183
- # at line 602:3: ( constraint_statement ( NL )+ | constraint_different ( NL )+ | constraint_iterator ( NL )+ )*
7187
+ # at line 606:3: ( constraint_statement ( NL )+ | constraint_different ( NL )+ | constraint_iterator ( NL )+ )*
7184
7188
  while true # decision 120
7185
7189
  alt_120 = 4
7186
7190
  case look_120 = @input.peek( 1 )
@@ -7190,7 +7194,7 @@ module SfpLang
7190
7194
  end
7191
7195
  case alt_120
7192
7196
  when 1
7193
- # at line 602:5: constraint_statement ( NL )+
7197
+ # at line 606:5: constraint_statement ( NL )+
7194
7198
  @state.following.push( TOKENS_FOLLOWING_constraint_statement_IN_constraint_class_quantification_1784 )
7195
7199
  constraint_statement292 = constraint_statement
7196
7200
  @state.following.pop
@@ -7201,7 +7205,7 @@ module SfpLang
7201
7205
  @now[( constraint_statement292.nil? ? nil : constraint_statement292.key )] = ( constraint_statement292.nil? ? nil : constraint_statement292.val )
7202
7206
  # <-- action
7203
7207
 
7204
- # at file 604:4: ( NL )+
7208
+ # at file 608:4: ( NL )+
7205
7209
  match_count_117 = 0
7206
7210
  while true
7207
7211
  alt_117 = 2
@@ -7213,7 +7217,7 @@ module SfpLang
7213
7217
  end
7214
7218
  case alt_117
7215
7219
  when 1
7216
- # at line 604:4: NL
7220
+ # at line 608:4: NL
7217
7221
  __NL293__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_class_quantification_1794 )
7218
7222
  tree_for_NL293 = @adaptor.create_with_payload( __NL293__ )
7219
7223
  @adaptor.add_child( root_0, tree_for_NL293 )
@@ -7233,13 +7237,13 @@ module SfpLang
7233
7237
 
7234
7238
 
7235
7239
  when 2
7236
- # at line 605:5: constraint_different ( NL )+
7240
+ # at line 609:5: constraint_different ( NL )+
7237
7241
  @state.following.push( TOKENS_FOLLOWING_constraint_different_IN_constraint_class_quantification_1801 )
7238
7242
  constraint_different294 = constraint_different
7239
7243
  @state.following.pop
7240
7244
  @adaptor.add_child( root_0, constraint_different294.tree )
7241
7245
 
7242
- # at file 605:26: ( NL )+
7246
+ # at file 609:26: ( NL )+
7243
7247
  match_count_118 = 0
7244
7248
  while true
7245
7249
  alt_118 = 2
@@ -7251,7 +7255,7 @@ module SfpLang
7251
7255
  end
7252
7256
  case alt_118
7253
7257
  when 1
7254
- # at line 605:26: NL
7258
+ # at line 609:26: NL
7255
7259
  __NL295__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_class_quantification_1803 )
7256
7260
  tree_for_NL295 = @adaptor.create_with_payload( __NL295__ )
7257
7261
  @adaptor.add_child( root_0, tree_for_NL295 )
@@ -7271,13 +7275,13 @@ module SfpLang
7271
7275
 
7272
7276
 
7273
7277
  when 3
7274
- # at line 606:5: constraint_iterator ( NL )+
7278
+ # at line 610:5: constraint_iterator ( NL )+
7275
7279
  @state.following.push( TOKENS_FOLLOWING_constraint_iterator_IN_constraint_class_quantification_1810 )
7276
7280
  constraint_iterator296 = constraint_iterator
7277
7281
  @state.following.pop
7278
7282
  @adaptor.add_child( root_0, constraint_iterator296.tree )
7279
7283
 
7280
- # at file 606:25: ( NL )+
7284
+ # at file 610:25: ( NL )+
7281
7285
  match_count_119 = 0
7282
7286
  while true
7283
7287
  alt_119 = 2
@@ -7289,7 +7293,7 @@ module SfpLang
7289
7293
  end
7290
7294
  case alt_119
7291
7295
  when 1
7292
- # at line 606:25: NL
7296
+ # at line 610:25: NL
7293
7297
  __NL297__ = match( NL, TOKENS_FOLLOWING_NL_IN_constraint_class_quantification_1812 )
7294
7298
  tree_for_NL297 = @adaptor.create_with_payload( __NL297__ )
7295
7299
  @adaptor.add_child( root_0, tree_for_NL297 )
@@ -7359,7 +7363,7 @@ module SfpLang
7359
7363
  # parser rule constraint_different
7360
7364
  #
7361
7365
  # (in SfpLang.g)
7362
- # 612:1: constraint_different : ':different' '(' path ')' ;
7366
+ # 616:1: constraint_different : ':different' '(' path ')' ;
7363
7367
  #
7364
7368
  def constraint_different
7365
7369
  # -> uncomment the next line to manually enable rule tracing
@@ -7388,7 +7392,7 @@ module SfpLang
7388
7392
  root_0 = @adaptor.create_flat_list
7389
7393
 
7390
7394
 
7391
- # at line 613:4: ':different' '(' path ')'
7395
+ # at line 617:4: ':different' '(' path ')'
7392
7396
  string_literal299 = match( T__28, TOKENS_FOLLOWING_T__28_IN_constraint_different_1839 )
7393
7397
  tree_for_string_literal299 = @adaptor.create_with_payload( string_literal299 )
7394
7398
  @adaptor.add_child( root_0, tree_for_string_literal299 )
@@ -7453,7 +7457,7 @@ module SfpLang
7453
7457
  # parser rule constraint_statement
7454
7458
  #
7455
7459
  # (in SfpLang.g)
7456
- # 625: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 );
7460
+ # 629: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 );
7457
7461
  #
7458
7462
  def constraint_statement
7459
7463
  # -> uncomment the next line to manually enable rule tracing
@@ -7511,7 +7515,7 @@ module SfpLang
7511
7515
  tree_for_string_literal328 = nil
7512
7516
 
7513
7517
  begin
7514
- # at line 626: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 )
7518
+ # at line 630: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 )
7515
7519
  alt_122 = 12
7516
7520
  alt_122 = @dfa122.predict( @input )
7517
7521
  case alt_122
@@ -7519,7 +7523,7 @@ module SfpLang
7519
7523
  root_0 = @adaptor.create_flat_list
7520
7524
 
7521
7525
 
7522
- # at line 626:4: reference
7526
+ # at line 630:4: reference
7523
7527
  @state.following.push( TOKENS_FOLLOWING_reference_IN_constraint_statement_1864 )
7524
7528
  reference303 = reference
7525
7529
  @state.following.pop
@@ -7538,7 +7542,7 @@ module SfpLang
7538
7542
  root_0 = @adaptor.create_flat_list
7539
7543
 
7540
7544
 
7541
- # at line 631:4: 'not' reference
7545
+ # at line 635:4: 'not' reference
7542
7546
  string_literal304 = match( T__72, TOKENS_FOLLOWING_T__72_IN_constraint_statement_1873 )
7543
7547
  tree_for_string_literal304 = @adaptor.create_with_payload( string_literal304 )
7544
7548
  @adaptor.add_child( root_0, tree_for_string_literal304 )
@@ -7562,7 +7566,7 @@ module SfpLang
7562
7566
  root_0 = @adaptor.create_flat_list
7563
7567
 
7564
7568
 
7565
- # at line 636:4: reference equals_op value
7569
+ # at line 640:4: reference equals_op value
7566
7570
  @state.following.push( TOKENS_FOLLOWING_reference_IN_constraint_statement_1884 )
7567
7571
  reference306 = reference
7568
7572
  @state.following.pop
@@ -7591,7 +7595,7 @@ module SfpLang
7591
7595
  root_0 = @adaptor.create_flat_list
7592
7596
 
7593
7597
 
7594
- # at line 641:4: reference equals_op NULL
7598
+ # at line 645:4: reference equals_op NULL
7595
7599
  @state.following.push( TOKENS_FOLLOWING_reference_IN_constraint_statement_1897 )
7596
7600
  reference309 = reference
7597
7601
  @state.following.pop
@@ -7620,7 +7624,7 @@ module SfpLang
7620
7624
  root_0 = @adaptor.create_flat_list
7621
7625
 
7622
7626
 
7623
- # at line 646:4: reference not_equals_op value
7627
+ # at line 650:4: reference not_equals_op value
7624
7628
  @state.following.push( TOKENS_FOLLOWING_reference_IN_constraint_statement_1910 )
7625
7629
  reference312 = reference
7626
7630
  @state.following.pop
@@ -7649,7 +7653,7 @@ module SfpLang
7649
7653
  root_0 = @adaptor.create_flat_list
7650
7654
 
7651
7655
 
7652
- # at line 651:4: reference not_equals_op NULL
7656
+ # at line 655:4: reference not_equals_op NULL
7653
7657
  @state.following.push( TOKENS_FOLLOWING_reference_IN_constraint_statement_1923 )
7654
7658
  reference315 = reference
7655
7659
  @state.following.pop
@@ -7678,7 +7682,7 @@ module SfpLang
7678
7682
  root_0 = @adaptor.create_flat_list
7679
7683
 
7680
7684
 
7681
- # at line 656:4: conditional_constraint
7685
+ # at line 660:4: conditional_constraint
7682
7686
  @state.following.push( TOKENS_FOLLOWING_conditional_constraint_IN_constraint_statement_1936 )
7683
7687
  conditional_constraint318 = conditional_constraint
7684
7688
  @state.following.pop
@@ -7697,13 +7701,13 @@ module SfpLang
7697
7701
  root_0 = @adaptor.create_flat_list
7698
7702
 
7699
7703
 
7700
- # at line 661:4: reference ( 'is' )? 'in' set_value
7704
+ # at line 665:4: reference ( 'is' )? 'in' set_value
7701
7705
  @state.following.push( TOKENS_FOLLOWING_reference_IN_constraint_statement_1945 )
7702
7706
  reference319 = reference
7703
7707
  @state.following.pop
7704
7708
  @adaptor.add_child( root_0, reference319.tree )
7705
7709
 
7706
- # at line 661:14: ( 'is' )?
7710
+ # at line 665:14: ( 'is' )?
7707
7711
  alt_121 = 2
7708
7712
  look_121_0 = @input.peek( 1 )
7709
7713
 
@@ -7712,7 +7716,7 @@ module SfpLang
7712
7716
  end
7713
7717
  case alt_121
7714
7718
  when 1
7715
- # at line 661:14: 'is'
7719
+ # at line 665:14: 'is'
7716
7720
  string_literal320 = match( T__65, TOKENS_FOLLOWING_T__65_IN_constraint_statement_1947 )
7717
7721
  tree_for_string_literal320 = @adaptor.create_with_payload( string_literal320 )
7718
7722
  @adaptor.add_child( root_0, tree_for_string_literal320 )
@@ -7750,7 +7754,7 @@ module SfpLang
7750
7754
  root_0 = @adaptor.create_flat_list
7751
7755
 
7752
7756
 
7753
- # at line 673:4: reference ( 'isnot' | 'isnt' | 'not' ) 'in' set_value
7757
+ # at line 677:4: reference ( 'isnot' | 'isnt' | 'not' ) 'in' set_value
7754
7758
  @state.following.push( TOKENS_FOLLOWING_reference_IN_constraint_statement_1961 )
7755
7759
  reference323 = reference
7756
7760
  @state.following.pop
@@ -7805,7 +7809,7 @@ module SfpLang
7805
7809
  root_0 = @adaptor.create_flat_list
7806
7810
 
7807
7811
 
7808
- # at line 688:4: reference 'has' value
7812
+ # at line 692:4: reference 'has' value
7809
7813
  @state.following.push( TOKENS_FOLLOWING_reference_IN_constraint_statement_1982 )
7810
7814
  reference327 = reference
7811
7815
  @state.following.pop
@@ -7838,7 +7842,7 @@ module SfpLang
7838
7842
  root_0 = @adaptor.create_flat_list
7839
7843
 
7840
7844
 
7841
- # at line 697:4: reference binary_comp comp_value
7845
+ # at line 701:4: reference binary_comp comp_value
7842
7846
  @state.following.push( TOKENS_FOLLOWING_reference_IN_constraint_statement_1995 )
7843
7847
  reference330 = reference
7844
7848
  @state.following.pop
@@ -7867,7 +7871,7 @@ module SfpLang
7867
7871
  root_0 = @adaptor.create_flat_list
7868
7872
 
7869
7873
 
7870
- # at line 702:4: total_constraint
7874
+ # at line 706:4: total_constraint
7871
7875
  @state.following.push( TOKENS_FOLLOWING_total_constraint_IN_constraint_statement_2008 )
7872
7876
  total_constraint333 = total_constraint
7873
7877
  @state.following.pop
@@ -7905,7 +7909,7 @@ module SfpLang
7905
7909
  # parser rule total_constraint
7906
7910
  #
7907
7911
  # (in SfpLang.g)
7908
- # 705:1: total_constraint : 'total(' total_statement ')' binary_comp NUMBER ;
7912
+ # 709:1: total_constraint : 'total(' total_statement ')' binary_comp NUMBER ;
7909
7913
  #
7910
7914
  def total_constraint
7911
7915
  # -> uncomment the next line to manually enable rule tracing
@@ -7935,7 +7939,7 @@ module SfpLang
7935
7939
  root_0 = @adaptor.create_flat_list
7936
7940
 
7937
7941
 
7938
- # at line 706:4: 'total(' total_statement ')' binary_comp NUMBER
7942
+ # at line 710:4: 'total(' total_statement ')' binary_comp NUMBER
7939
7943
  string_literal334 = match( T__82, TOKENS_FOLLOWING_T__82_IN_total_constraint_2019 )
7940
7944
  tree_for_string_literal334 = @adaptor.create_with_payload( string_literal334 )
7941
7945
  @adaptor.add_child( root_0, tree_for_string_literal334 )
@@ -7992,7 +7996,7 @@ module SfpLang
7992
7996
  # parser rule total_statement
7993
7997
  #
7994
7998
  # (in SfpLang.g)
7995
- # 709:1: total_statement : reference equals_op value ;
7999
+ # 713:1: total_statement : reference equals_op value ;
7996
8000
  #
7997
8001
  def total_statement
7998
8002
  # -> uncomment the next line to manually enable rule tracing
@@ -8017,7 +8021,7 @@ module SfpLang
8017
8021
  root_0 = @adaptor.create_flat_list
8018
8022
 
8019
8023
 
8020
- # at line 710:4: reference equals_op value
8024
+ # at line 714:4: reference equals_op value
8021
8025
  @state.following.push( TOKENS_FOLLOWING_reference_IN_total_statement_2038 )
8022
8026
  reference339 = reference
8023
8027
  @state.following.pop
@@ -8064,7 +8068,7 @@ module SfpLang
8064
8068
  # parser rule comp_value
8065
8069
  #
8066
8070
  # (in SfpLang.g)
8067
- # 713:1: comp_value returns [val] : ( NUMBER | reference );
8071
+ # 717:1: comp_value returns [val] : ( NUMBER | reference );
8068
8072
  #
8069
8073
  def comp_value
8070
8074
  # -> uncomment the next line to manually enable rule tracing
@@ -8086,7 +8090,7 @@ module SfpLang
8086
8090
  tree_for_NUMBER342 = nil
8087
8091
 
8088
8092
  begin
8089
- # at line 714:2: ( NUMBER | reference )
8093
+ # at line 718:2: ( NUMBER | reference )
8090
8094
  alt_123 = 2
8091
8095
  look_123_0 = @input.peek( 1 )
8092
8096
 
@@ -8103,7 +8107,7 @@ module SfpLang
8103
8107
  root_0 = @adaptor.create_flat_list
8104
8108
 
8105
8109
 
8106
- # at line 714:4: NUMBER
8110
+ # at line 718:4: NUMBER
8107
8111
  __NUMBER342__ = match( NUMBER, TOKENS_FOLLOWING_NUMBER_IN_comp_value_2057 )
8108
8112
  tree_for_NUMBER342 = @adaptor.create_with_payload( __NUMBER342__ )
8109
8113
  @adaptor.add_child( root_0, tree_for_NUMBER342 )
@@ -8119,7 +8123,7 @@ module SfpLang
8119
8123
  root_0 = @adaptor.create_flat_list
8120
8124
 
8121
8125
 
8122
- # at line 716:4: reference
8126
+ # at line 720:4: reference
8123
8127
  @state.following.push( TOKENS_FOLLOWING_reference_IN_comp_value_2066 )
8124
8128
  reference343 = reference
8125
8129
  @state.following.pop
@@ -8162,7 +8166,7 @@ module SfpLang
8162
8166
  # parser rule conditional_constraint
8163
8167
  #
8164
8168
  # (in SfpLang.g)
8165
- # 720:1: conditional_constraint returns [key, val] : 'if' conditional_constraint_if_part conditional_constraint_then_part ;
8169
+ # 724:1: conditional_constraint returns [key, val] : 'if' conditional_constraint_if_part conditional_constraint_then_part ;
8166
8170
  #
8167
8171
  def conditional_constraint
8168
8172
  # -> uncomment the next line to manually enable rule tracing
@@ -8188,7 +8192,7 @@ module SfpLang
8188
8192
  root_0 = @adaptor.create_flat_list
8189
8193
 
8190
8194
 
8191
- # at line 721:4: 'if' conditional_constraint_if_part conditional_constraint_then_part
8195
+ # at line 725:4: 'if' conditional_constraint_if_part conditional_constraint_then_part
8192
8196
  string_literal344 = match( T__62, TOKENS_FOLLOWING_T__62_IN_conditional_constraint_2085 )
8193
8197
  tree_for_string_literal344 = @adaptor.create_with_payload( string_literal344 )
8194
8198
  @adaptor.add_child( root_0, tree_for_string_literal344 )
@@ -8249,7 +8253,7 @@ module SfpLang
8249
8253
  # parser rule conditional_constraint_if_part
8250
8254
  #
8251
8255
  # (in SfpLang.g)
8252
- # 732:1: conditional_constraint_if_part : ( constraint_statement ( NL )* | '{' ( NL )+ constraint_body '}' ( NL )* );
8256
+ # 736:1: conditional_constraint_if_part : ( constraint_statement ( NL )* | '{' ( NL )+ constraint_body '}' ( NL )* );
8253
8257
  #
8254
8258
  def conditional_constraint_if_part
8255
8259
  # -> uncomment the next line to manually enable rule tracing
@@ -8280,7 +8284,7 @@ module SfpLang
8280
8284
  tree_for_NL353 = nil
8281
8285
 
8282
8286
  begin
8283
- # at line 733:2: ( constraint_statement ( NL )* | '{' ( NL )+ constraint_body '}' ( NL )* )
8287
+ # at line 737:2: ( constraint_statement ( NL )* | '{' ( NL )+ constraint_body '}' ( NL )* )
8284
8288
  alt_127 = 2
8285
8289
  look_127_0 = @input.peek( 1 )
8286
8290
 
@@ -8297,13 +8301,13 @@ module SfpLang
8297
8301
  root_0 = @adaptor.create_flat_list
8298
8302
 
8299
8303
 
8300
- # at line 733:4: constraint_statement ( NL )*
8304
+ # at line 737:4: constraint_statement ( NL )*
8301
8305
  @state.following.push( TOKENS_FOLLOWING_constraint_statement_IN_conditional_constraint_if_part_2112 )
8302
8306
  constraint_statement347 = constraint_statement
8303
8307
  @state.following.pop
8304
8308
  @adaptor.add_child( root_0, constraint_statement347.tree )
8305
8309
 
8306
- # at line 733:25: ( NL )*
8310
+ # at line 737:25: ( NL )*
8307
8311
  while true # decision 124
8308
8312
  alt_124 = 2
8309
8313
  look_124_0 = @input.peek( 1 )
@@ -8314,7 +8318,7 @@ module SfpLang
8314
8318
  end
8315
8319
  case alt_124
8316
8320
  when 1
8317
- # at line 733:25: NL
8321
+ # at line 737:25: NL
8318
8322
  __NL348__ = match( NL, TOKENS_FOLLOWING_NL_IN_conditional_constraint_if_part_2114 )
8319
8323
  tree_for_NL348 = @adaptor.create_with_payload( __NL348__ )
8320
8324
  @adaptor.add_child( root_0, tree_for_NL348 )
@@ -8341,7 +8345,7 @@ module SfpLang
8341
8345
  root_0 = @adaptor.create_flat_list
8342
8346
 
8343
8347
 
8344
- # at line 740:4: '{' ( NL )+ constraint_body '}' ( NL )*
8348
+ # at line 744:4: '{' ( NL )+ constraint_body '}' ( NL )*
8345
8349
  char_literal349 = match( T__84, TOKENS_FOLLOWING_T__84_IN_conditional_constraint_if_part_2124 )
8346
8350
  tree_for_char_literal349 = @adaptor.create_with_payload( char_literal349 )
8347
8351
  @adaptor.add_child( root_0, tree_for_char_literal349 )
@@ -8357,7 +8361,7 @@ module SfpLang
8357
8361
 
8358
8362
  # <-- action
8359
8363
 
8360
- # at file 747:3: ( NL )+
8364
+ # at file 751:3: ( NL )+
8361
8365
  match_count_125 = 0
8362
8366
  while true
8363
8367
  alt_125 = 2
@@ -8369,7 +8373,7 @@ module SfpLang
8369
8373
  end
8370
8374
  case alt_125
8371
8375
  when 1
8372
- # at line 747:3: NL
8376
+ # at line 751:3: NL
8373
8377
  __NL350__ = match( NL, TOKENS_FOLLOWING_NL_IN_conditional_constraint_if_part_2132 )
8374
8378
  tree_for_NL350 = @adaptor.create_with_payload( __NL350__ )
8375
8379
  @adaptor.add_child( root_0, tree_for_NL350 )
@@ -8397,7 +8401,7 @@ module SfpLang
8397
8401
  @adaptor.add_child( root_0, tree_for_char_literal352 )
8398
8402
 
8399
8403
 
8400
- # at line 748:7: ( NL )*
8404
+ # at line 752:7: ( NL )*
8401
8405
  while true # decision 126
8402
8406
  alt_126 = 2
8403
8407
  look_126_0 = @input.peek( 1 )
@@ -8408,7 +8412,7 @@ module SfpLang
8408
8412
  end
8409
8413
  case alt_126
8410
8414
  when 1
8411
- # at line 748:7: NL
8415
+ # at line 752:7: NL
8412
8416
  __NL353__ = match( NL, TOKENS_FOLLOWING_NL_IN_conditional_constraint_if_part_2141 )
8413
8417
  tree_for_NL353 = @adaptor.create_with_payload( __NL353__ )
8414
8418
  @adaptor.add_child( root_0, tree_for_NL353 )
@@ -8457,7 +8461,7 @@ module SfpLang
8457
8461
  # parser rule conditional_constraint_then_part
8458
8462
  #
8459
8463
  # (in SfpLang.g)
8460
- # 752:1: conditional_constraint_then_part : ( 'then' constraint_statement | 'then' '{' ( NL )+ constraint_body '}' );
8464
+ # 756:1: conditional_constraint_then_part : ( 'then' constraint_statement | 'then' '{' ( NL )+ constraint_body '}' );
8461
8465
  #
8462
8466
  def conditional_constraint_then_part
8463
8467
  # -> uncomment the next line to manually enable rule tracing
@@ -8488,7 +8492,7 @@ module SfpLang
8488
8492
  tree_for_char_literal360 = nil
8489
8493
 
8490
8494
  begin
8491
- # at line 753:2: ( 'then' constraint_statement | 'then' '{' ( NL )+ constraint_body '}' )
8495
+ # at line 757:2: ( 'then' constraint_statement | 'then' '{' ( NL )+ constraint_body '}' )
8492
8496
  alt_129 = 2
8493
8497
  look_129_0 = @input.peek( 1 )
8494
8498
 
@@ -8512,7 +8516,7 @@ module SfpLang
8512
8516
  root_0 = @adaptor.create_flat_list
8513
8517
 
8514
8518
 
8515
- # at line 753:4: 'then' constraint_statement
8519
+ # at line 757:4: 'then' constraint_statement
8516
8520
  string_literal354 = match( T__81, TOKENS_FOLLOWING_T__81_IN_conditional_constraint_then_part_2157 )
8517
8521
  tree_for_string_literal354 = @adaptor.create_with_payload( string_literal354 )
8518
8522
  @adaptor.add_child( root_0, tree_for_string_literal354 )
@@ -8538,7 +8542,7 @@ module SfpLang
8538
8542
  root_0 = @adaptor.create_flat_list
8539
8543
 
8540
8544
 
8541
- # at line 760:4: 'then' '{' ( NL )+ constraint_body '}'
8545
+ # at line 764:4: 'then' '{' ( NL )+ constraint_body '}'
8542
8546
  string_literal356 = match( T__81, TOKENS_FOLLOWING_T__81_IN_conditional_constraint_then_part_2168 )
8543
8547
  tree_for_string_literal356 = @adaptor.create_with_payload( string_literal356 )
8544
8548
  @adaptor.add_child( root_0, tree_for_string_literal356 )
@@ -8559,7 +8563,7 @@ module SfpLang
8559
8563
  @adaptor.add_child( root_0, tree_for_char_literal357 )
8560
8564
 
8561
8565
 
8562
- # at file 767:7: ( NL )+
8566
+ # at file 771:7: ( NL )+
8563
8567
  match_count_128 = 0
8564
8568
  while true
8565
8569
  alt_128 = 2
@@ -8571,7 +8575,7 @@ module SfpLang
8571
8575
  end
8572
8576
  case alt_128
8573
8577
  when 1
8574
- # at line 767:7: NL
8578
+ # at line 771:7: NL
8575
8579
  __NL358__ = match( NL, TOKENS_FOLLOWING_NL_IN_conditional_constraint_then_part_2178 )
8576
8580
  tree_for_NL358 = @adaptor.create_with_payload( __NL358__ )
8577
8581
  @adaptor.add_child( root_0, tree_for_NL358 )
@@ -8636,7 +8640,7 @@ module SfpLang
8636
8640
  # parser rule effect_body
8637
8641
  #
8638
8642
  # (in SfpLang.g)
8639
- # 771:1: effect_body : ( ( mutation | mutation_iterator ) ( NL )+ )* ;
8643
+ # 775:1: effect_body : ( ( mutation | mutation_iterator ) ( NL )+ )* ;
8640
8644
  #
8641
8645
  def effect_body
8642
8646
  # -> uncomment the next line to manually enable rule tracing
@@ -8662,8 +8666,8 @@ module SfpLang
8662
8666
  root_0 = @adaptor.create_flat_list
8663
8667
 
8664
8668
 
8665
- # at line 772:4: ( ( mutation | mutation_iterator ) ( NL )+ )*
8666
- # at line 772:4: ( ( mutation | mutation_iterator ) ( NL )+ )*
8669
+ # at line 776:4: ( ( mutation | mutation_iterator ) ( NL )+ )*
8670
+ # at line 776:4: ( ( mutation | mutation_iterator ) ( NL )+ )*
8667
8671
  while true # decision 132
8668
8672
  alt_132 = 2
8669
8673
  look_132_0 = @input.peek( 1 )
@@ -8674,8 +8678,8 @@ module SfpLang
8674
8678
  end
8675
8679
  case alt_132
8676
8680
  when 1
8677
- # at line 773:4: ( mutation | mutation_iterator ) ( NL )+
8678
- # at line 773:4: ( mutation | mutation_iterator )
8681
+ # at line 777:4: ( mutation | mutation_iterator ) ( NL )+
8682
+ # at line 777:4: ( mutation | mutation_iterator )
8679
8683
  alt_130 = 2
8680
8684
  look_130_0 = @input.peek( 1 )
8681
8685
 
@@ -8689,7 +8693,7 @@ module SfpLang
8689
8693
  end
8690
8694
  case alt_130
8691
8695
  when 1
8692
- # at line 773:6: mutation
8696
+ # at line 777:6: mutation
8693
8697
  @state.following.push( TOKENS_FOLLOWING_mutation_IN_effect_body_2205 )
8694
8698
  mutation361 = mutation
8695
8699
  @state.following.pop
@@ -8702,7 +8706,7 @@ module SfpLang
8702
8706
 
8703
8707
 
8704
8708
  when 2
8705
- # at line 775:6: mutation_iterator
8709
+ # at line 779:6: mutation_iterator
8706
8710
  @state.following.push( TOKENS_FOLLOWING_mutation_iterator_IN_effect_body_2218 )
8707
8711
  mutation_iterator362 = mutation_iterator
8708
8712
  @state.following.pop
@@ -8710,7 +8714,7 @@ module SfpLang
8710
8714
 
8711
8715
 
8712
8716
  end
8713
- # at file 777:3: ( NL )+
8717
+ # at file 781:3: ( NL )+
8714
8718
  match_count_131 = 0
8715
8719
  while true
8716
8720
  alt_131 = 2
@@ -8722,7 +8726,7 @@ module SfpLang
8722
8726
  end
8723
8727
  case alt_131
8724
8728
  when 1
8725
- # at line 777:3: NL
8729
+ # at line 781:3: NL
8726
8730
  __NL363__ = match( NL, TOKENS_FOLLOWING_NL_IN_effect_body_2227 )
8727
8731
  tree_for_NL363 = @adaptor.create_with_payload( __NL363__ )
8728
8732
  @adaptor.add_child( root_0, tree_for_NL363 )
@@ -8777,7 +8781,7 @@ module SfpLang
8777
8781
  # parser rule mutation_iterator
8778
8782
  #
8779
8783
  # (in SfpLang.g)
8780
- # 780:1: mutation_iterator : 'foreach' path 'as' ID ( NL )* '{' ( NL )+ ( mutation ( NL )+ )* '}' ;
8784
+ # 784:1: mutation_iterator : 'foreach' path 'as' ID ( NL )* '{' ( NL )+ ( mutation ( NL )+ )* '}' ;
8781
8785
  #
8782
8786
  def mutation_iterator
8783
8787
  # -> uncomment the next line to manually enable rule tracing
@@ -8817,7 +8821,7 @@ module SfpLang
8817
8821
  root_0 = @adaptor.create_flat_list
8818
8822
 
8819
8823
 
8820
- # at line 781:4: 'foreach' path 'as' ID ( NL )* '{' ( NL )+ ( mutation ( NL )+ )* '}'
8824
+ # at line 785:4: 'foreach' path 'as' ID ( NL )* '{' ( NL )+ ( mutation ( NL )+ )* '}'
8821
8825
  string_literal364 = match( T__57, TOKENS_FOLLOWING_T__57_IN_mutation_iterator_2242 )
8822
8826
  tree_for_string_literal364 = @adaptor.create_with_payload( string_literal364 )
8823
8827
  @adaptor.add_child( root_0, tree_for_string_literal364 )
@@ -8838,7 +8842,7 @@ module SfpLang
8838
8842
  @adaptor.add_child( root_0, tree_for_ID367 )
8839
8843
 
8840
8844
 
8841
- # at line 781:27: ( NL )*
8845
+ # at line 785:27: ( NL )*
8842
8846
  while true # decision 133
8843
8847
  alt_133 = 2
8844
8848
  look_133_0 = @input.peek( 1 )
@@ -8849,7 +8853,7 @@ module SfpLang
8849
8853
  end
8850
8854
  case alt_133
8851
8855
  when 1
8852
- # at line 781:27: NL
8856
+ # at line 785:27: NL
8853
8857
  __NL368__ = match( NL, TOKENS_FOLLOWING_NL_IN_mutation_iterator_2250 )
8854
8858
  tree_for_NL368 = @adaptor.create_with_payload( __NL368__ )
8855
8859
  @adaptor.add_child( root_0, tree_for_NL368 )
@@ -8866,7 +8870,7 @@ module SfpLang
8866
8870
  @adaptor.add_child( root_0, tree_for_char_literal369 )
8867
8871
 
8868
8872
 
8869
- # at file 781:35: ( NL )+
8873
+ # at file 785:35: ( NL )+
8870
8874
  match_count_134 = 0
8871
8875
  while true
8872
8876
  alt_134 = 2
@@ -8878,7 +8882,7 @@ module SfpLang
8878
8882
  end
8879
8883
  case alt_134
8880
8884
  when 1
8881
- # at line 781:35: NL
8885
+ # at line 785:35: NL
8882
8886
  __NL370__ = match( NL, TOKENS_FOLLOWING_NL_IN_mutation_iterator_2255 )
8883
8887
  tree_for_NL370 = @adaptor.create_with_payload( __NL370__ )
8884
8888
  @adaptor.add_child( root_0, tree_for_NL370 )
@@ -8909,7 +8913,7 @@ module SfpLang
8909
8913
 
8910
8914
  # <-- action
8911
8915
 
8912
- # at line 791:3: ( mutation ( NL )+ )*
8916
+ # at line 795:3: ( mutation ( NL )+ )*
8913
8917
  while true # decision 136
8914
8918
  alt_136 = 2
8915
8919
  look_136_0 = @input.peek( 1 )
@@ -8920,7 +8924,7 @@ module SfpLang
8920
8924
  end
8921
8925
  case alt_136
8922
8926
  when 1
8923
- # at line 791:4: mutation ( NL )+
8927
+ # at line 795:4: mutation ( NL )+
8924
8928
  @state.following.push( TOKENS_FOLLOWING_mutation_IN_mutation_iterator_2265 )
8925
8929
  mutation371 = mutation
8926
8930
  @state.following.pop
@@ -8931,7 +8935,7 @@ module SfpLang
8931
8935
  @now[( mutation371.nil? ? nil : mutation371.key )] = ( mutation371.nil? ? nil : mutation371.val )
8932
8936
  # <-- action
8933
8937
 
8934
- # at file 793:3: ( NL )+
8938
+ # at file 797:3: ( NL )+
8935
8939
  match_count_135 = 0
8936
8940
  while true
8937
8941
  alt_135 = 2
@@ -8943,7 +8947,7 @@ module SfpLang
8943
8947
  end
8944
8948
  case alt_135
8945
8949
  when 1
8946
- # at line 793:3: NL
8950
+ # at line 797:3: NL
8947
8951
  __NL372__ = match( NL, TOKENS_FOLLOWING_NL_IN_mutation_iterator_2273 )
8948
8952
  tree_for_NL372 = @adaptor.create_with_payload( __NL372__ )
8949
8953
  @adaptor.add_child( root_0, tree_for_NL372 )
@@ -9008,7 +9012,7 @@ module SfpLang
9008
9012
  # parser rule mutation
9009
9013
  #
9010
9014
  # (in SfpLang.g)
9011
- # 798: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 ')' );
9015
+ # 802: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 ')' );
9012
9016
  #
9013
9017
  def mutation
9014
9018
  # -> uncomment the next line to manually enable rule tracing
@@ -9060,7 +9064,7 @@ module SfpLang
9060
9064
  tree_for_char_literal397 = nil
9061
9065
 
9062
9066
  begin
9063
- # at line 799: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 ')' )
9067
+ # at line 803: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 ')' )
9064
9068
  alt_138 = 7
9065
9069
  alt_138 = @dfa138.predict( @input )
9066
9070
  case alt_138
@@ -9068,7 +9072,7 @@ module SfpLang
9068
9072
  root_0 = @adaptor.create_flat_list
9069
9073
 
9070
9074
 
9071
- # at line 799:4: reference equals_op value
9075
+ # at line 803:4: reference equals_op value
9072
9076
  @state.following.push( TOKENS_FOLLOWING_reference_IN_mutation_2299 )
9073
9077
  reference374 = reference
9074
9078
  @state.following.pop
@@ -9100,7 +9104,7 @@ module SfpLang
9100
9104
  root_0 = @adaptor.create_flat_list
9101
9105
 
9102
9106
 
9103
- # at line 807:4: reference equals_op NULL
9107
+ # at line 811:4: reference equals_op NULL
9104
9108
  @state.following.push( TOKENS_FOLLOWING_reference_IN_mutation_2312 )
9105
9109
  reference377 = reference
9106
9110
  @state.following.pop
@@ -9132,7 +9136,7 @@ module SfpLang
9132
9136
  root_0 = @adaptor.create_flat_list
9133
9137
 
9134
9138
 
9135
- # at line 815:4: reference binary_op NUMBER
9139
+ # at line 819:4: reference binary_op NUMBER
9136
9140
  @state.following.push( TOKENS_FOLLOWING_reference_IN_mutation_2325 )
9137
9141
  reference380 = reference
9138
9142
  @state.following.pop
@@ -9164,7 +9168,7 @@ module SfpLang
9164
9168
  root_0 = @adaptor.create_flat_list
9165
9169
 
9166
9170
 
9167
- # at line 823:4: reference 'is' 'new' path ( object_body )?
9171
+ # at line 827:4: reference 'is' 'new' path ( object_body )?
9168
9172
  @state.following.push( TOKENS_FOLLOWING_reference_IN_mutation_2338 )
9169
9173
  reference383 = reference
9170
9174
  @state.following.pop
@@ -9198,7 +9202,7 @@ module SfpLang
9198
9202
 
9199
9203
  # <-- action
9200
9204
 
9201
- # at line 833:3: ( object_body )?
9205
+ # at line 837:3: ( object_body )?
9202
9206
  alt_137 = 2
9203
9207
  look_137_0 = @input.peek( 1 )
9204
9208
 
@@ -9207,7 +9211,7 @@ module SfpLang
9207
9211
  end
9208
9212
  case alt_137
9209
9213
  when 1
9210
- # at line 833:3: object_body
9214
+ # at line 837:3: object_body
9211
9215
  @state.following.push( TOKENS_FOLLOWING_object_body_IN_mutation_2352 )
9212
9216
  object_body387 = object_body
9213
9217
  @state.following.pop
@@ -9230,7 +9234,7 @@ module SfpLang
9230
9234
  root_0 = @adaptor.create_flat_list
9231
9235
 
9232
9236
 
9233
- # at line 840:4: 'delete' path
9237
+ # at line 844:4: 'delete' path
9234
9238
  string_literal388 = match( T__49, TOKENS_FOLLOWING_T__49_IN_mutation_2362 )
9235
9239
  tree_for_string_literal388 = @adaptor.create_with_payload( string_literal388 )
9236
9240
  @adaptor.add_child( root_0, tree_for_string_literal388 )
@@ -9258,7 +9262,7 @@ module SfpLang
9258
9262
  root_0 = @adaptor.create_flat_list
9259
9263
 
9260
9264
 
9261
- # at line 849:4: reference 'add(' value ')'
9265
+ # at line 853:4: reference 'add(' value ')'
9262
9266
  @state.following.push( TOKENS_FOLLOWING_reference_IN_mutation_2373 )
9263
9267
  reference390 = reference
9264
9268
  @state.following.pop
@@ -9295,7 +9299,7 @@ module SfpLang
9295
9299
  root_0 = @adaptor.create_flat_list
9296
9300
 
9297
9301
 
9298
- # at line 857:4: reference 'remove(' value ')'
9302
+ # at line 861:4: reference 'remove(' value ')'
9299
9303
  @state.following.push( TOKENS_FOLLOWING_reference_IN_mutation_2388 )
9300
9304
  reference394 = reference
9301
9305
  @state.following.pop
@@ -9359,7 +9363,7 @@ module SfpLang
9359
9363
  # parser rule set_value
9360
9364
  #
9361
9365
  # (in SfpLang.g)
9362
- # 867:1: set_value returns [val] : '(' ( set_item ( ',' ( NL )* set_item )* )? ')' ;
9366
+ # 871:1: set_value returns [val] : '(' ( set_item ( ',' ( NL )* set_item )* )? ')' ;
9363
9367
  #
9364
9368
  def set_value
9365
9369
  # -> uncomment the next line to manually enable rule tracing
@@ -9391,7 +9395,7 @@ module SfpLang
9391
9395
  root_0 = @adaptor.create_flat_list
9392
9396
 
9393
9397
 
9394
- # at line 868:4: '(' ( set_item ( ',' ( NL )* set_item )* )? ')'
9398
+ # at line 872:4: '(' ( set_item ( ',' ( NL )* set_item )* )? ')'
9395
9399
  char_literal398 = match( T__19, TOKENS_FOLLOWING_T__19_IN_set_value_2413 )
9396
9400
  tree_for_char_literal398 = @adaptor.create_with_payload( char_literal398 )
9397
9401
  @adaptor.add_child( root_0, tree_for_char_literal398 )
@@ -9402,7 +9406,7 @@ module SfpLang
9402
9406
  @set = Array.new
9403
9407
  # <-- action
9404
9408
 
9405
- # at line 870:3: ( set_item ( ',' ( NL )* set_item )* )?
9409
+ # at line 874:3: ( set_item ( ',' ( NL )* set_item )* )?
9406
9410
  alt_141 = 2
9407
9411
  look_141_0 = @input.peek( 1 )
9408
9412
 
@@ -9411,13 +9415,13 @@ module SfpLang
9411
9415
  end
9412
9416
  case alt_141
9413
9417
  when 1
9414
- # at line 870:4: set_item ( ',' ( NL )* set_item )*
9418
+ # at line 874:4: set_item ( ',' ( NL )* set_item )*
9415
9419
  @state.following.push( TOKENS_FOLLOWING_set_item_IN_set_value_2422 )
9416
9420
  set_item399 = set_item
9417
9421
  @state.following.pop
9418
9422
  @adaptor.add_child( root_0, set_item399.tree )
9419
9423
 
9420
- # at line 870:13: ( ',' ( NL )* set_item )*
9424
+ # at line 874:13: ( ',' ( NL )* set_item )*
9421
9425
  while true # decision 140
9422
9426
  alt_140 = 2
9423
9427
  look_140_0 = @input.peek( 1 )
@@ -9428,13 +9432,13 @@ module SfpLang
9428
9432
  end
9429
9433
  case alt_140
9430
9434
  when 1
9431
- # at line 870:14: ',' ( NL )* set_item
9435
+ # at line 874:14: ',' ( NL )* set_item
9432
9436
  char_literal400 = match( T__23, TOKENS_FOLLOWING_T__23_IN_set_value_2425 )
9433
9437
  tree_for_char_literal400 = @adaptor.create_with_payload( char_literal400 )
9434
9438
  @adaptor.add_child( root_0, tree_for_char_literal400 )
9435
9439
 
9436
9440
 
9437
- # at line 870:18: ( NL )*
9441
+ # at line 874:18: ( NL )*
9438
9442
  while true # decision 139
9439
9443
  alt_139 = 2
9440
9444
  look_139_0 = @input.peek( 1 )
@@ -9445,7 +9449,7 @@ module SfpLang
9445
9449
  end
9446
9450
  case alt_139
9447
9451
  when 1
9448
- # at line 870:18: NL
9452
+ # at line 874:18: NL
9449
9453
  __NL401__ = match( NL, TOKENS_FOLLOWING_NL_IN_set_value_2427 )
9450
9454
  tree_for_NL401 = @adaptor.create_with_payload( __NL401__ )
9451
9455
  @adaptor.add_child( root_0, tree_for_NL401 )
@@ -9511,7 +9515,7 @@ module SfpLang
9511
9515
  # parser rule set_item
9512
9516
  #
9513
9517
  # (in SfpLang.g)
9514
- # 875:1: set_item : value ;
9518
+ # 879:1: set_item : value ;
9515
9519
  #
9516
9520
  def set_item
9517
9521
  # -> uncomment the next line to manually enable rule tracing
@@ -9534,7 +9538,7 @@ module SfpLang
9534
9538
  root_0 = @adaptor.create_flat_list
9535
9539
 
9536
9540
 
9537
- # at line 876:4: value
9541
+ # at line 880:4: value
9538
9542
  @state.following.push( TOKENS_FOLLOWING_value_IN_set_item_2453 )
9539
9543
  value404 = value
9540
9544
  @state.following.pop
@@ -9576,7 +9580,7 @@ module SfpLang
9576
9580
  # parser rule value
9577
9581
  #
9578
9582
  # (in SfpLang.g)
9579
- # 880:1: value returns [val, type] : ( primitive_value | reference | set_value | 'any' );
9583
+ # 884:1: value returns [val, type] : ( primitive_value | reference | set_value | 'any' );
9580
9584
  #
9581
9585
  def value
9582
9586
  # -> uncomment the next line to manually enable rule tracing
@@ -9600,7 +9604,7 @@ module SfpLang
9600
9604
  tree_for_string_literal408 = nil
9601
9605
 
9602
9606
  begin
9603
- # at line 881:2: ( primitive_value | reference | set_value | 'any' )
9607
+ # at line 885:2: ( primitive_value | reference | set_value | 'any' )
9604
9608
  alt_142 = 4
9605
9609
  case look_142 = @input.peek( 1 )
9606
9610
  when BOOLEAN, MULTILINE_STRING, NUMBER, STRING then alt_142 = 1
@@ -9616,7 +9620,7 @@ module SfpLang
9616
9620
  root_0 = @adaptor.create_flat_list
9617
9621
 
9618
9622
 
9619
- # at line 881:4: primitive_value
9623
+ # at line 885:4: primitive_value
9620
9624
  @state.following.push( TOKENS_FOLLOWING_primitive_value_IN_value_2472 )
9621
9625
  primitive_value405 = primitive_value
9622
9626
  @state.following.pop
@@ -9635,7 +9639,7 @@ module SfpLang
9635
9639
  root_0 = @adaptor.create_flat_list
9636
9640
 
9637
9641
 
9638
- # at line 886:4: reference
9642
+ # at line 890:4: reference
9639
9643
  @state.following.push( TOKENS_FOLLOWING_reference_IN_value_2481 )
9640
9644
  reference406 = reference
9641
9645
  @state.following.pop
@@ -9654,7 +9658,7 @@ module SfpLang
9654
9658
  root_0 = @adaptor.create_flat_list
9655
9659
 
9656
9660
 
9657
- # at line 891:4: set_value
9661
+ # at line 895:4: set_value
9658
9662
  @state.following.push( TOKENS_FOLLOWING_set_value_IN_value_2490 )
9659
9663
  set_value407 = set_value
9660
9664
  @state.following.pop
@@ -9673,7 +9677,7 @@ module SfpLang
9673
9677
  root_0 = @adaptor.create_flat_list
9674
9678
 
9675
9679
 
9676
- # at line 896:4: 'any'
9680
+ # at line 900:4: 'any'
9677
9681
  string_literal408 = match( T__40, TOKENS_FOLLOWING_T__40_IN_value_2499 )
9678
9682
  tree_for_string_literal408 = @adaptor.create_with_payload( string_literal408 )
9679
9683
  @adaptor.add_child( root_0, tree_for_string_literal408 )
@@ -9719,7 +9723,7 @@ module SfpLang
9719
9723
  # parser rule primitive_value
9720
9724
  #
9721
9725
  # (in SfpLang.g)
9722
- # 903:1: primitive_value returns [val, type] : ( BOOLEAN | NUMBER | STRING | MULTILINE_STRING );
9726
+ # 907:1: primitive_value returns [val, type] : ( BOOLEAN | NUMBER | STRING | MULTILINE_STRING );
9723
9727
  #
9724
9728
  def primitive_value
9725
9729
  # -> uncomment the next line to manually enable rule tracing
@@ -9746,7 +9750,7 @@ module SfpLang
9746
9750
  tree_for_MULTILINE_STRING412 = nil
9747
9751
 
9748
9752
  begin
9749
- # at line 904:2: ( BOOLEAN | NUMBER | STRING | MULTILINE_STRING )
9753
+ # at line 908:2: ( BOOLEAN | NUMBER | STRING | MULTILINE_STRING )
9750
9754
  alt_143 = 4
9751
9755
  case look_143 = @input.peek( 1 )
9752
9756
  when BOOLEAN then alt_143 = 1
@@ -9762,7 +9766,7 @@ module SfpLang
9762
9766
  root_0 = @adaptor.create_flat_list
9763
9767
 
9764
9768
 
9765
- # at line 904:4: BOOLEAN
9769
+ # at line 908:4: BOOLEAN
9766
9770
  __BOOLEAN409__ = match( BOOLEAN, TOKENS_FOLLOWING_BOOLEAN_IN_primitive_value_2518 )
9767
9771
  tree_for_BOOLEAN409 = @adaptor.create_with_payload( __BOOLEAN409__ )
9768
9772
  @adaptor.add_child( root_0, tree_for_BOOLEAN409 )
@@ -9785,7 +9789,7 @@ module SfpLang
9785
9789
  root_0 = @adaptor.create_flat_list
9786
9790
 
9787
9791
 
9788
- # at line 913:4: NUMBER
9792
+ # at line 917:4: NUMBER
9789
9793
  __NUMBER410__ = match( NUMBER, TOKENS_FOLLOWING_NUMBER_IN_primitive_value_2527 )
9790
9794
  tree_for_NUMBER410 = @adaptor.create_with_payload( __NUMBER410__ )
9791
9795
  @adaptor.add_child( root_0, tree_for_NUMBER410 )
@@ -9804,7 +9808,7 @@ module SfpLang
9804
9808
  root_0 = @adaptor.create_flat_list
9805
9809
 
9806
9810
 
9807
- # at line 918:4: STRING
9811
+ # at line 922:4: STRING
9808
9812
  __STRING411__ = match( STRING, TOKENS_FOLLOWING_STRING_IN_primitive_value_2536 )
9809
9813
  tree_for_STRING411 = @adaptor.create_with_payload( __STRING411__ )
9810
9814
  @adaptor.add_child( root_0, tree_for_STRING411 )
@@ -9823,7 +9827,7 @@ module SfpLang
9823
9827
  root_0 = @adaptor.create_flat_list
9824
9828
 
9825
9829
 
9826
- # at line 923:4: MULTILINE_STRING
9830
+ # at line 927:4: MULTILINE_STRING
9827
9831
  __MULTILINE_STRING412__ = match( MULTILINE_STRING, TOKENS_FOLLOWING_MULTILINE_STRING_IN_primitive_value_2545 )
9828
9832
  tree_for_MULTILINE_STRING412 = @adaptor.create_with_payload( __MULTILINE_STRING412__ )
9829
9833
  @adaptor.add_child( root_0, tree_for_MULTILINE_STRING412 )
@@ -9869,7 +9873,7 @@ module SfpLang
9869
9873
  # parser rule path
9870
9874
  #
9871
9875
  # (in SfpLang.g)
9872
- # 930:1: path : ID ( '.' ID )* ;
9876
+ # 934:1: path : ID ( '.' ID )* ;
9873
9877
  #
9874
9878
  def path
9875
9879
  # -> uncomment the next line to manually enable rule tracing
@@ -9897,13 +9901,13 @@ module SfpLang
9897
9901
  root_0 = @adaptor.create_flat_list
9898
9902
 
9899
9903
 
9900
- # at line 931:4: ID ( '.' ID )*
9904
+ # at line 935:4: ID ( '.' ID )*
9901
9905
  __ID413__ = match( ID, TOKENS_FOLLOWING_ID_IN_path_2560 )
9902
9906
  tree_for_ID413 = @adaptor.create_with_payload( __ID413__ )
9903
9907
  @adaptor.add_child( root_0, tree_for_ID413 )
9904
9908
 
9905
9909
 
9906
- # at line 931:6: ( '.' ID )*
9910
+ # at line 935:6: ( '.' ID )*
9907
9911
  while true # decision 144
9908
9912
  alt_144 = 2
9909
9913
  look_144_0 = @input.peek( 1 )
@@ -9914,7 +9918,7 @@ module SfpLang
9914
9918
  end
9915
9919
  case alt_144
9916
9920
  when 1
9917
- # at line 931:7: '.' ID
9921
+ # at line 935:7: '.' ID
9918
9922
  char_literal414 = match( T__25, TOKENS_FOLLOWING_T__25_IN_path_2562 )
9919
9923
  tree_for_char_literal414 = @adaptor.create_with_payload( char_literal414 )
9920
9924
  @adaptor.add_child( root_0, tree_for_char_literal414 )
@@ -9962,7 +9966,7 @@ module SfpLang
9962
9966
  # parser rule path_with_index
9963
9967
  #
9964
9968
  # (in SfpLang.g)
9965
- # 934:1: path_with_index : id_ref ( '.' id_ref )* ;
9969
+ # 938:1: path_with_index : id_ref ( '.' id_ref )* ;
9966
9970
  #
9967
9971
  def path_with_index
9968
9972
  # -> uncomment the next line to manually enable rule tracing
@@ -9988,13 +9992,13 @@ module SfpLang
9988
9992
  root_0 = @adaptor.create_flat_list
9989
9993
 
9990
9994
 
9991
- # at line 935:4: id_ref ( '.' id_ref )*
9995
+ # at line 939:4: id_ref ( '.' id_ref )*
9992
9996
  @state.following.push( TOKENS_FOLLOWING_id_ref_IN_path_with_index_2576 )
9993
9997
  id_ref416 = id_ref
9994
9998
  @state.following.pop
9995
9999
  @adaptor.add_child( root_0, id_ref416.tree )
9996
10000
 
9997
- # at line 935:10: ( '.' id_ref )*
10001
+ # at line 939:10: ( '.' id_ref )*
9998
10002
  while true # decision 145
9999
10003
  alt_145 = 2
10000
10004
  look_145_0 = @input.peek( 1 )
@@ -10005,7 +10009,7 @@ module SfpLang
10005
10009
  end
10006
10010
  case alt_145
10007
10011
  when 1
10008
- # at line 935:11: '.' id_ref
10012
+ # at line 939:11: '.' id_ref
10009
10013
  char_literal417 = match( T__25, TOKENS_FOLLOWING_T__25_IN_path_with_index_2578 )
10010
10014
  tree_for_char_literal417 = @adaptor.create_with_payload( char_literal417 )
10011
10015
  @adaptor.add_child( root_0, tree_for_char_literal417 )
@@ -10053,7 +10057,7 @@ module SfpLang
10053
10057
  # parser rule id_ref
10054
10058
  #
10055
10059
  # (in SfpLang.g)
10056
- # 938:1: id_ref : ID ( '[' NUMBER ']' )? ;
10060
+ # 942:1: id_ref : ID ( '[' NUMBER ']' )? ;
10057
10061
  #
10058
10062
  def id_ref
10059
10063
  # -> uncomment the next line to manually enable rule tracing
@@ -10083,13 +10087,13 @@ module SfpLang
10083
10087
  root_0 = @adaptor.create_flat_list
10084
10088
 
10085
10089
 
10086
- # at line 939:4: ID ( '[' NUMBER ']' )?
10090
+ # at line 943:4: ID ( '[' NUMBER ']' )?
10087
10091
  __ID419__ = match( ID, TOKENS_FOLLOWING_ID_IN_id_ref_2592 )
10088
10092
  tree_for_ID419 = @adaptor.create_with_payload( __ID419__ )
10089
10093
  @adaptor.add_child( root_0, tree_for_ID419 )
10090
10094
 
10091
10095
 
10092
- # at line 939:6: ( '[' NUMBER ']' )?
10096
+ # at line 943:6: ( '[' NUMBER ']' )?
10093
10097
  alt_146 = 2
10094
10098
  look_146_0 = @input.peek( 1 )
10095
10099
 
@@ -10098,7 +10102,7 @@ module SfpLang
10098
10102
  end
10099
10103
  case alt_146
10100
10104
  when 1
10101
- # at line 939:7: '[' NUMBER ']'
10105
+ # at line 943:7: '[' NUMBER ']'
10102
10106
  char_literal420 = match( T__34, TOKENS_FOLLOWING_T__34_IN_id_ref_2594 )
10103
10107
  tree_for_char_literal420 = @adaptor.create_with_payload( char_literal420 )
10104
10108
  @adaptor.add_child( root_0, tree_for_char_literal420 )
@@ -10147,7 +10151,7 @@ module SfpLang
10147
10151
  # parser rule reference
10148
10152
  #
10149
10153
  # (in SfpLang.g)
10150
- # 942:1: reference returns [val] : path_with_index ;
10154
+ # 946:1: reference returns [val] : path_with_index ;
10151
10155
  #
10152
10156
  def reference
10153
10157
  # -> uncomment the next line to manually enable rule tracing
@@ -10170,7 +10174,7 @@ module SfpLang
10170
10174
  root_0 = @adaptor.create_flat_list
10171
10175
 
10172
10176
 
10173
- # at line 943:4: path_with_index
10177
+ # at line 947:4: path_with_index
10174
10178
  @state.following.push( TOKENS_FOLLOWING_path_with_index_IN_reference_2615 )
10175
10179
  path_with_index423 = path_with_index
10176
10180
  @state.following.pop
@@ -10212,7 +10216,7 @@ module SfpLang
10212
10216
  # parser rule reference_type
10213
10217
  #
10214
10218
  # (in SfpLang.g)
10215
- # 947:1: reference_type returns [val] : 'isref' path ;
10219
+ # 951:1: reference_type returns [val] : 'isref' path ;
10216
10220
  #
10217
10221
  def reference_type
10218
10222
  # -> uncomment the next line to manually enable rule tracing
@@ -10237,7 +10241,7 @@ module SfpLang
10237
10241
  root_0 = @adaptor.create_flat_list
10238
10242
 
10239
10243
 
10240
- # at line 948:4: 'isref' path
10244
+ # at line 952:4: 'isref' path
10241
10245
  string_literal424 = match( T__69, TOKENS_FOLLOWING_T__69_IN_reference_type_2634 )
10242
10246
  tree_for_string_literal424 = @adaptor.create_with_payload( string_literal424 )
10243
10247
  @adaptor.add_child( root_0, tree_for_string_literal424 )
@@ -10288,7 +10292,7 @@ module SfpLang
10288
10292
  # parser rule set_type
10289
10293
  #
10290
10294
  # (in SfpLang.g)
10291
- # 956:1: set_type returns [val] : 'isset' path ;
10295
+ # 960:1: set_type returns [val] : 'isset' path ;
10292
10296
  #
10293
10297
  def set_type
10294
10298
  # -> uncomment the next line to manually enable rule tracing
@@ -10313,7 +10317,7 @@ module SfpLang
10313
10317
  root_0 = @adaptor.create_flat_list
10314
10318
 
10315
10319
 
10316
- # at line 957:4: 'isset' path
10320
+ # at line 961:4: 'isset' path
10317
10321
  string_literal426 = match( T__70, TOKENS_FOLLOWING_T__70_IN_set_type_2655 )
10318
10322
  tree_for_string_literal426 = @adaptor.create_with_payload( string_literal426 )
10319
10323
  @adaptor.add_child( root_0, tree_for_string_literal426 )
@@ -10365,7 +10369,7 @@ module SfpLang
10365
10369
  # parser rule probability_op
10366
10370
  #
10367
10371
  # (in SfpLang.g)
10368
- # 966:1: probability_op : 'either' ;
10372
+ # 970:1: probability_op : 'either' ;
10369
10373
  #
10370
10374
  def probability_op
10371
10375
  # -> uncomment the next line to manually enable rule tracing
@@ -10389,7 +10393,7 @@ module SfpLang
10389
10393
  root_0 = @adaptor.create_flat_list
10390
10394
 
10391
10395
 
10392
- # at line 967:4: 'either'
10396
+ # at line 971:4: 'either'
10393
10397
  string_literal428 = match( T__52, TOKENS_FOLLOWING_T__52_IN_probability_op_2672 )
10394
10398
  tree_for_string_literal428 = @adaptor.create_with_payload( string_literal428 )
10395
10399
  @adaptor.add_child( root_0, tree_for_string_literal428 )
@@ -10426,7 +10430,7 @@ module SfpLang
10426
10430
  # parser rule equals_op
10427
10431
  #
10428
10432
  # (in SfpLang.g)
10429
- # 970:1: equals_op : ( '=' | 'is' );
10433
+ # 974:1: equals_op : ( '=' | 'is' );
10430
10434
  #
10431
10435
  def equals_op
10432
10436
  # -> uncomment the next line to manually enable rule tracing
@@ -10497,7 +10501,7 @@ module SfpLang
10497
10501
  # parser rule not_equals_op
10498
10502
  #
10499
10503
  # (in SfpLang.g)
10500
- # 975:1: not_equals_op : ( '!=' | 'isnt' | 'isnot' );
10504
+ # 979:1: not_equals_op : ( '!=' | 'isnt' | 'isnot' );
10501
10505
  #
10502
10506
  def not_equals_op
10503
10507
  # -> uncomment the next line to manually enable rule tracing
@@ -10568,7 +10572,7 @@ module SfpLang
10568
10572
  # parser rule binary_op
10569
10573
  #
10570
10574
  # (in SfpLang.g)
10571
- # 981:1: binary_op : ( '+=' | '-=' | '*=' | '/=' );
10575
+ # 985:1: binary_op : ( '+=' | '-=' | '*=' | '/=' );
10572
10576
  #
10573
10577
  def binary_op
10574
10578
  # -> uncomment the next line to manually enable rule tracing
@@ -10639,7 +10643,7 @@ module SfpLang
10639
10643
  # parser rule binary_comp
10640
10644
  #
10641
10645
  # (in SfpLang.g)
10642
- # 988:1: binary_comp : ( '>' | '>=' | '<' | '<=' );
10646
+ # 992:1: binary_comp : ( '>' | '>=' | '<' | '<=' );
10643
10647
  #
10644
10648
  def binary_comp
10645
10649
  # -> uncomment the next line to manually enable rule tracing
@@ -10732,7 +10736,7 @@ module SfpLang
10732
10736
 
10733
10737
  def description
10734
10738
  <<-'__dfa_description__'.strip!
10735
- ()* loopback of 262:3: ( ( NL )* 'or' ( NL )* '{' ( NL )* constraint_body '}' )*
10739
+ ()* loopback of 266:3: ( ( NL )* 'or' ( NL )* '{' ( NL )* constraint_body '}' )*
10736
10740
  __dfa_description__
10737
10741
  end
10738
10742
 
@@ -10774,7 +10778,7 @@ module SfpLang
10774
10778
 
10775
10779
  def description
10776
10780
  <<-'__dfa_description__'.strip!
10777
- 424:4: ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification )
10781
+ 428:4: ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification )
10778
10782
  __dfa_description__
10779
10783
  end
10780
10784
 
@@ -10815,7 +10819,7 @@ module SfpLang
10815
10819
 
10816
10820
  def description
10817
10821
  <<-'__dfa_description__'.strip!
10818
- 525:4: ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification )
10822
+ 529:4: ( constraint_statement | constraint_namespace | constraint_iterator | constraint_class_quantification )
10819
10823
  __dfa_description__
10820
10824
  end
10821
10825
 
@@ -10885,7 +10889,7 @@ module SfpLang
10885
10889
 
10886
10890
  def description
10887
10891
  <<-'__dfa_description__'.strip!
10888
- 625: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 );
10892
+ 629: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 );
10889
10893
  __dfa_description__
10890
10894
  end
10891
10895
 
@@ -10941,7 +10945,7 @@ module SfpLang
10941
10945
 
10942
10946
  def description
10943
10947
  <<-'__dfa_description__'.strip!
10944
- 798: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 ')' );
10948
+ 802: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 ')' );
10945
10949
  __dfa_description__
10946
10950
  end
10947
10951