0
產生式規則的某些標記模式假設我們有生產規則表達可以LogicExpression,MathExpression,StringExpression,並ListExpression之間進行選擇。排除在JavaCC的
void Expression() #void: {}
{
LOOKAHEAD(3) LogicExpression() | LOOKAHEAD(3) MathExpression() |
LOOKAHEAD(2) StringExpression() | ListExpression()
}
的這些生產規則可以評估到令牌標識符所有四種,是因爲該標識符解析爲LogicExpression,而不是整個事情解決的MathExpression表達標識符+ 1會遇到一個ParseException 。有沒有辦法將單獨的標識符排除在生產規則之外?
不要嘗試用語法進行類型檢查。只需識別表達式,並檢查操作數類型在解析語義分析過程中對每個操作符是否有意義。 – rici