我有一個YACC語法爲C.解析表達式這些都是它的一些片段:衝突語法YACC /野牛
Expr: Expr COMMA Expr
| Assignment
Assignment: IDENTIFIER
| Assignment COMMA Assignment
Function Call: IDENTIFIER PARENOPEN Expr PARENOPEN
我基本上希望能夠是解析形式的函數調用a(p,q,r),並檢查傳遞的參數的數量和類型是否與函數定義中指定的匹配,使得它們在標識符本身的級別上減少到Expr
。
最後發生的是p,q,r
減少到Assignment
而不是Expr COMMA Expr
。這是有問題的,因爲我需要運行一些只能使用Expr COMMA Expr
運行的語義規則。同樣也不可能刪除規則Assignment COMMA Assignment
,因爲它對於某些減少至關重要。有沒有什麼方法可以將YACC硬編碼到這種情況下需要做什麼?
非常感謝您回覆克里斯。我完全同意你提出的觀點,但問題是我無法執行你在現階段提出的任何建議。那麼,我想再問一次,在YACC有沒有一些後門,我可以明確說明,當看到所述字符序列時,必須執行某些規則? – user2283013