soml-parser/lib/parser/statement.rb

19 lines
627 B
Ruby
Raw Normal View History

2014-06-04 19:55:04 +03:00
module Parser
2015-10-09 17:31:08 +03:00
module Statement
2014-06-04 19:55:04 +03:00
include Parslet
2015-09-15 18:57:31 +03:00
2015-10-09 17:31:08 +03:00
rule(:statement) { (return_statement | while_statement | small_conditional | if_statement |
assignment | class_field | field_def | call_site |
2015-09-27 12:05:35 +03:00
hash_constant | array_constant) }
2014-06-04 19:55:04 +03:00
2015-10-09 17:31:08 +03:00
def delimited_statements( delimit )
( (delimit.absent? >> statement).repeat(1)).as(:statements) >> delimit
2014-06-04 19:55:04 +03:00
end
2015-10-09 17:31:08 +03:00
rule(:statements_do) { delimited_statements(keyword_do) }
rule(:statements_else) { delimited_statements(keyword_else) }
rule(:statements_end) { delimited_statements(keyword_end) }
2014-06-04 19:55:04 +03:00
end
end