gpt4 book ai didi

java - 有没有办法检查下一个标记是否是 END?

转载 作者:太空宇宙 更新时间:2023-11-04 12:00:37 27 4
gpt4 key购买 nike

我正在使用 bychan 库,这个问题主要围绕它。

我刚刚查看了minilang示例并通读代码。当我看到StatementNode ,我正在努力寻找一种为常规目的添加结尾分号的方法。在该示例中,;用于分隔语句,但没有办法以 ; 结尾的最后一个语句来结束脚本。因为解析器无法解析结尾并会导致:

'Premature end reached' @  position ..., current lexeme is END ...

有没有办法检查下一个 token 是否是 END还是我的想法不正确,展望 future 不是正确的做法,还有其他方法吗?

我确实尝试过parser.nextIs(EndToken.get())之前,但 IDE 只是显示 no instance(s) of type variable(s) N exist so that EndToken<N> conforms to TokenKey

我可能没有那么先进的 Java 来找出解决方案。 :(

来自:https://github.com/atorstling/bychan/issues/37

最佳答案

这是一个遗漏。核心解析器 PrattParser 有一个 peek() 函数来获取下一个标记,您可以将其与任何标记类型进行比较。您可以将其用作 peek().getToken().equals(EndToken.get())

动态包的解析器接口(interface)UserParserCallback,还有另一个用于相同功能的接口(interface):nextIs(TokenKey)。这个想法是创建一个比 java 内置 equals 更类型安全的相等检查。相等类型称为TokenKey

现在您遇到了静态 token (例如 EndToken)没有任何 TokenKey 的问题。问题 37 的修复解决了这个问题。

现在您可以调用parser.nextIs(EndToken.get().getKey())。有关示例,请参阅ReadmeExamples::statements .

`

关于java - 有没有办法检查下一个标记是否是 END?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40949670/

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