gpt4 book ai didi

parsing - 您如何处理 Lex 中的关键字?

转载 作者:行者123 更新时间:2023-12-02 10:33:12 25 4
gpt4 key购买 nike

假设您有一种语言允许这样的生成:可选可选 = 42,其中第一个“可选”是关键字,第二个“可选”是标识符。

一方面,我想要一个 Lex 规则,例如 optical { return OPTIONAL; },稍后将在 YACC 中使用,例如:

optional : OPTIONAL identifier '=' expression ;

如果我将标识符定义为:

identifier : OPTIONAL | FIXED32 | FIXED64 | ... /* couple dozens of keywords */ 
| IDENTIFIER ;

感觉很糟糕...此外,我需要两种标识符,一种用于允许关键字作为标识符的情况,另一种用于不允许关键字作为标识符的情况...

有解决这个问题的惯用方法吗?

最佳答案

Is there an idiomatic way to solve this?

除了您已经找到的解决方案之外,没有。半保留关键字绝对不是 lex/yacc 语法的预期用例。

柠檬解析器生成器有一个专为此类情况设计的后备声明,但据我所知,该有用的功能从未添加到 bison 中。

您可以使用 GLR 语法来避免找出标识符的所有不同子集。但当然会有性能损失。

关于parsing - 您如何处理 Lex 中的关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49608872/

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