gpt4 book ai didi

java - 可以通过空字符串错误匹配 “(…)+”中的javacc扩展

转载 作者:行者123 更新时间:2023-12-03 09:07:56 25 4
gpt4 key购买 nike

我正在使用解析器,并且要求为每个关键字引发自定义错误。我的代码如下。

SKIP:  { " " | "\t" | "\n" | "\r" }
TOKEN: { "DEF" | "MAIN" | <NAME: (["A"-"Z"])+> | <PARAM: (["a"-"z"])+> | <NUM: (["0"-"9"])+> }

void Start(): {} {(Def() Func())+ <EOF>}

void Def(): {} {"DEF" | { throw new ParseException("expected keyword DEF"); }}

void Func(): {} {"MAIN" | Name() Param() | { throw new ParseException("Expected MAIN or NAME PARAM"); }}

void Name(): {} {<NAME> | { throw new ParseException("invalid function name"); }}

void Param(): {} { <PARAM> | { throw new ParseException("invalid PARAM"); }}
Start()函数给我一个错误,并告诉我 Expansion within "(...)+" can be matched by empty string error。我认为问题出在 Name() Param()Func()部分,但我不知道如何更改此设置,同时仍然抛出自定义错误消息。谁能提供一些指针?

最佳答案

虽然我同意user207421的评论,但您可以执行以下操作

void oneOrMoreThings() : {} {
(Thing() | (throw new ParseException( ... ) ; }
( Thing() )*
}

关于java - 可以通过空字符串错误匹配 “(…)+”中的javacc扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60676807/

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