diff --git a/lib/parser/keywords.citrus b/lib/parser/keywords.citrus index 372ad0e..8fcc936 100644 --- a/lib/parser/keywords.citrus +++ b/lib/parser/keywords.citrus @@ -7,16 +7,22 @@ grammar Keywords rule keyword_do 'do' space? end rule keyword_else 'else' space? end rule keyword_end 'end' space? end - rule keyword_false 'false' space? end rule keyword_if 'if' space? end rule keyword_rescue 'rescue' space? end rule keyword_return 'return' space? end rule keyword_module 'module' space? end - rule keyword_nil 'nil' space? end rule keyword_unless 'unless' space? end rule keyword_until 'until' space? end rule keyword_while 'while' space? end + rule keyword_nil + ('nil' space? ){ Ast::NilExpression.new } + end + + rule keyword_false + ('false' space?) { Ast::FalseExpression.new } + end + rule keyword_true ('true' space?) { Ast::TrueExpression.new } end @@ -28,4 +34,9 @@ grammar Keywords 'unless' | 'until' | 'while') space? end + rule keyword_expression + keyword_true | keyword_false | keyword_nil + end + + root keyword_expression end diff --git a/test/unit/test_basic.rb b/test/unit/test_basic.rb index de23595..65523d6 100644 --- a/test/unit/test_basic.rb +++ b/test/unit/test_basic.rb @@ -1,23 +1,35 @@ -require_relative "../parser_helper" +require_relative "../setup" class TestBasic < MiniTest::Test # include the magic (setup and parse -> test method translation), see there - include ParserHelper + #include ParserHelper + + def setup + @parser = Keywords + end + + def check + parse = @parser.parse(@input) + assert_equal @input , parse + assert_equal @output , parse.value + end def test_true @input = 'true ' @output = Ast::TrueExpression.new() - @root = :keyword_true + check end - def ttest_false + + def test_false @input = 'false ' @output = Ast::FalseExpression.new() - @root = :basic_type + check end - def ttest_nil + + def test_nil @input = 'nil ' @output = Ast::NilExpression.new() - @root = :basic_type + check end def ttest_number