使用GNU bison時,匹配生產後是否可以不做任何事情,然後檢查是否可以使用其他規則來減少相同的令牌序列?基本上,我在找的是與此類似:忽略yacc中的匹配生產
iexpr: VARIABLE { if (condition) {
/*some action */
}
else {
/*pushback read symbol, and check if other pattern can
be matched */
}
}
fexpr: VARIABLE { }
感謝
我很想知道你是如何滿足這個要求的。我不知道這種野牛的設施。如果控制執行你的代碼,這意味着野牛已經爲你匹配了模式。即使你以某種方式破解它並試圖實現你的目標,野牛最終會在下一次迭代時匹配相同的規則。我會建議適當地定義語法。如果你告訴你正在解析的內容,我可能會幫助你。 – Icarus3
@AshishMahamuni:我基本同意你的評價。我無法回答OP,但是一個類似可能有用的上下文是一種冗長的語言(SQL),您希望允許將關鍵字用作標識符。我已經看到了一些操作,以便在檢測到錯誤時,如果令牌當前是關鍵字,則會使用標記類型的IDENTIFIER而不是關鍵字重試語法。這很有效,還有一些地方你會遇到麻煩。 –
請正確使用術語。這些是*製作,*不是'模式'。 – EJP