簡體   English   中英

如何簡化JavaScript / ECMAScript數組文字的生成?

[英]How to simplify JavaScript/ECMAScript array literal production?

我目前使用JavaCC實現JavaScript / ECMAScript 5.1解析器,並且ArrayLiteral生產遇到問題。

ArrayLiteral :
    [ Elision_opt ]
    [ ElementList ]
    [ ElementList , Elision_opt ]

ElementList :
    Elision_opt AssignmentExpression
    ElementList , Elision_opt AssignmentExpression

Elision :
    ,
    Elision ,

我有三個問題,我會一一問。


我試圖簡化/重寫上面描述的ArrayLiteral生產,並最終到達以下生產(偽語法):

ArrayLiteral:
    "[" ("," | AssignmentExpression ",") * AssignmentExpression ? "]"

我的第一個問題:這次重寫正確嗎?

其他兩個問題:

是的,可以正確捕獲所呈現的語法。

但是,更好的重寫方法是:

"[" AssignmentExpression ? ( "," AssignmentExpression ? ) * "]"

因為在OP中的重寫不是LL(1)-您無法在不閱讀整個AssignmentExpression情況下區分各種可能性-而通過此重寫,您可以通過查看第一個令牌來找出使用哪種替代方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM