Change to NigelThorne fork to detect infinite loops
and fixed grammar to ignore missing parameter list.
This commit is contained in:
@ -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
|
||||
|
@ -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) {
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user