soml-parser/lib/parser/keywords.rb

22 lines
990 B
Ruby
Raw Normal View History

2014-06-04 18:55:04 +02:00
module Parser
module Keywords
include Parslet
2015-09-15 17:57:31 +02:00
2014-06-04 18:55:04 +02:00
rule(:keyword_begin) { str('begin').as(:begin) >> space?}
rule(:keyword_class) { str('class') >> space? }
rule(:keyword_else) { str('else').as(:else) >> space? }
2015-09-15 17:57:31 +02:00
rule(:keyword_end) { str('end').as(:end) >> space? }
rule(:keyword_false) { str('false').as(:false) }
2015-09-27 11:05:35 +02:00
rule(:keyword_field) { str('field').as(:field) >> space? }
2014-06-04 18:55:04 +02:00
rule(:keyword_return) { str('return').as(:return) >> space?}
2015-09-15 17:57:31 +02:00
rule(:keyword_true) { str('true').as(:true) }
rule(:keyword_nil) { str('nil').as(:nil) }
# this rule is just to make sure identifiers can't be keywords. Kind of duplication here, but we need the
2014-06-04 18:55:04 +02:00
# space in above rules, so just make sure to add any here too.
rule(:keyword){ str('if_') | str('else') | str('end') | str('while_') |
2015-10-09 16:28:47 +02:00
str('false') | str('true')| str('nil') | str("class") |
str('return')| str('int')| str('field')}
2014-06-04 18:55:04 +02:00
end
2015-09-15 17:57:31 +02:00
end