gpt4 book ai didi

compiler-construction - 在词法分析器中定义

转载 作者:行者123 更新时间:2023-12-04 08:38:55 24 4
gpt4 key购买 nike

我正在尝试实现一个尝试符合 this specification 子集的前端.

看来引用资料里很多东西都定义的很清楚,除了<LINE-START><LINE-END> ,但仍经常使用。

这是一个引文:“为了便于说明,能够明确地引用紧接在逻辑行开头之前的点和紧接在逻辑行的最后一行终止符之前的点是很方便的。这是使用<LINE-START><LINE-END> 作为 VBA 语法的终结符。<LINE-START> 被定义为紧接在每个逻辑行之前,<LINE-END> 被定义为替换每个逻辑行末尾的 <line-terminator>:

这里有些例子:

line-terminator = (%x000D %x000A) / %x000D / %x000A / %x2028 / %x2029
line-continuation = *WSC underscore *WSC line-terminator
WS = 1*(WSC / line-continuation)

EOL = [WS] LINE-END
logical-line = LINE-START *extended-line LINE-END

if-statement = LINE-START “If” boolean-expression “Then” EOL
statement-block
*[else-if-block]
[else-block]
LINE-START ((“End” “If”) / “EndIf”)

else-if-block = LINE-START “ElseIf” boolean-expression “Then” EOL
LINE-START statement-block

else-block = LINE-START “Else” statement-block

有谁知道在哪里以及如何定义 <LINE-START><LINE-END> ?

最佳答案

鉴于文档中描述的多种语言,我希望行开始和行结束的定义是表 3.2.2 逻辑行语法的一部分,如果它们是(如文档中其他地方所建议的)标记。正如您所说,它们的定义不是很清楚。

还有另一种可能。这些术语的使用方式类似于 BOF/EOF。这表明它们是独立于所使用的 token 系统的状态。如果是这种情况,当适当的条件成立时,您将需要将这些定义为解析器的一部分。定义将取决于几个因素 - 在文件中的位置;前一个、当前和可能的下一个 token 。 (例如,Start Line 是文档从 End Line 状态前进后需要放入的状态,但如果也是 EOF,则不是)。这些规则必须从给定的(不完整的)定义和适当的假设中推导出来。

这不是一个完整的答案,但考虑到规范在这一点上的模糊性,以及这些 token 的多次使用?/状态?我发现很难看到如何给出更完整的答案。
哈。

关于compiler-construction - 在词法分析器中定义 <LINE-START> 和 <LINE-END>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11788372/

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