fix call site and now seperated assignment (was bunged as operator)

This commit is contained in:
Torsten Ruger 2015-10-09 17:27:22 +03:00
parent c9942ec516
commit 7f2f64c713
13 changed files with 68 additions and 67 deletions

View File

@ -2,9 +2,12 @@ module Parser
module CallSite module CallSite
include Parslet include Parslet
rule(:field_access) { name.as(:receiver) >> str(".") >> name.as(:field) } rule(:r_value) { operator_value | call_site | field_access | basic_type }
rule(:r_value) { call_site | field_access | basic_type } rule(:assign) { str('=') >> space?}
rule(:assignment){ (field_access|name).as(:l_value) >> assign.as(:assign) >> r_value.as(:r_value) }
rule(:field_def) { type >> name >> (assign >> r_value.as(:value) ).maybe}
rule(:argument_list) { rule(:argument_list) {
left_parenthesis >> left_parenthesis >>

View File

@ -1,6 +1,9 @@
a = 5 self.a = 5
-- -- -- -- -- --
s(:expressions, s(:assignment,
s(:assign, s(:field_access,
s(:name, :a), s(:receiver,
s(:int, 5))) s(:name, :self)),
s(:field,
s(:name, :a))),
s(:int, 5))

View File

@ -0,0 +1,5 @@
name = 10
-- -- --
s(:assignment,
s(:name, :name),
s(:int, 10))

View File

@ -1,8 +1,7 @@
puts(3 , a ) puts(3 , a )
-- -- -- -- -- --
s(:expressions, s(:call,
s(:call, s(:name, :puts),
s(:name, :puts), s(:arguments,
s(:arguments, s(:int, 3),
s(:int, 3), s(:name, :a)))
s(:name, :a))))

View File

@ -1,8 +1,7 @@
baz(42, foo) baz(42, foo)
-- -- -- -- -- --
s(:expressions, s(:call,
s(:call, s(:name, :baz),
s(:name, :baz), s(:arguments,
s(:arguments, s(:int, 42),
s(:int, 42), s(:name, :foo)))
s(:name, :foo))))

View File

@ -1,7 +1,6 @@
puts( "hello") puts( "hello")
-- -- -- -- -- --
s(:expressions, s(:call,
s(:call, s(:name, :puts),
s(:name, :puts), s(:arguments,
s(:arguments, s(:string, "hello")))
s(:string, "hello"))))

View File

@ -1,8 +1,7 @@
42.put() 42.put()
-- -- -- -- -- --
s(:expressions, s(:call,
s(:call, s(:name, :put),
s(:name, :put), s(:arguments),
s(:arguments), s(:receiver,
s(:receiver, s(:int, 42)))
s(:int, 42))))

View File

@ -1,7 +1,6 @@
puts( 5) puts( 5)
-- -- -- -- -- --
s(:expressions, s(:call,
s(:call, s(:name, :puts),
s(:name, :puts), s(:arguments,
s(:arguments, s(:int, 5)))
s(:int, 5))))

View File

@ -1,7 +1,6 @@
foo(42) foo(42)
-- -- -- -- -- --
s(:expressions, s(:call,
s(:call, s(:name, :foo),
s(:name, :foo), s(:arguments,
s(:arguments, s(:int, 42)))
s(:int, 42))))

View File

@ -1,9 +1,8 @@
Object.foo(42) Object.foo(42)
-- -- -- -- -- --
s(:expressions, s(:call,
s(:call, s(:name, :foo),
s(:name, :foo), s(:arguments,
s(:arguments, s(:int, 42)),
s(:int, 42)), s(:receiver,
s(:receiver, s(:class_name, :Object)))
s(:module, "Object"))))

View File

@ -1,9 +1,8 @@
my_my.foo(42) my_my.foo(42)
-- -- -- -- -- --
s(:expressions, s(:call,
s(:call, s(:name, :foo),
s(:name, :foo), s(:arguments,
s(:arguments, s(:int, 42)),
s(:int, 42)), s(:receiver,
s(:receiver, s(:name, :my_my)))
s(:name, :my_my))))

View File

@ -1,9 +1,8 @@
self.foo(42) self.foo(42)
-- -- -- -- -- --
s(:expressions, s(:call,
s(:call, s(:name, :foo),
s(:name, :foo), s(:arguments,
s(:arguments, s(:int, 42)),
s(:int, 42)), s(:receiver,
s(:receiver, s(:name, :self)))
s(:name, :self))))

View File

@ -1,8 +1,7 @@
"hello".puts() "hello".puts()
-- -- -- -- -- --
s(:expressions, s(:call,
s(:call, s(:name, :puts),
s(:name, :puts), s(:arguments),
s(:arguments), s(:receiver,
s(:receiver, s(:string, "hello")))
s(:string, "hello"))))