add lots of operators. Assignment becomes operator. fix the mess

This commit is contained in:
Torsten Ruger
2014-05-11 18:37:26 +03:00
parent 3974f2516d
commit cc5915135a
8 changed files with 85 additions and 52 deletions

View File

@@ -2,21 +2,15 @@ module Parser
module Expression
include Parslet
rule(:assignment) { name.as(:asignee) >> equal_sign >> expression.as(:asigned) }
rule(:simple_expression) { function_call | integer | string | name }
rule(:expression) { (conditional | simple_expression ) >> newline.maybe }
def delimited_expressions( delimit )
( (delimit.absent? >> (assignment | expression)).repeat(1)).as(:expressions) >> delimit >> newline.maybe
( (delimit.absent? >> (operator_expression | expression)).repeat(1)).as(:expressions) >> delimit >> newline.maybe
end
rule(:expressions_else) { delimited_expressions(keyword_else) }
rule(:expressions_end) { delimited_expressions(keyword_end) }
rule(:operator_expression) do
infix_expression(expression, [multiply, 2, :left], [plus, 1, :right])
end
end
end