我正在尝试了解 Treetop 解析的基础知识。这是一个非常简单的语法,所以我可以说ArithmeticParser.parse('2+2').value == 4
。
grammar Arithmetic
rule additive
first:number '+' second:number {
def value
first.value + second.value
end
}
end
rule number
[1-9] [0-9]* {
def value
text_value.to_i
end
}
end
end
解析2+2
工作正常,返回一个节点。但是,解析2
或22
返回nil
.
我错过了什么?