nasl 0.5.0 → 0.6.0

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: 8dbfbd10777b11f9eb32bfa1852b114e4ba027b8
4
- data.tar.gz: 3adae20946d690b72b6cce0378ec3bb36cf6ec90
3
+ metadata.gz: ba5d4713f9f37ff1cef35443d8e0a7befdf7a8ab
4
+ data.tar.gz: 90c08ad08a102e283f0313a422af423c043cc775
5
5
  SHA512:
6
- metadata.gz: 3f58cb329f9293ef5e32f130864af3e48fd07d66555866c1ede44c719fcbc88d8c6e1781a9bcac5b261a2b26a320b5231c865697126d4853276c7bb7decf7225
7
- data.tar.gz: 4fb81fb4ba0a4c54d2df014a423578bb53cb3eb6ba1acda35e24df4cb3440e40a7eee2070b07dc98790f98757ecc03079392cb1dfb13e2cf8fc4f5c3c1fed18a
6
+ metadata.gz: 9b18b5139c6eb7acc431cf003184f47d587fbc05908aa1f972f8908dd0da42c1e295827408042295e8ca654a60e6872b89d835d067b6098fb4b61aa824c54b8e
7
+ data.tar.gz: dbecc5c082b505176925ff1f9d0d8e7b8ac47b1ac9445eaf330dc120693b679853287b6ecae7fd55ce960cb97a9ae4f46270b65206abf3df3c2963431535104e
@@ -122,6 +122,10 @@ rule
122
122
  { n(:Function, val[0], 'obj', val[1], val[2], val[3], val[4], val[5], val[6]) }
123
123
  | obj_func_attr FUNCTION ident LPAREN RPAREN block
124
124
  { n(:Function, val[0], 'obj', val[1], val[2], val[3], val[4], val[5]) }
125
+ | FUNCTION ident LPAREN params RPAREN block
126
+ { n(:Function, val[0], 'obj', val[1], val[2], val[3], val[4], val[5]) }
127
+ | FUNCTION ident LPAREN RPAREN block
128
+ { n(:Function, val[0], 'obj', val[1], val[2], val[3], val[4]) }
125
129
  ;
126
130
 
127
131
  function : FUNCTION ident LPAREN params RPAREN block
@@ -261,9 +265,7 @@ rule
261
265
  { n(:Return, *val) }
262
266
  ;
263
267
 
264
- obj_func_attr : /* Empty */
265
- { nil }
266
- | PUBLIC
268
+ obj_func_attr : PUBLIC
267
269
  { val[0] }
268
270
  | PRIVATE
269
271
  { val[0] }
@@ -34,16 +34,27 @@ module Nasl
34
34
  super
35
35
 
36
36
  @body = @tokens.last
37
-
38
37
  @fn_type = @tokens[1]
39
38
 
40
39
  if @fn_type == "obj"
41
- @name = @tokens[3]
42
- @attribute = @tokens[0]
43
40
  if @tokens.length == 8
41
+ @name = @tokens[3]
42
+ @attribute = @tokens[0]
44
43
  @params = @tokens[5]
45
- else
44
+ elsif @tokens.length == 7
45
+ if @tokens[0].is_a?(Token) && @tokens[0].type == :FUNCTION
46
+ @attribute = nil
47
+ @params = @tokens[4]
48
+ @name = @tokens[2]
49
+ else
50
+ @name = @tokens[3]
51
+ @attribute = @tokens[0]
52
+ @params = []
53
+ end
54
+ elsif @tokens.length == 6
55
+ @attribute = nil
46
56
  @params = []
57
+ @name = @tokens[2]
47
58
  end
48
59
  else
49
60
  @name = @tokens[2]
@@ -25,5 +25,5 @@
25
25
  ################################################################################
26
26
 
27
27
  module Nasl
28
- VERSION = '0.5.0'
28
+ VERSION = '0.6.0'
29
29
  end
@@ -37,11 +37,15 @@ namespace test {
37
37
  var a1,b1;
38
38
  # foo
39
39
  public function bar_pub() {}
40
+ public function bar_pub1(foo) {}
41
+
40
42
  # foo
41
43
  function bar_priv_default() { a = 1; return a; }
42
44
  private function bar_priv() {}
45
+ function test_bar1(foo) {}
46
+
43
47
  # foo
44
- function test_var()
48
+ function test_bar()
45
49
  {
46
50
  var test = 'a';
47
51
  var x,y,z,t;
@@ -52,7 +56,7 @@ namespace test {
52
56
  function foo(){}
53
57
  }
54
58
  # foo!
55
- function foo(){}
59
+ function foo1(){}
56
60
  EOF
57
61
  )
58
62
  assert_not_nil(tree)
@@ -62,11 +66,25 @@ function foo(){}
62
66
  assert_equal(objects[0].name.name, "foo")
63
67
 
64
68
  functions = tree.all(:Function)
65
- assert_equal(6, functions.length)
69
+ assert_equal(8, functions.length)
66
70
 
67
71
  assert_equal(functions[0].tokens[0].type.to_s, "PUBLIC")
68
- assert_equal(functions[1].tokens[0], nil)
69
- assert_equal(functions[2].tokens[0].type.to_s, "PRIVATE")
72
+ assert_equal(functions[3].tokens[0].type.to_s, "PRIVATE")
73
+
74
+ # private / public object functions, no args
75
+ assert_equal(functions[0].name.name, "bar_pub")
76
+ assert_equal(functions[3].name.name, "bar_priv")
77
+
78
+ # private object function without leading attribute, no args
79
+ assert_equal(functions[2].name.name, "bar_priv_default")
80
+ # private object function without leading attribute, args
81
+ assert_equal(functions[4].name.name, "test_bar1")
82
+
83
+ # with attribute and args
84
+ assert_equal(functions[1].name.name, "bar_pub1")
85
+
86
+ assert_equal(functions[0].fn_type, "obj")
87
+ assert_equal(functions[7].fn_type, "normal")
70
88
 
71
89
  obj_vars = tree.all(:ObjVar)
72
90
  assert_equal(2, obj_vars.length)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nasl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mak Kolybabi
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-06-05 00:00:00.000000000 Z
13
+ date: 2018-06-06 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: racc