TRETEP: تحليل العقدة المفردة يعود لا شيء
سؤال
أحاول الحصول على أساسية من تحليل 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
.
ماذا افتقد؟
المحلول
فهمتك! على الرغم من أنني كنت عادةً ما أحذف السؤال ، إلا أنني لن أفاجأ إذا أساء شخص آخر أيضًا فهم Treetop ، لذلك سأترك هذا هنا للرجوع إليه.
Treetop لا يمر فقط من خلال القواعد ، تبحث عن واحد يطبق. بدلاً من ذلك ، يبدأ في القاعدة الأولى ، وإذا لم تتطابق القاعدة الأولى ، فيجب أن تكون كذلك قسري للنظر في البدائل. وبالتالي، / number
يجب أن تظهر في نهاية additive
قاعدة.
grammar Arithmetic
rule additive
first:number '+' second:number {
def value
first.value + second.value
end
}
/ number
end
rule number
[1-9] [0-9]* {
def value
text_value.to_i
end
}
end
end
لا تنتمي إلى StackOverflow