Change to NigelThorne fork to detect infinite loops

and fixed grammar to ignore missing parameter list.
This commit is contained in:
Nigel Thorne
2014-06-04 21:48:32 +10:00
parent f60bbfa9ca
commit 20433e3ad2
5 changed files with 79 additions and 8 deletions

View File

@ -31,6 +31,7 @@ module Parser
include Operators
include ModuleDef
rule(:root){ (module_definition | class_definition | function_definition | expression | call_site ).repeat }
rule(:root_body) {(module_definition | class_definition | function_definition | expression | call_site )}
rule(:root) { root_body.repeat() }
end
end

View File

@ -4,7 +4,7 @@ module Parser
rule(:function_definition) {
keyword_def >> ((module_name|instance_variable|name).as(:receiver) >> str(".")).maybe >> #possibly qualified
name.as(:function_name) >> parmeter_list >> newline >> expressions_end >> newline
name.as(:function_name) >> parmeter_list.maybe >> newline >> expressions_end >> newline
}
rule(:parmeter_list) {

View File

@ -3,12 +3,12 @@ module Parser
include Parslet
rule(:module_definition) do
keyword_module >> module_name >> eol >>
( (keyword_end.absent? >> root).repeat(1)).as(:module_expressions) >> keyword_end >> newline
( (keyword_end.absent? >> root_body).repeat()).as(:module_expressions) >> keyword_end >> newline
end
rule(:class_definition) do
keyword_class >> module_name >> eol >>
( (keyword_end.absent? >> root).repeat(1)).as(:class_expressions) >> keyword_end >> newline
( (keyword_end.absent? >> root_body).repeat()).as(:class_expressions) >> keyword_end >> newline
end
end