Skip to content

Commit

Permalink
Add number AST node
Browse files Browse the repository at this point in the history
  • Loading branch information
Evan Phoenix committed Feb 5, 2011
1 parent 7609e64 commit a06d98c
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 0 deletions.
23 changes: 23 additions & 0 deletions lib/prattle/ast/number.rb
@@ -0,0 +1,23 @@
module Prattle
module AST
class Number < AST::Node
Prattle::Parser.register self

def self.rule_name
"number"
end

def initialize(value)
@value = value
end

attr_reader :value

def self.grammar(g)
g.number = g.reg(/0|([1-9][0-9]*)/) do |i|
Number.new(i.to_i)
end
end
end
end
end
20 changes: 20 additions & 0 deletions test/ast/test_number.rb
@@ -0,0 +1,20 @@
require 'test/unit'
require 'prattle/parser'

class TestNumber < Test::Unit::TestCase
def test_parse
parser = Prattle::Parser.new("1")
node = parser.parse :number

assert_kind_of Prattle::AST::Number, node
assert_equal 1, node.value
end

def test_zero
parser = Prattle::Parser.new("0")
node = parser.parse :number

assert_kind_of Prattle::AST::Number, node
assert_equal 0, node.value
end
end

0 comments on commit a06d98c

Please sign in to comment.