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
。
私は何を取りこぼしたか?