sfp 0.3.4 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
- SFP Parser and Planner for Ruby
2
- ===============================
1
+ SFP Language Parser
2
+ ===================
3
3
  - Author: Herry (herry13@gmail.com)
4
- - Version: 0.3.4
4
+ - Version: 0.3.5
5
5
  - License: [BSD License](https://github.com/herry13/sfp-ruby/blob/master/LICENSE)
6
6
 
7
7
  A Ruby gem that provides a Ruby interface to parse [SFP language](https://github.com/herry13/nuri/wiki/SFP-language), a declarative language to specify a planning task.
@@ -10,6 +10,8 @@ Click [here](https://github.com/herry13/nuri/wiki/SFP-language), for more detail
10
10
 
11
11
  This is a spin-out project from [Nuri](https://github.com/herry13/nuri).
12
12
 
13
+ **The planner has been moved to another project [sfplanner](https://github.com/herry13/sfplanner)**.
14
+
13
15
 
14
16
  To install
15
17
  ----------
@@ -24,14 +26,12 @@ Requirements
24
26
  - antlr3
25
27
  - json
26
28
 
27
- Tested on: MacOS X 10.8, Ubuntu 12.04, Scientific Linux 6, Debian Wheeze Raspberry
28
-
29
29
 
30
30
  To use as a command line
31
31
  ------------------------
32
32
  - parse a SFP file, and then print the output in JSON
33
33
 
34
- $ sfp --json <sfp-file>
34
+ $ sfp <sfp-file>
35
35
 
36
36
  To solve a planning task, you can use [sfplanner](https://github.com/herry13/sfplanner)/
37
37
 
@@ -133,10 +133,10 @@ Example of Planning Task
133
133
  and **a** is stopped, and preserves global constraint: **pc** is always
134
134
  referring to a running service.
135
135
 
136
- - To generate the workflow, we invoke **sfp** command with argument
137
- the path of the task file:
136
+ - To generate the workflow, we invoke **sfplanner** (see [sfplanner](https://github.com/herry13/sfplanner))
137
+ command with argument the path of the task file:
138
138
 
139
- $ sfp task.sfp
139
+ $ sfplanner task.sfp
140
140
 
141
141
  Which will generate a workflow in JSON
142
142
 
@@ -184,23 +184,3 @@ Example of Planning Task
184
184
  This workflow is sequential that has 3 procedures. If you executes
185
185
  the workflow in given order, it will achieves the goal state as well
186
186
  as perserves the global constraints during the execution.
187
-
188
- - To generate and execute the plan using Bash framework, we invoke **sfp**
189
- command with an option *--solve-execute* and with an argument the path of
190
- the task file:
191
-
192
- $ sfp --solve-execute task.sfp
193
-
194
- It will generate and execute the plan by invoking the Bash scripts in
195
- the current directory (or as specified in environment variable SFP_HOME)
196
- in the following sequence:
197
-
198
- ./modules/b/start
199
- ./modules/pc/redirect "$.b"
200
- ./modules/a/stop
201
-
202
- - If you save the plan in a file e.g. **plan.json**, you could execute it
203
- later using option *--execute*
204
-
205
- $ sfp --execute plan.json
206
-
data/bin/sfp CHANGED
@@ -4,7 +4,7 @@ libdir = File.expand_path(File.dirname(__FILE__))
4
4
  require "#{libdir}/../lib/sfp"
5
5
 
6
6
  opts = Trollop::options do
7
- version "sfp 0.3.4 (c) 2013 Herry"
7
+ version "sfp 0.3.5 (c) 2013 Herry"
8
8
  banner <<-EOS
9
9
  Parse a SFP file and print the result in JSON format.
10
10
 
@@ -5,7 +5,7 @@
5
5
  # Generated using ANTLR version: 3.2.1-SNAPSHOT Jul 31, 2010 19:34:52
6
6
  # Ruby runtime library version: 1.8.11
7
7
  # Input grammar file: SfpLang.g
8
- # Generated at: 2013-07-15 00:24:28
8
+ # Generated at: 2013-07-18 06:07:24
9
9
  #
10
10
 
11
11
  # ~~~> start load path setup
@@ -1758,7 +1758,7 @@ module SfpLang
1758
1758
 
1759
1759
 
1760
1760
  # - - - - main rule block - - - -
1761
- # at line 1029:2: ( 'null' | 'nil' )
1761
+ # at line 1005:2: ( 'null' | 'nil' )
1762
1762
  alt_1 = 2
1763
1763
  look_1_0 = @input.peek( 1 )
1764
1764
 
@@ -1777,11 +1777,11 @@ module SfpLang
1777
1777
  end
1778
1778
  case alt_1
1779
1779
  when 1
1780
- # at line 1029:4: 'null'
1780
+ # at line 1005:4: 'null'
1781
1781
  match( "null" )
1782
1782
 
1783
1783
  when 2
1784
- # at line 1030:4: 'nil'
1784
+ # at line 1006:4: 'nil'
1785
1785
  match( "nil" )
1786
1786
 
1787
1787
  end
@@ -1806,7 +1806,7 @@ module SfpLang
1806
1806
 
1807
1807
 
1808
1808
  # - - - - main rule block - - - -
1809
- # at line 1034:2: ( 'true' | 'false' | 'off' | 'on' | 'yes' | 'no' )
1809
+ # at line 1010:2: ( 'true' | 'false' | 'off' | 'on' | 'yes' | 'no' )
1810
1810
  alt_2 = 6
1811
1811
  case look_2 = @input.peek( 1 )
1812
1812
  when 0x74 then alt_2 = 1
@@ -1827,27 +1827,27 @@ module SfpLang
1827
1827
  end
1828
1828
  case alt_2
1829
1829
  when 1
1830
- # at line 1034:4: 'true'
1830
+ # at line 1010:4: 'true'
1831
1831
  match( "true" )
1832
1832
 
1833
1833
  when 2
1834
- # at line 1035:4: 'false'
1834
+ # at line 1011:4: 'false'
1835
1835
  match( "false" )
1836
1836
 
1837
1837
  when 3
1838
- # at line 1036:4: 'off'
1838
+ # at line 1012:4: 'off'
1839
1839
  match( "off" )
1840
1840
 
1841
1841
  when 4
1842
- # at line 1037:4: 'on'
1842
+ # at line 1013:4: 'on'
1843
1843
  match( "on" )
1844
1844
 
1845
1845
  when 5
1846
- # at line 1038:4: 'yes'
1846
+ # at line 1014:4: 'yes'
1847
1847
  match( "yes" )
1848
1848
 
1849
1849
  when 6
1850
- # at line 1039:4: 'no'
1850
+ # at line 1015:4: 'no'
1851
1851
  match( "no" )
1852
1852
 
1853
1853
  end
@@ -1872,7 +1872,7 @@ module SfpLang
1872
1872
 
1873
1873
 
1874
1874
  # - - - - main rule block - - - -
1875
- # at line 1042:6: ( 'a' .. 'z' | 'A' .. 'Z' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' | '-' )*
1875
+ # at line 1018:6: ( 'a' .. 'z' | 'A' .. 'Z' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' | '-' )*
1876
1876
  if @input.peek( 1 ).between?( 0x41, 0x5a ) || @input.peek( 1 ).between?( 0x61, 0x7a )
1877
1877
  @input.consume
1878
1878
  else
@@ -1882,7 +1882,7 @@ module SfpLang
1882
1882
  end
1883
1883
 
1884
1884
 
1885
- # at line 1042:26: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' | '-' )*
1885
+ # at line 1018:26: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' | '-' )*
1886
1886
  while true # decision 3
1887
1887
  alt_3 = 2
1888
1888
  look_3_0 = @input.peek( 1 )
@@ -1930,8 +1930,8 @@ module SfpLang
1930
1930
 
1931
1931
 
1932
1932
  # - - - - main rule block - - - -
1933
- # at line 1046:4: ( '-' )? ( '0' .. '9' )+
1934
- # at line 1046:4: ( '-' )?
1933
+ # at line 1022:4: ( '-' )? ( '0' .. '9' )+
1934
+ # at line 1022:4: ( '-' )?
1935
1935
  alt_4 = 2
1936
1936
  look_4_0 = @input.peek( 1 )
1937
1937
 
@@ -1940,11 +1940,11 @@ module SfpLang
1940
1940
  end
1941
1941
  case alt_4
1942
1942
  when 1
1943
- # at line 1046:4: '-'
1943
+ # at line 1022:4: '-'
1944
1944
  match( 0x2d )
1945
1945
 
1946
1946
  end
1947
- # at file 1046:8: ( '0' .. '9' )+
1947
+ # at file 1022:8: ( '0' .. '9' )+
1948
1948
  match_count_5 = 0
1949
1949
  while true
1950
1950
  alt_5 = 2
@@ -1956,7 +1956,7 @@ module SfpLang
1956
1956
  end
1957
1957
  case alt_5
1958
1958
  when 1
1959
- # at line 1046:9: '0' .. '9'
1959
+ # at line 1022:9: '0' .. '9'
1960
1960
  match_range( 0x30, 0x39 )
1961
1961
 
1962
1962
  else
@@ -1991,7 +1991,7 @@ module SfpLang
1991
1991
 
1992
1992
 
1993
1993
  # - - - - main rule block - - - -
1994
- # at line 1057:2: ( '//' (~ ( '\\n' | '\\r' ) )* | '#' (~ ( '\\n' | '\\r' ) )* | '/*' ( options {greedy=false; } : . )* '*/' )
1994
+ # at line 1033:2: ( '//' (~ ( '\\n' | '\\r' ) )* | '#' (~ ( '\\n' | '\\r' ) )* | '/*' ( options {greedy=false; } : . )* '*/' )
1995
1995
  alt_9 = 3
1996
1996
  look_9_0 = @input.peek( 1 )
1997
1997
 
@@ -2012,9 +2012,9 @@ module SfpLang
2012
2012
  end
2013
2013
  case alt_9
2014
2014
  when 1
2015
- # at line 1057:4: '//' (~ ( '\\n' | '\\r' ) )*
2015
+ # at line 1033:4: '//' (~ ( '\\n' | '\\r' ) )*
2016
2016
  match( "//" )
2017
- # at line 1057:9: (~ ( '\\n' | '\\r' ) )*
2017
+ # at line 1033:9: (~ ( '\\n' | '\\r' ) )*
2018
2018
  while true # decision 6
2019
2019
  alt_6 = 2
2020
2020
  look_6_0 = @input.peek( 1 )
@@ -2025,7 +2025,7 @@ module SfpLang
2025
2025
  end
2026
2026
  case alt_6
2027
2027
  when 1
2028
- # at line 1057:9: ~ ( '\\n' | '\\r' )
2028
+ # at line 1033:9: ~ ( '\\n' | '\\r' )
2029
2029
  if @input.peek( 1 ).between?( 0x0, 0x9 ) || @input.peek( 1 ).between?( 0xb, 0xc ) || @input.peek( 1 ).between?( 0xe, 0xff )
2030
2030
  @input.consume
2031
2031
  else
@@ -2045,9 +2045,9 @@ module SfpLang
2045
2045
  # <-- action
2046
2046
 
2047
2047
  when 2
2048
- # at line 1058:4: '#' (~ ( '\\n' | '\\r' ) )*
2048
+ # at line 1034:4: '#' (~ ( '\\n' | '\\r' ) )*
2049
2049
  match( 0x23 )
2050
- # at line 1058:8: (~ ( '\\n' | '\\r' ) )*
2050
+ # at line 1034:8: (~ ( '\\n' | '\\r' ) )*
2051
2051
  while true # decision 7
2052
2052
  alt_7 = 2
2053
2053
  look_7_0 = @input.peek( 1 )
@@ -2058,7 +2058,7 @@ module SfpLang
2058
2058
  end
2059
2059
  case alt_7
2060
2060
  when 1
2061
- # at line 1058:8: ~ ( '\\n' | '\\r' )
2061
+ # at line 1034:8: ~ ( '\\n' | '\\r' )
2062
2062
  if @input.peek( 1 ).between?( 0x0, 0x9 ) || @input.peek( 1 ).between?( 0xb, 0xc ) || @input.peek( 1 ).between?( 0xe, 0xff )
2063
2063
  @input.consume
2064
2064
  else
@@ -2078,9 +2078,9 @@ module SfpLang
2078
2078
  # <-- action
2079
2079
 
2080
2080
  when 3
2081
- # at line 1059:4: '/*' ( options {greedy=false; } : . )* '*/'
2081
+ # at line 1035:4: '/*' ( options {greedy=false; } : . )* '*/'
2082
2082
  match( "/*" )
2083
- # at line 1059:9: ( options {greedy=false; } : . )*
2083
+ # at line 1035:9: ( options {greedy=false; } : . )*
2084
2084
  while true # decision 8
2085
2085
  alt_8 = 2
2086
2086
  look_8_0 = @input.peek( 1 )
@@ -2100,7 +2100,7 @@ module SfpLang
2100
2100
  end
2101
2101
  case alt_8
2102
2102
  when 1
2103
- # at line 1059:37: .
2103
+ # at line 1035:37: .
2104
2104
  match_any
2105
2105
 
2106
2106
  else
@@ -2134,9 +2134,9 @@ module SfpLang
2134
2134
 
2135
2135
 
2136
2136
  # - - - - main rule block - - - -
2137
- # at line 1063:4: 'r\"' ( options {greedy=false; } : . )* '\"'
2137
+ # at line 1039:4: 'r\"' ( options {greedy=false; } : . )* '\"'
2138
2138
  match( "r\"" )
2139
- # at line 1063:9: ( options {greedy=false; } : . )*
2139
+ # at line 1039:9: ( options {greedy=false; } : . )*
2140
2140
  while true # decision 10
2141
2141
  alt_10 = 2
2142
2142
  look_10_0 = @input.peek( 1 )
@@ -2149,7 +2149,7 @@ module SfpLang
2149
2149
  end
2150
2150
  case alt_10
2151
2151
  when 1
2152
- # at line 1063:37: .
2152
+ # at line 1039:37: .
2153
2153
  match_any
2154
2154
 
2155
2155
  else
@@ -2179,8 +2179,8 @@ module SfpLang
2179
2179
 
2180
2180
 
2181
2181
  # - - - - main rule block - - - -
2182
- # at line 1066:6: ( '\\r' )? '\\n'
2183
- # at line 1066:6: ( '\\r' )?
2182
+ # at line 1042:6: ( '\\r' )? '\\n'
2183
+ # at line 1042:6: ( '\\r' )?
2184
2184
  alt_11 = 2
2185
2185
  look_11_0 = @input.peek( 1 )
2186
2186
 
@@ -2189,7 +2189,7 @@ module SfpLang
2189
2189
  end
2190
2190
  case alt_11
2191
2191
  when 1
2192
- # at line 1066:6: '\\r'
2192
+ # at line 1042:6: '\\r'
2193
2193
  match( 0xd )
2194
2194
 
2195
2195
  end
@@ -2216,7 +2216,7 @@ module SfpLang
2216
2216
 
2217
2217
 
2218
2218
  # - - - - main rule block - - - -
2219
- # at line 1069:8: ( ' ' | '\\t' )
2219
+ # at line 1045:8: ( ' ' | '\\t' )
2220
2220
  if @input.peek(1) == 0x9 || @input.peek(1) == 0x20
2221
2221
  @input.consume
2222
2222
  else
@@ -2251,9 +2251,9 @@ module SfpLang
2251
2251
 
2252
2252
 
2253
2253
  # - - - - main rule block - - - -
2254
- # at line 1073:5: '\"' ( ESC_SEQ | ~ ( '\\\\' | '\"' ) )* '\"'
2254
+ # at line 1049:5: '\"' ( ESC_SEQ | ~ ( '\\\\' | '\"' ) )* '\"'
2255
2255
  match( 0x22 )
2256
- # at line 1073:9: ( ESC_SEQ | ~ ( '\\\\' | '\"' ) )*
2256
+ # at line 1049:9: ( ESC_SEQ | ~ ( '\\\\' | '\"' ) )*
2257
2257
  while true # decision 12
2258
2258
  alt_12 = 3
2259
2259
  look_12_0 = @input.peek( 1 )
@@ -2266,11 +2266,11 @@ module SfpLang
2266
2266
  end
2267
2267
  case alt_12
2268
2268
  when 1
2269
- # at line 1073:11: ESC_SEQ
2269
+ # at line 1049:11: ESC_SEQ
2270
2270
  esc_seq!
2271
2271
 
2272
2272
  when 2
2273
- # at line 1073:21: ~ ( '\\\\' | '\"' )
2273
+ # at line 1049:21: ~ ( '\\\\' | '\"' )
2274
2274
  if @input.peek( 1 ).between?( 0x0, 0x21 ) || @input.peek( 1 ).between?( 0x23, 0x5b ) || @input.peek( 1 ).between?( 0x5d, 0xff )
2275
2275
  @input.consume
2276
2276
  else
@@ -2305,7 +2305,7 @@ module SfpLang
2305
2305
 
2306
2306
 
2307
2307
  # - - - - main rule block - - - -
2308
- # at line 1077:12: ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+
2308
+ # at line 1053:12: ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+
2309
2309
  if @input.peek(1) == 0x45 || @input.peek(1) == 0x65
2310
2310
  @input.consume
2311
2311
  else
@@ -2315,7 +2315,7 @@ module SfpLang
2315
2315
  end
2316
2316
 
2317
2317
 
2318
- # at line 1077:22: ( '+' | '-' )?
2318
+ # at line 1053:22: ( '+' | '-' )?
2319
2319
  alt_13 = 2
2320
2320
  look_13_0 = @input.peek( 1 )
2321
2321
 
@@ -2336,7 +2336,7 @@ module SfpLang
2336
2336
 
2337
2337
 
2338
2338
  end
2339
- # at file 1077:33: ( '0' .. '9' )+
2339
+ # at file 1053:33: ( '0' .. '9' )+
2340
2340
  match_count_14 = 0
2341
2341
  while true
2342
2342
  alt_14 = 2
@@ -2348,7 +2348,7 @@ module SfpLang
2348
2348
  end
2349
2349
  case alt_14
2350
2350
  when 1
2351
- # at line 1077:34: '0' .. '9'
2351
+ # at line 1053:34: '0' .. '9'
2352
2352
  match_range( 0x30, 0x39 )
2353
2353
 
2354
2354
  else
@@ -2376,7 +2376,7 @@ module SfpLang
2376
2376
 
2377
2377
 
2378
2378
  # - - - - main rule block - - - -
2379
- # at line 1080:13: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
2379
+ # at line 1056:13: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
2380
2380
  if @input.peek( 1 ).between?( 0x30, 0x39 ) || @input.peek( 1 ).between?( 0x41, 0x46 ) || @input.peek( 1 ).between?( 0x61, 0x66 )
2381
2381
  @input.consume
2382
2382
  else
@@ -2401,7 +2401,7 @@ module SfpLang
2401
2401
 
2402
2402
 
2403
2403
  # - - - - main rule block - - - -
2404
- # at line 1084:2: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UNICODE_ESC | OCTAL_ESC )
2404
+ # at line 1060:2: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UNICODE_ESC | OCTAL_ESC )
2405
2405
  alt_15 = 3
2406
2406
  look_15_0 = @input.peek( 1 )
2407
2407
 
@@ -2418,7 +2418,7 @@ module SfpLang
2418
2418
  end
2419
2419
  case alt_15
2420
2420
  when 1
2421
- # at line 1084:6: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' )
2421
+ # at line 1060:6: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' )
2422
2422
  match( 0x5c )
2423
2423
  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
2424
2424
  @input.consume
@@ -2431,11 +2431,11 @@ module SfpLang
2431
2431
 
2432
2432
 
2433
2433
  when 2
2434
- # at line 1085:6: UNICODE_ESC
2434
+ # at line 1061:6: UNICODE_ESC
2435
2435
  unicode_esc!
2436
2436
 
2437
2437
  when 3
2438
- # at line 1086:6: OCTAL_ESC
2438
+ # at line 1062:6: OCTAL_ESC
2439
2439
  octal_esc!
2440
2440
 
2441
2441
  end
@@ -2453,7 +2453,7 @@ module SfpLang
2453
2453
 
2454
2454
 
2455
2455
  # - - - - main rule block - - - -
2456
- # at line 1091:2: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
2456
+ # at line 1067:2: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
2457
2457
  alt_16 = 3
2458
2458
  look_16_0 = @input.peek( 1 )
2459
2459
 
@@ -2490,38 +2490,38 @@ module SfpLang
2490
2490
  end
2491
2491
  case alt_16
2492
2492
  when 1
2493
- # at line 1091:6: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
2493
+ # at line 1067:6: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
2494
2494
  match( 0x5c )
2495
- # at line 1091:11: ( '0' .. '3' )
2496
- # at line 1091:12: '0' .. '3'
2495
+ # at line 1067:11: ( '0' .. '3' )
2496
+ # at line 1067:12: '0' .. '3'
2497
2497
  match_range( 0x30, 0x33 )
2498
2498
 
2499
- # at line 1091:22: ( '0' .. '7' )
2500
- # at line 1091:23: '0' .. '7'
2499
+ # at line 1067:22: ( '0' .. '7' )
2500
+ # at line 1067:23: '0' .. '7'
2501
2501
  match_range( 0x30, 0x37 )
2502
2502
 
2503
- # at line 1091:33: ( '0' .. '7' )
2504
- # at line 1091:34: '0' .. '7'
2503
+ # at line 1067:33: ( '0' .. '7' )
2504
+ # at line 1067:34: '0' .. '7'
2505
2505
  match_range( 0x30, 0x37 )
2506
2506
 
2507
2507
 
2508
2508
  when 2
2509
- # at line 1092:6: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
2509
+ # at line 1068:6: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
2510
2510
  match( 0x5c )
2511
- # at line 1092:11: ( '0' .. '7' )
2512
- # at line 1092:12: '0' .. '7'
2511
+ # at line 1068:11: ( '0' .. '7' )
2512
+ # at line 1068:12: '0' .. '7'
2513
2513
  match_range( 0x30, 0x37 )
2514
2514
 
2515
- # at line 1092:22: ( '0' .. '7' )
2516
- # at line 1092:23: '0' .. '7'
2515
+ # at line 1068:22: ( '0' .. '7' )
2516
+ # at line 1068:23: '0' .. '7'
2517
2517
  match_range( 0x30, 0x37 )
2518
2518
 
2519
2519
 
2520
2520
  when 3
2521
- # at line 1093:6: '\\\\' ( '0' .. '7' )
2521
+ # at line 1069:6: '\\\\' ( '0' .. '7' )
2522
2522
  match( 0x5c )
2523
- # at line 1093:11: ( '0' .. '7' )
2524
- # at line 1093:12: '0' .. '7'
2523
+ # at line 1069:11: ( '0' .. '7' )
2524
+ # at line 1069:12: '0' .. '7'
2525
2525
  match_range( 0x30, 0x37 )
2526
2526
 
2527
2527
 
@@ -2540,7 +2540,7 @@ module SfpLang
2540
2540
 
2541
2541
 
2542
2542
  # - - - - main rule block - - - -
2543
- # at line 1098:6: '\\\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT
2543
+ # at line 1074:6: '\\\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT
2544
2544
  match( 0x5c )
2545
2545
  match( 0x75 )
2546
2546
  hex_digit!