start to add while loop
This commit is contained in:
@ -6,5 +6,10 @@ module Parser
|
||||
delimited_expressions(keyword_else).as(:if_true) >>
|
||||
delimited_expressions(keyword_end).as(:if_false)
|
||||
}
|
||||
|
||||
rule(:while) {
|
||||
keyword_while >> expression.as(:while_cond) >> keyword_do >> newline >>
|
||||
delimited_expressions(keyword_end).as(:body)
|
||||
}
|
||||
end
|
||||
end
|
||||
|
@ -8,5 +8,8 @@ module Parser
|
||||
rule(:keyword_true) { str('true').as(:true) >> space?}
|
||||
rule(:keyword_false){ str('false').as(:false) >> space?}
|
||||
rule(:keyword_nil) { str('null').as(:nil) >> space?}
|
||||
rule(:keyword_while) { str('while').as(:while) >> space?}
|
||||
rule(:keyword_do) { str('do').as(:do) >> space?}
|
||||
rule(:keyword_begin) { str('begin').as(:begin) >> space?}
|
||||
end
|
||||
end
|
@ -24,6 +24,11 @@ module Parser
|
||||
Ast::ConditionalExpression.new(conditional, if_true, if_false)
|
||||
end
|
||||
|
||||
rule(:while => simple(:while), :while_cond => simple(:while_cond) , :do => simple(:do),
|
||||
:body => {:expressions => sequence(:body)}) do
|
||||
Ast::WhileExpression.new(while_cond, body)
|
||||
end
|
||||
|
||||
rule(:parmeter => simple(:parmeter)) { parmeter }
|
||||
rule(:parmeter_list => sequence(:parmeter_list)) { parmeter_list }
|
||||
|
||||
|
Reference in New Issue
Block a user