lib/code/parser/name.rb in template-ruby-0.1.0 vs lib/code/parser/name.rb in template-ruby-0.2.0

- old
+ new

@@ -10,14 +10,41 @@ rule(:double_quote) { str('"') } rule(:opening_curly_bracket) { str("{") } rule(:closing_curly_bracket) { str("}") } rule(:opening_square_bracket) { str("[") } rule(:closing_square_bracket) { str("]") } + rule(:opening_parenthesis) { str("(") } + rule(:closing_parenthesis) { str(")") } rule(:equal) { str("=") } rule(:left_caret) { str("<") } rule(:right_caret) { str(">") } + rule(:tilde) { str("~") } + rule(:pipe) { str("|") } + rule(:ampersand) { str("&") } + rule(:asterisk) { str("*") } + rule(:slash) { str("/") } + rule(:antislash) { str("\\") } + rule(:percent) { str("%") } + rule(:plus) { str("+") } + rule(:minus) { str("-") } + rule(:equal) { str("=") } + rule(:exclamation_point) { str("!") } + rule(:question_mark) { str("?") } + + rule(:rescue_keyword) { str("rescue") } + rule(:defined_keyword) { str("defined?") } + rule(:not_keyword) { str("not") } + rule(:or_keyword) { str("or") } + rule(:and_keyword) { str("and") } + rule(:if_keyword) { str("if") } + rule(:else_keyword) { str("else") } + rule(:unless_keyword) { str("unless") } + rule(:until_keyword) { str("until") } + rule(:while_keyword) { str("while") } + rule(:end_keyword) { str("end") } + rule(:zero) { str("0") } rule(:one) { str("1") } rule(:two) { str("2") } rule(:three) { str("3") } rule(:four) { str("4") } @@ -30,20 +57,33 @@ rule(:digit) do zero | one | two | three | four | five | six | seven | eight | nine end rule(:name_character) do - space.absent? >> newline.absent? >> comma.absent? >> colon.absent? >> - dot.absent? >> single_quote.absent? >> double_quote.absent? >> + opening_parenthesis.absent? >> closing_parenthesis.absent? >> + exclamation_point.absent? >> question_mark.absent? >> tilde.absent? >> + pipe.absent? >> ampersand.absent? >> asterisk.absent? >> + slash.absent? >> antislash.absent? >> percent.absent? >> + plus.absent? >> minus.absent? >> equal.absent? >> space.absent? >> + newline.absent? >> comma.absent? >> colon.absent? >> dot.absent? >> + single_quote.absent? >> double_quote.absent? >> opening_curly_bracket.absent? >> closing_curly_bracket.absent? >> opening_square_bracket.absent? >> closing_square_bracket.absent? >> equal.absent? >> left_caret.absent? >> right_caret.absent? >> any end rule(:name) do - (digit.absent? >> name_character >> name_character.repeat).as(:name) + rescue_keyword.absent? >> defined_keyword.absent? >> + not_keyword.absent? >> or_keyword.absent? >> and_keyword.absent? >> + if_keyword.absent? >> else_keyword.absent? >> + unless_keyword.absent? >> until_keyword.absent? >> + while_keyword.absent? >> digit.absent? >> end_keyword.absent? >> + name_character >> name_character.repeat >> question_mark.maybe >> + exclamation_point.maybe end - root(:name) + rule(:name_rule) { name.as(:name) } + + root(:name_rule) end end end