statsailr 0.7.4 → 0.7.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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/statsailr/block_builder/sts_block.rb +106 -4
- data/lib/statsailr/block_builder/sts_block_parse_proc_opts.rb +14 -8
- data/lib/statsailr/block_to_r/sts_lazy_func_gen.rb +44 -0
- data/lib/statsailr/parser/sts_parse.output +397 -264
- data/lib/statsailr/parser/sts_parse.ry +19 -7
- data/lib/statsailr/parser/sts_parse.tab.rb +269 -145
- data/lib/statsailr/scanner/sts_scanner.rb +30 -51
- data/lib/statsailr/version.rb +1 -1
- metadata +2 -2
@@ -9,49 +9,8 @@ SQ_STR_PATTERN = /'(\\'|[^'\n])*'/
|
|
9
9
|
DQ_STR_PATTERN = /"(\\"|[^"\n])*"/
|
10
10
|
end
|
11
11
|
|
12
|
-
module STSScannerSupport
|
13
|
-
def interpret_escape_sequences(str)
|
14
|
-
# This deals with escape sequences in double quoted string literals
|
15
|
-
# The behavior should be same as libsailr (or datasailr)
|
16
|
-
new_str = ""
|
17
|
-
str_array = str.split(//)
|
18
|
-
idx = 0
|
19
|
-
while( idx < str_array.size) do
|
20
|
-
c = str_array[idx]
|
21
|
-
if(c == "\\")
|
22
|
-
idx = idx + 1
|
23
|
-
c = str_array[idx]
|
24
|
-
raise "Tokenizer error: double quoted string literal should never end with \\" if idx >= str_array.size
|
25
|
-
case c
|
26
|
-
when 't'
|
27
|
-
new_str << "\t"
|
28
|
-
when 'n'
|
29
|
-
new_str << "\n"
|
30
|
-
when 'r'
|
31
|
-
new_str << "\r"
|
32
|
-
when "\\"
|
33
|
-
new_str << "\\"
|
34
|
-
when "\'"
|
35
|
-
new_str << "\'"
|
36
|
-
when "\""
|
37
|
-
new_str << "\""
|
38
|
-
when '?'
|
39
|
-
new_str << '?'
|
40
|
-
else
|
41
|
-
new_str << c
|
42
|
-
end
|
43
|
-
else
|
44
|
-
new_str << c
|
45
|
-
end
|
46
|
-
idx = idx + 1
|
47
|
-
end
|
48
|
-
return new_str
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
12
|
class STSScanner
|
53
13
|
include ::STSConstants
|
54
|
-
include ::STSScannerSupport
|
55
14
|
|
56
15
|
# Initialization & Terminating methods
|
57
16
|
|
@@ -151,9 +110,9 @@ class STSScanner
|
|
151
110
|
when scan(INT_PATTERN)
|
152
111
|
tokens << [:NUMBER, matched.to_i ]
|
153
112
|
when scan(SQ_STR_PATTERN)
|
154
|
-
tokens << [:
|
113
|
+
tokens << [:SQ_STRING, matched[Range.new(1, -2)] ]
|
155
114
|
when scan(DQ_STR_PATTERN)
|
156
|
-
tokens << [:
|
115
|
+
tokens << [:DQ_STRING, matched[Range.new(1, -2)] ]
|
157
116
|
when scan(/[ \t]/)
|
158
117
|
#ignore
|
159
118
|
else
|
@@ -221,6 +180,8 @@ class STSScanner
|
|
221
180
|
|
222
181
|
def scan_proc_special()
|
223
182
|
case
|
183
|
+
when scan(/\=\=/)
|
184
|
+
return :P_DEQ
|
224
185
|
when scan(/\=/)
|
225
186
|
return :P_EQ
|
226
187
|
when scan(/\*/)
|
@@ -229,14 +190,32 @@ class STSScanner
|
|
229
190
|
return :P_PLUS
|
230
191
|
when scan(/\-/)
|
231
192
|
return :P_MINUS
|
232
|
-
when scan(
|
233
|
-
return :
|
193
|
+
when scan(/%%/)
|
194
|
+
return :P_INTDEV
|
195
|
+
when scan(/%\/%/)
|
196
|
+
return :P_MOD
|
234
197
|
when scan(/\%in\%/)
|
235
198
|
return :P_IN
|
236
|
-
when scan(
|
237
|
-
return :
|
199
|
+
when scan(/&&/)
|
200
|
+
return :P_DAND
|
201
|
+
when scan(/\|\|/)
|
202
|
+
return :P_DOR
|
203
|
+
when scan(/&/)
|
204
|
+
return :P_AND
|
205
|
+
when scan(/\|/)
|
206
|
+
return :P_OR
|
207
|
+
when scan(/>/)
|
208
|
+
return :P_LT
|
209
|
+
when scan(/</)
|
210
|
+
return :P_ST
|
211
|
+
when scan(/>=/)
|
212
|
+
return :P_LTE
|
213
|
+
when scan(/<=/)
|
214
|
+
return :P_STE
|
215
|
+
when scan(/\^/)
|
216
|
+
return :P_HAT
|
238
217
|
when scan(/\~/)
|
239
|
-
return :
|
218
|
+
return :P_TILDE
|
240
219
|
when scan(/\:/)
|
241
220
|
return :P_COLON
|
242
221
|
when scan(/\(/)
|
@@ -265,9 +244,9 @@ class STSScanner
|
|
265
244
|
when scan(INT_PATTERN)
|
266
245
|
tokens << [:NUMBER, matched.to_i ]
|
267
246
|
when scan(SQ_STR_PATTERN)
|
268
|
-
tokens << [:
|
247
|
+
tokens << [:SQ_STRING, matched[Range.new(1, -2)] ]
|
269
248
|
when scan(DQ_STR_PATTERN)
|
270
|
-
tokens << [:
|
249
|
+
tokens << [:DQ_STRING, matched[Range.new(1, -2)] ]
|
271
250
|
when type = scan_proc_special()
|
272
251
|
tokens << [ type , matched ]
|
273
252
|
when scan(/[ \t]/) # Separators
|
@@ -279,7 +258,7 @@ class STSScanner
|
|
279
258
|
@scanner.unscan
|
280
259
|
break
|
281
260
|
when scan(/\//) # slash to start options
|
282
|
-
tokens << [:
|
261
|
+
tokens << [:P_SLASH, matched]
|
283
262
|
else
|
284
263
|
scan(/.*\n/)
|
285
264
|
raise "Current PROC line cannot be tokenized." + matched
|
data/lib/statsailr/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: statsailr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Toshihiro Umehara
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: r_bridge
|