sách gpt4 ai đã đi

JAVACC token 定义

In lại 作者:行者123 更新时间:2023-12-01 12:52:53 26 4
mua khóa gpt4 Nike

Tôi đang sử dụng javacc 开发一个项目,我遇到问题并需要一些帮助,我的文件中有这样的内容:

STRING COPYRIGHT (C) 2003, 2004 SYNOPSYS, INC.;

我为单词 STRING 定义了一个标记,并且我想定义另一个标记 (NAME) 来获取所有单词 COPYRIGHT (C) 2003, 2004 SYNOPSYS 公司。

问题是我有一个 token INTEGER ,当它到达单词 2003 时,它会显示(解析期间发生错误。遇到 INTEGER : 2003 .. .)

那么我该如何获取 "STRING"";" 之间的单词

Cảm ơn!

1 Câu trả lời

我假设你想要 匹配“STRING”之后和“;”之前的所有字符还有分号本身

您可以使用词汇状态来做到这一点。您可以在FAQ中阅读有关它们的信息。 , the description of the grammar file ,以及 token manager minitutorial .

简而言之,代币管理器的制作看起来像这样

TOKEN: {  : AFTERSTRING } // When "STRING" is encountered, switch to state AFTERSTRING
TOKEN : { : DEFAULT} // After the ";", return to the DEFAULT state.

解析器的生成如下所示:

void string() : {} {   }

如果缺少分号,词法分析器将抛出 TokenManagerError .

<小时>

编辑:为了在缺少分号的情况下获得更好的错误消息,您可以执行以下操作。

TOKEN: {  : AFTERSTRING } // When "STRING" is encountered, switch to state AFTERSTRING
TOKEN : { : DEFAULT} // After the ";", return to the DEFAULT state.
TOKEN : { : DEFAULT }

解析器的生成如下所示:

void string() : {
Token t ;
} {
t =
(

|

{throw new ParserException( "STRING must be followed by a \";\". at line"
+t.beginLine+ ", column " +t.beginColumn+ "." ) ; }
)
}

关于JAVACC token 定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24093996/

26 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com