2
내가 AND 연산 및 관찰 보고서와 결합 될 수있다 표현이있는 DSL, 구문 분석하는 아이러니를 사용하고
: 나는 다음과 같은 표현이아이러니 .NET : 표현 연산자 우선 순위
/* snip */
RegisterOperators(4, orKeyword);
RegisterOperators(5, andKeyword);
RegisterOperators(9, lessThanOperator, lessEqualOperator, equalOperator, notEqualOperator, moreThanOperator, moreEqualOperator);
infixOperator.Rule = andKeyword | orKeyword;
expression_in_parens.Rule = L_PAR + expression + R_PAR;
primaryExpression.Rule = expression_in_parens | methodCall | identifier | numberIdentifier | stringIdentifier;
unaryExpression.Rule = notKeyword + L_PAR + expression + R_PAR;
binaryExpression.Rule = expression + infixOperator + expression;
compareExpression.Rule = expression + compareOperator + expression + ReduceHere();
expression.Rule = primaryExpression | unaryExpression | compareExpression | binaryExpression;
: "A와 (B 및 C 또는 D). "A와 (B와 (C 또는 D))"로 구문 분석되지만, "A와 (B와 C) 또는 D"가되어야합니다.
키워드를 키워드보다 우선 순위가 높은 연산자로 등록하는 것이 좋습니다. 내가 뭘 놓치고 있니?