2013-07-31 52 views
0

我的問題是關於野牛規則的語法。我試圖爲ecmascript生成解析器,並最終得到關於'{''}'的轉換 - 減少衝突,其中此生成可以是對象文字或塊。事情是,規範聲明規則聲明:規則中的野牛lookahead令牌

Statement : 
    Block | 
    /*...*/ 
    ExpressionStatement | 
    /*...*/ 
    ; 

和ExpressionStatement在規範中表達descriped當先行不是「功能」或「{」。我怎樣才能用野牛來實現這個目標?我試圖使用優先順序,但沒有成功:

%nonassoc '{' 
%nonassoc BLOCK 

Block : 
    '{' StatementListOpt '}' %prec BLOCK 
    ; 

假設我犯了一些錯誤。

衝突發生在'{'之後和'}'之前(我的意思是'}'前瞻)。

回答

0

我找到了解決方案: 實際上我應該應用%prec dirrective而不是我正在解決的規則,但是要減少規則。

這個答案其實是有助於理解這個指令是如何工作的細節: https://stackoverflow.com/a/12734499/1480424