nasl 0.0.8 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +5 -0
- data/README.md +11 -16
- data/Rakefile +38 -0
- data/bin/nasl-parse +1 -1
- data/lib/nasl.rb +1 -1
- data/lib/nasl/cli.rb +1 -1
- data/lib/nasl/command.rb +1 -1
- data/lib/nasl/commands/benchmark.rb +1 -1
- data/lib/nasl/commands/parse.rb +1 -1
- data/lib/nasl/commands/test.rb +1 -1
- data/lib/nasl/commands/tokenize.rb +1 -1
- data/lib/nasl/commands/xml.rb +1 -1
- data/lib/nasl/context.rb +5 -5
- data/lib/nasl/grammar.racc +104 -16
- data/lib/nasl/parser.rb +1 -1
- data/lib/nasl/parser/argument.rb +1 -1
- data/lib/nasl/parser/array.rb +51 -0
- data/lib/nasl/parser/assigment.rb +1 -1
- data/lib/nasl/parser/block.rb +7 -1
- data/lib/nasl/parser/break.rb +2 -2
- data/lib/nasl/parser/call.rb +3 -2
- data/lib/nasl/parser/comment.rb +2 -2
- data/lib/nasl/parser/continue.rb +2 -2
- data/lib/nasl/parser/decrement.rb +1 -1
- data/lib/nasl/parser/empty.rb +2 -2
- data/lib/nasl/parser/export.rb +1 -1
- data/lib/nasl/parser/expression.rb +1 -1
- data/lib/nasl/parser/for.rb +2 -2
- data/lib/nasl/parser/foreach.rb +4 -4
- data/lib/nasl/parser/function.rb +1 -1
- data/lib/nasl/parser/global.rb +1 -1
- data/lib/nasl/parser/identifier.rb +7 -2
- data/lib/nasl/parser/if.rb +2 -2
- data/lib/nasl/parser/import.rb +1 -1
- data/lib/nasl/parser/include.rb +2 -2
- data/lib/nasl/parser/increment.rb +1 -1
- data/lib/nasl/parser/integer.rb +7 -2
- data/lib/nasl/parser/ip.rb +2 -2
- data/lib/nasl/parser/key_value_pair.rb +43 -0
- data/lib/nasl/parser/list.rb +41 -0
- data/lib/nasl/parser/local.rb +1 -1
- data/lib/nasl/parser/lvalue.rb +1 -1
- data/lib/nasl/parser/node.rb +2 -2
- data/lib/nasl/parser/parameter.rb +43 -0
- data/lib/nasl/parser/reference.rb +41 -0
- data/lib/nasl/parser/repeat.rb +1 -1
- data/lib/nasl/parser/repetition.rb +1 -1
- data/lib/nasl/parser/return.rb +2 -2
- data/lib/nasl/parser/string.rb +7 -2
- data/lib/nasl/parser/tree.rb +2 -2
- data/lib/nasl/parser/undefined.rb +2 -2
- data/lib/nasl/parser/while.rb +1 -1
- data/lib/nasl/test.rb +1 -1
- data/lib/nasl/token.rb +2 -2
- data/lib/nasl/tokenizer.rb +7 -4
- data/lib/nasl/version.rb +27 -1
- data/nasl.gemspec +35 -8
- data/test/unit/parser/test_array.rb +174 -0
- data/test/unit/parser/test_assignment.rb +75 -4
- data/test/unit/parser/test_blank.rb +1 -1
- data/test/unit/parser/test_block.rb +29 -1
- data/test/unit/parser/test_call.rb +57 -5
- data/test/unit/parser/test_comment.rb +1 -1
- data/test/unit/parser/test_constant.rb +1 -1
- data/test/unit/parser/test_empty.rb +1 -1
- data/test/unit/parser/test_expressions.rb +8 -1
- data/test/unit/parser/test_foreach.rb +43 -0
- data/test/unit/parser/test_function.rb +147 -51
- data/test/unit/parser/test_global.rb +49 -0
- data/test/unit/parser/test_if.rb +3 -3
- data/test/unit/parser/test_include.rb +1 -1
- data/test/unit/parser/test_incr_decr.rb +1 -1
- data/test/unit/parser/test_ip.rb +1 -1
- data/test/unit/parser/test_list.rb +42 -0
- data/test/unit/parser/test_local.rb +49 -0
- data/test/unit/parser/test_return.rb +7 -3
- data/test/unit/parser/test_string.rb +1 -1
- data/test/unit/parser/test_whitespace.rb +1 -1
- data/test/unit/test_context.rb +1 -1
- data/test/unit/tokenizer/test_comment.rb +1 -1
- data/test/unit/tokenizer/test_empty.rb +1 -1
- data/test/unit/tokenizer/test_integer.rb +1 -1
- data/test/unit/tokenizer/test_references.rb +41 -0
- data/test/unit/tokenizer/test_string.rb +2 -1
- metadata +49 -86
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f1211036372f4f6f5cf6638769d1de8d46720ffd
|
4
|
+
data.tar.gz: 996d639bae9ddda1394e59745c19eafaca51eb45
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d376f113cf2fead0955db0b34a56855128f6c8dee42999fbb4173857b649de5ffe31aa3db31129f1879af46ed6c73adb8a7381e46d92cebbb4ae078bca6b5c5d
|
7
|
+
data.tar.gz: 8c90427b235c11cfffae66f294125dfd2094af5fe8cce28701867d84a9e9de95cfc5cba2bf33206cc3eb9b8e49556405a5293fdabac50bb2e9075af956239345
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,32 +1,28 @@
|
|
1
|
-
Installation
|
2
|
-
============
|
1
|
+
# Installation
|
3
2
|
|
4
|
-
Git
|
5
|
-
---
|
3
|
+
## Git
|
6
4
|
|
7
5
|
Installing the source from Git is done as follows:
|
8
6
|
|
9
7
|
git clone git://github.com/tenable/nasl.git
|
10
8
|
|
11
|
-
Gem
|
12
|
-
|
9
|
+
## Gem
|
10
|
+
|
13
11
|
|
14
12
|
Installing the package from RubyGems is done as follows:
|
15
13
|
|
16
14
|
gem install nasl
|
17
15
|
|
18
|
-
Usage
|
19
|
-
=====
|
16
|
+
# Usage
|
20
17
|
|
21
|
-
Standalone
|
22
|
-
----------
|
18
|
+
## Standalone
|
23
19
|
|
24
20
|
To avoid conflicting with the NASL interpreter, the NASL gem's binary is
|
25
|
-
installed as
|
21
|
+
installed as `nasl-parse`. As an application, it has very few actions that it
|
26
22
|
can perform.
|
27
23
|
|
28
24
|
* Benchmark: This benchmarks the time taken to parse the input path(s) over a
|
29
|
-
number of iterations. The number of iterations can be adjusted by the
|
25
|
+
number of iterations. The number of iterations can be adjusted by the `-i`
|
30
26
|
switch.
|
31
27
|
|
32
28
|
% nasl-parse -i 10 benchmark /opt/nessus/lib/nessus/plugins/ssl_certificate_chain.nasl
|
@@ -89,11 +85,10 @@ can perform.
|
|
89
85
|
...
|
90
86
|
-------------------------[ ssl_certificate_chain.nasl ]-------------------------
|
91
87
|
|
92
|
-
Library
|
93
|
-
-------
|
88
|
+
# Library
|
94
89
|
|
95
90
|
The primary users of this gem are [Pedant][pedant] and [Nasldoc][nasldoc]. Other
|
96
|
-
uses are encouraged, of course! The
|
91
|
+
uses are encouraged, of course! The `Parser` class is the most useful part,
|
97
92
|
obviously, and can be used as follows:
|
98
93
|
|
99
94
|
require 'nasl'
|
@@ -101,7 +96,7 @@ obviously, and can be used as follows:
|
|
101
96
|
tree = Nasl::Parser.new.parse(file_contents, path_to_file)
|
102
97
|
|
103
98
|
That's all there is to it. If there are any errors, it'll throw an instance of
|
104
|
-
|
99
|
+
`ParseException` that will include as much context about the error as possible.
|
105
100
|
|
106
101
|
[nasldoc]: https://github.com/tenable/nasldoc
|
107
102
|
[pedant]: https://github.com/tenable/pedant
|
data/Rakefile
CHANGED
@@ -1,3 +1,29 @@
|
|
1
|
+
################################################################################
|
2
|
+
# Copyright (c) 2011-2014, Tenable Network Security
|
3
|
+
# All rights reserved.
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
6
|
+
# modification, are permitted provided that the following conditions are met:
|
7
|
+
#
|
8
|
+
# 1. Redistributions of source code must retain the above copyright notice, this
|
9
|
+
# list of conditions and the following disclaimer.
|
10
|
+
#
|
11
|
+
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
12
|
+
# this list of conditions and the following disclaimer in the documentation
|
13
|
+
# and/or other materials provided with the distribution.
|
14
|
+
#
|
15
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
16
|
+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
17
|
+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
18
|
+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
19
|
+
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
20
|
+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
21
|
+
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
22
|
+
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
23
|
+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
24
|
+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
25
|
+
################################################################################
|
26
|
+
|
1
27
|
$LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
|
2
28
|
|
3
29
|
require 'bundler/gem_tasks'
|
@@ -24,4 +50,16 @@ task :build => :compile do
|
|
24
50
|
system "gem build nasl.gemspec"
|
25
51
|
end
|
26
52
|
|
53
|
+
task :tag_and_bag do
|
54
|
+
system "git tag -a v#{Nasl::VERSION} -m 'version #{Nasl::VERSION}'"
|
55
|
+
system "git push --tags"
|
56
|
+
system "git checkout master"
|
57
|
+
system "git merge #{Nasl::VERSION}"
|
58
|
+
system "git push"
|
59
|
+
end
|
60
|
+
|
61
|
+
task :release => [:tag_and_bag, :build] do
|
62
|
+
system "gem push #{Nasl::APP_NAME}-#{Nasl::VERSION}.gem"
|
63
|
+
end
|
64
|
+
|
27
65
|
task :default => :compile
|
data/bin/nasl-parse
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
################################################################################
|
4
|
-
# Copyright (c) 2011-
|
4
|
+
# Copyright (c) 2011-2014, Tenable Network Security
|
5
5
|
# All rights reserved.
|
6
6
|
#
|
7
7
|
# Redistribution and use in source and binary forms, with or without
|
data/lib/nasl.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
################################################################################
|
2
|
-
# Copyright (c) 2011-
|
2
|
+
# Copyright (c) 2011-2014, Tenable Network Security
|
3
3
|
# All rights reserved.
|
4
4
|
#
|
5
5
|
# Redistribution and use in source and binary forms, with or without
|
data/lib/nasl/cli.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
################################################################################
|
2
|
-
# Copyright (c) 2011-
|
2
|
+
# Copyright (c) 2011-2014, Tenable Network Security
|
3
3
|
# All rights reserved.
|
4
4
|
#
|
5
5
|
# Redistribution and use in source and binary forms, with or without
|
data/lib/nasl/command.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
################################################################################
|
2
|
-
# Copyright (c) 2011-
|
2
|
+
# Copyright (c) 2011-2014, Tenable Network Security
|
3
3
|
# All rights reserved.
|
4
4
|
#
|
5
5
|
# Redistribution and use in source and binary forms, with or without
|
data/lib/nasl/commands/parse.rb
CHANGED
data/lib/nasl/commands/test.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
################################################################################
|
2
|
-
# Copyright (c) 2011-
|
2
|
+
# Copyright (c) 2011-2014, Tenable Network Security
|
3
3
|
# All rights reserved.
|
4
4
|
#
|
5
5
|
# Redistribution and use in source and binary forms, with or without
|
data/lib/nasl/commands/xml.rb
CHANGED
data/lib/nasl/context.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
# Copyright (c) 2011-
|
1
|
+
################################################################################
|
2
|
+
# Copyright (c) 2011-2014, Tenable Network Security
|
3
3
|
# All rights reserved.
|
4
4
|
#
|
5
5
|
# Redistribution and use in source and binary forms, with or without
|
@@ -86,18 +86,18 @@ module Nasl
|
|
86
86
|
# no text to the left is at the start of the program.
|
87
87
|
if outer.begin != inner.begin
|
88
88
|
line = @code[outer.begin...inner.begin]
|
89
|
-
line = line.color(:green) if color
|
89
|
+
line = Rainbow(line).color(:green) if color
|
90
90
|
ctx << line
|
91
91
|
end
|
92
92
|
|
93
93
|
# Create the text in the region.
|
94
94
|
line = @code[inner.begin...inner.end]
|
95
|
-
line = line.color(:red) if color
|
95
|
+
line = Rainbow(line).color(:red) if color
|
96
96
|
ctx << line
|
97
97
|
|
98
98
|
# Create the text to the right of the region.
|
99
99
|
line = @code[inner.end...outer.end].chomp
|
100
|
-
line = line.color(:green) if color
|
100
|
+
line = Rainbow(line).color(:green) if color
|
101
101
|
ctx << line
|
102
102
|
|
103
103
|
ctx << "\n"
|
data/lib/nasl/grammar.racc
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
################################################################################
|
2
|
-
# Copyright (c) 2011-
|
2
|
+
# Copyright (c) 2011-2014, Tenable Network Security
|
3
3
|
# All rights reserved.
|
4
4
|
#
|
5
5
|
# Redistribution and use in source and binary forms, with or without
|
@@ -33,7 +33,7 @@ preclow
|
|
33
33
|
left CMP_LT CMP_GT CMP_EQ CMP_NE CMP_GE CMP_LE SUBSTR_EQ SUBSTR_NE REGEX_EQ REGEX_NE
|
34
34
|
left BIT_OR
|
35
35
|
left BIT_XOR
|
36
|
-
left
|
36
|
+
left AMPERSAND
|
37
37
|
left BIT_SRA BIT_SRL BIT_SLL
|
38
38
|
left ADD SUB
|
39
39
|
left MUL DIV MOD
|
@@ -174,7 +174,7 @@ rule
|
|
174
174
|
{ n(:Empty, *val) }
|
175
175
|
;
|
176
176
|
|
177
|
-
global : GLOBAL
|
177
|
+
global : GLOBAL var_decls SEMICOLON
|
178
178
|
{ n(:Global, *val) }
|
179
179
|
;
|
180
180
|
|
@@ -190,7 +190,7 @@ rule
|
|
190
190
|
{ n(:Include, *val) }
|
191
191
|
;
|
192
192
|
|
193
|
-
local : LOCAL
|
193
|
+
local : LOCAL var_decls SEMICOLON
|
194
194
|
{ n(:Local, *val) }
|
195
195
|
;
|
196
196
|
|
@@ -199,6 +199,8 @@ rule
|
|
199
199
|
;
|
200
200
|
|
201
201
|
return : RETURN expr SEMICOLON
|
202
|
+
{ n(:Return, *val) }
|
203
|
+
| RETURN ref SEMICOLON
|
202
204
|
{ n(:Return, *val) }
|
203
205
|
| RETURN SEMICOLON
|
204
206
|
{ n(:Return, *val) }
|
@@ -219,7 +221,9 @@ rule
|
|
219
221
|
;
|
220
222
|
|
221
223
|
foreach : FOREACH ident LPAREN expr RPAREN statement
|
222
|
-
{ n(:Foreach,
|
224
|
+
{ n(:Foreach, val[1], val[3], val[5]) }
|
225
|
+
| FOREACH LPAREN ident IN expr RPAREN statement
|
226
|
+
{ n(:Foreach, val[2], val[4], val[6]) }
|
223
227
|
;
|
224
228
|
|
225
229
|
if : IF LPAREN expr RPAREN statement
|
@@ -241,6 +245,8 @@ rule
|
|
241
245
|
##############################################################################
|
242
246
|
|
243
247
|
assign_exp : lval ASS_EQ expr
|
248
|
+
{ n(:Assignment, *val) }
|
249
|
+
| lval ASS_EQ ref
|
244
250
|
{ n(:Assignment, *val) }
|
245
251
|
| lval ADD_EQ expr
|
246
252
|
{ n(:Assignment, *val) }
|
@@ -260,10 +266,11 @@ rule
|
|
260
266
|
{ n(:Assignment, *val) }
|
261
267
|
;
|
262
268
|
|
263
|
-
call_exp :
|
269
|
+
call_exp : lval LPAREN args RPAREN
|
264
270
|
{ n(:Call, *val) }
|
265
|
-
|
|
271
|
+
| lval LPAREN RPAREN
|
266
272
|
{ n(:Call, *val) }
|
273
|
+
;
|
267
274
|
|
268
275
|
decr_exp : DECR lval
|
269
276
|
{ n(:Decrement, val[0]) }
|
@@ -301,7 +308,7 @@ rule
|
|
301
308
|
{ n(:Expression, *val) }
|
302
309
|
| expr MOD expr
|
303
310
|
{ n(:Expression, *val) }
|
304
|
-
| expr
|
311
|
+
| expr AMPERSAND expr
|
305
312
|
{ n(:Expression, *val) }
|
306
313
|
| expr BIT_XOR expr
|
307
314
|
{ n(:Expression, *val) }
|
@@ -351,6 +358,10 @@ rule
|
|
351
358
|
{ val[0] }
|
352
359
|
| undef
|
353
360
|
{ val[0] }
|
361
|
+
| list_expr
|
362
|
+
{ val[0] }
|
363
|
+
| array_expr
|
364
|
+
{ val[0] }
|
354
365
|
;
|
355
366
|
|
356
367
|
##############################################################################
|
@@ -358,9 +369,31 @@ rule
|
|
358
369
|
##############################################################################
|
359
370
|
|
360
371
|
arg : ident COLON expr
|
372
|
+
{ n(:Argument, *val) }
|
373
|
+
| ident COLON ref
|
361
374
|
{ n(:Argument, *val) }
|
362
375
|
| expr
|
363
376
|
{ n(:Argument, *val) }
|
377
|
+
| ref
|
378
|
+
{ n(:Argument, *val) }
|
379
|
+
;
|
380
|
+
|
381
|
+
kv_pair : string COLON expr
|
382
|
+
{ n(:KeyValuePair, *val) }
|
383
|
+
| int COLON expr
|
384
|
+
{ n(:KeyValuePair, *val) }
|
385
|
+
| string COLON ref
|
386
|
+
{ n(:KeyValuePair, *val) }
|
387
|
+
| int COLON ref
|
388
|
+
{ n(:KeyValuePair, *val) }
|
389
|
+
;
|
390
|
+
|
391
|
+
kv_pairs : kv_pair COMMA kv_pairs
|
392
|
+
{ [val[0]] + val[2] }
|
393
|
+
| kv_pair COMMA
|
394
|
+
{ [val[0]] }
|
395
|
+
| kv_pair
|
396
|
+
{ [val[0]] }
|
364
397
|
;
|
365
398
|
|
366
399
|
lval : ident indexes
|
@@ -369,6 +402,10 @@ rule
|
|
369
402
|
{ n(:Lvalue, *val) }
|
370
403
|
;
|
371
404
|
|
405
|
+
ref : AT_SIGN ident
|
406
|
+
{ n(:Reference, val[1]) }
|
407
|
+
;
|
408
|
+
|
372
409
|
##############################################################################
|
373
410
|
# Anonymous Components
|
374
411
|
##############################################################################
|
@@ -379,6 +416,12 @@ rule
|
|
379
416
|
{ [val[0]] }
|
380
417
|
;
|
381
418
|
|
419
|
+
array_expr : LBRACE kv_pairs RBRACE
|
420
|
+
{ n(:Array, *val) }
|
421
|
+
| LBRACE RBRACE
|
422
|
+
{ n(:Array, *val) }
|
423
|
+
;
|
424
|
+
|
382
425
|
field : assign_exp
|
383
426
|
{ val[0] }
|
384
427
|
| call_exp
|
@@ -391,21 +434,45 @@ rule
|
|
391
434
|
{ nil }
|
392
435
|
;
|
393
436
|
|
394
|
-
|
395
|
-
{
|
396
|
-
| ident
|
437
|
+
index : LBRACK expr RBRACK
|
438
|
+
{ val[1] }
|
439
|
+
| PERIOD ident
|
440
|
+
{ val[1] }
|
441
|
+
;
|
442
|
+
|
443
|
+
indexes : index indexes
|
444
|
+
{ [val[0]] + val[1] }
|
445
|
+
| index
|
397
446
|
{ [val[0]] }
|
398
447
|
;
|
399
448
|
|
400
|
-
|
401
|
-
{
|
402
|
-
|
|
403
|
-
{
|
449
|
+
list_elem : expr
|
450
|
+
{ val[0] }
|
451
|
+
| ref
|
452
|
+
{ val[0] }
|
404
453
|
;
|
405
454
|
|
406
|
-
|
455
|
+
list_elems : list_elem COMMA list_elems
|
407
456
|
{ [val[0]] + val[2] }
|
457
|
+
| list_elem
|
458
|
+
{ [val[0]] }
|
459
|
+
;
|
460
|
+
|
461
|
+
list_expr : LBRACK list_elems RBRACK
|
462
|
+
{ n(:List, *val) }
|
463
|
+
| LBRACK RBRACK
|
464
|
+
{ n(:List, *val) }
|
465
|
+
;
|
466
|
+
|
467
|
+
param : AMPERSAND ident
|
468
|
+
{ n(:Parameter, val[1], 'reference') }
|
408
469
|
| ident
|
470
|
+
{ n(:Parameter, val[0], 'value') }
|
471
|
+
;
|
472
|
+
|
473
|
+
params : param COMMA params
|
474
|
+
{ [val[0]] + val[2] }
|
475
|
+
| param
|
409
476
|
{ [val[0]] }
|
410
477
|
;
|
411
478
|
|
@@ -415,6 +482,20 @@ rule
|
|
415
482
|
{ [val[0]] }
|
416
483
|
;
|
417
484
|
|
485
|
+
var_decl : ident ASS_EQ expr
|
486
|
+
{ n(:Assignment, *val) }
|
487
|
+
| ident ASS_EQ ref
|
488
|
+
{ n(:Assignment, *val) }
|
489
|
+
| ident
|
490
|
+
{ val[0] }
|
491
|
+
;
|
492
|
+
|
493
|
+
var_decls : var_decl COMMA var_decls
|
494
|
+
{ [val[0]] + val[2] }
|
495
|
+
| var_decl
|
496
|
+
{ [val[0]] }
|
497
|
+
;
|
498
|
+
|
418
499
|
##############################################################################
|
419
500
|
# Literals
|
420
501
|
##############################################################################
|
@@ -423,6 +504,8 @@ rule
|
|
423
504
|
{ n(:Identifier, *val) }
|
424
505
|
| REP
|
425
506
|
{ n(:Identifier, *val) }
|
507
|
+
| IN
|
508
|
+
{ n(:Identifier, *val) }
|
426
509
|
;
|
427
510
|
|
428
511
|
int : INT_DEC
|
@@ -456,6 +539,7 @@ end
|
|
456
539
|
require 'nasl/parser/tree'
|
457
540
|
|
458
541
|
require 'nasl/parser/argument'
|
542
|
+
require 'nasl/parser/array'
|
459
543
|
require 'nasl/parser/assigment'
|
460
544
|
require 'nasl/parser/block'
|
461
545
|
require 'nasl/parser/break'
|
@@ -477,8 +561,12 @@ require 'nasl/parser/include'
|
|
477
561
|
require 'nasl/parser/increment'
|
478
562
|
require 'nasl/parser/integer'
|
479
563
|
require 'nasl/parser/ip'
|
564
|
+
require 'nasl/parser/key_value_pair'
|
565
|
+
require 'nasl/parser/list'
|
480
566
|
require 'nasl/parser/local'
|
481
567
|
require 'nasl/parser/lvalue'
|
568
|
+
require 'nasl/parser/parameter'
|
569
|
+
require 'nasl/parser/reference'
|
482
570
|
require 'nasl/parser/repeat'
|
483
571
|
require 'nasl/parser/repetition'
|
484
572
|
require 'nasl/parser/return'
|