fix basic types
This commit is contained in:
parent
97cf5e5bea
commit
ba7ecbfa7b
@ -38,11 +38,10 @@ module Parser
|
|||||||
|
|
||||||
rule(:type) { (str("int") | str("ref")).as(:type) >> space }
|
rule(:type) { (str("int") | str("ref")).as(:type) >> space }
|
||||||
# identifier must start with lower case
|
# identifier must start with lower case
|
||||||
# TODO rule forbit names like if_true, because it starts with a keyword. a little looser please!
|
# TODO rule forbit names like true_statements, because it starts with a keyword. a little looser please!
|
||||||
rule(:name) { (keyword|type).absent? >> (match['a-z_'] >> match['a-zA-Z0-9_'].repeat).as(:name) >> space? }
|
rule(:name) { (keyword|type).absent? >> (match['a-z_'] >> match['a-zA-Z0-9_'].repeat).as(:name) >> space? }
|
||||||
# fields have type
|
# fields have type
|
||||||
rule(:field) { type >> name >> (assign >> r_value.as(:value) ).maybe}
|
|
||||||
rule(:class_field) { keyword_field >> field }
|
|
||||||
# and class/module names must start with capital
|
# and class/module names must start with capital
|
||||||
rule(:class_name) { keyword.absent? >> (match['A-Z'] >> match['a-zA-Z0-9_'].repeat).as(:class_name) >> space? }
|
rule(:class_name) { keyword.absent? >> (match['A-Z'] >> match['a-zA-Z0-9_'].repeat).as(:class_name) >> space? }
|
||||||
|
|
||||||
@ -50,13 +49,16 @@ module Parser
|
|||||||
rule(:string) { quote >> (
|
rule(:string) { quote >> (
|
||||||
escape |
|
escape |
|
||||||
nonquote.as(:char)
|
nonquote.as(:char)
|
||||||
).repeat(1).as(:string) >> quote }
|
).repeat(1).as(:string) >> quote >> space? }
|
||||||
|
|
||||||
rule(:integer) { sign.maybe >> digit.repeat(1).as(:integer) >> space? }
|
rule(:integer) { sign.maybe >> digit.repeat(1).as(:integer) >> space? }
|
||||||
|
|
||||||
rule(:float) { integer >> dot >> integer >>
|
rule(:float) { integer >> dot >> integer >>
|
||||||
(exponent >> sign.maybe >> digit.repeat(1,3)).maybe >> space?}
|
(exponent >> sign.maybe >> digit.repeat(1,3)).maybe >> space?}
|
||||||
rule(:basic_type){ integer | name | string | float | field | class_name |
|
|
||||||
keyword_true | keyword_false | keyword_nil }
|
rule(:field_access) { name.as(:receiver) >> str(".") >> name.as(:field) }
|
||||||
|
|
||||||
|
rule(:basic_type){ integer | name | string | float | class_name |
|
||||||
|
((keyword_true | keyword_false | keyword_nil) >> space? ) }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
FooBar
|
FooBar
|
||||||
-- -- --
|
-- -- --
|
||||||
s(:expressions,
|
s(:class_name, :FooBar)
|
||||||
s(:module, "FooBar"))
|
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
foo
|
foo
|
||||||
-- -- --
|
-- -- --
|
||||||
s(:expressions,
|
s(:name, :foo)
|
||||||
s(:name, :foo))
|
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
foo_bar
|
foo_bar
|
||||||
-- -- --
|
-- -- --
|
||||||
s(:expressions,
|
s(:name, :foo_bar)
|
||||||
s(:name, :foo_bar))
|
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
_bar
|
_bar
|
||||||
-- -- --
|
-- -- --
|
||||||
s(:expressions,
|
s(:name, :_bar)
|
||||||
s(:name, :_bar))
|
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
42
|
42
|
||||||
-- -- --
|
-- -- --
|
||||||
s(:expressions,
|
s(:int, 42)
|
||||||
s(:int, 42))
|
|
||||||
|
@ -1,4 +1,2 @@
|
|||||||
"hello"
|
"hello"-- -- --
|
||||||
-- -- --
|
s(:string, "hello")
|
||||||
s(:expressions,
|
|
||||||
s(:string, "hello"))
|
|
||||||
|
@ -1,4 +1,2 @@
|
|||||||
"hello \nyou"
|
"hello \nyou"-- -- --
|
||||||
-- -- --
|
s(:string, "hello \\nyou")
|
||||||
s(:expressions,
|
|
||||||
s(:string, "hello \\nyou"))
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user