gpt4 book ai didi

javascript - 如何在 JavaCC 中实现 JavaScript/ECMAScript "no LineTerminator here"规则?

转载 作者:行者123 更新时间:2023-11-30 10:10:53 25 4
gpt4 key购买 nike

我继续研究我的 JavaCC grammar对于 ECMAScript 5.1 .它实际上很顺利,我想我现在已经涵盖了大部分表达式。​​

我现在有两个问题,它们都与自动分号插入(§7.9.1)有关。这是其中之一。

规范定义了以下产生式:

PostfixExpression :
LeftHandSideExpression
LeftHandSideExpression [no LineTerminator here] ++
LeftHandSideExpression [no LineTerminator here] --

如何实现可靠的“此处无 LineTerminator”检查?

根据记录,我的 LINE_TERMINATOR 目前是这样的:

SPECIAL_TOKEN :
{
<LINE_TERMINATOR: <LF> | <CR> | <LS> | <PS> >
| < #LF: "\n" > /* Line Feed */
| < #CR: "\r" > /* Carriage Return */
| < #LS: "\u2028" > /* Line separator */
| < #PS: "\u2029" > /* Paragraph separator */
}

我已经阅读了 lexical states ,但我不确定这是否是正确的方向。我已经检查了一些我发现的其他 JavaScript 语法,但没有找到任何类似的规则。 (当我试图从这些语法中超越某些东西时,我实际上觉得自己是一个 total cargo culter。)

如能提供正确搜索方向的指示、提示或关键字,我将不胜感激。

最佳答案

我认为对于“限制制作”你可以这样做

void PostfixExpression() : 
{} {
LeftHandSideExpression()
(
LOOKAHEAD( "++", {getToken(0).beginLine == getToken(1).beginLine})
"++"
|
LOOKAHEAD( "--", {getToken(0).beginLine == getToken(1).beginLine})
"--"
|
{}
)
}

关于javascript - 如何在 JavaCC 中实现 JavaScript/ECMAScript "no LineTerminator here"规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26782747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com