sfp 0.3.22 → 0.4.1

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