単純なブール式を解析する文法を構築しようとしています。
複数の式がある場合、問題が発生しています。'ed 式
を解析できる必要があります。1..n
and/or
以下の各例は、完全な式です。
(myitem.isavailable("1234") or myitem.ispresent("1234")) and myitem.isready("1234")
myitem.value > 4 and myitem.value < 10
myitem.value = yes or myotheritem.value = no
文法:
@start = conditionalexpression* | expressiontypes;
conditionalexpression = condition expressiontypes;
expressiontypes = expression | functionexpression;
expression = itemname dot property condition value;
functionexpression = itemname dot functionproperty;
itemname = Word;
propertytypes = property | functionproperty;
property = Word;
functionproperty = Word '(' value ')';
value = Word | QuotedString | Number;
condition = textcondition;
dot = '.';
textcondition = 'or' | 'and' | '<' | '>' | '=';