gpt4 book ai didi

c - Bison:$ 变量($1 $2 等)如何与非 token 一起使用?

转载 作者:太空宇宙 更新时间:2023-11-04 05:47:32 24 4
gpt4 key购买 nike

我想知道 $ 变量如何与非标记一起使用,例如代码块。我的问题可以简化为:

我有这样一条规则,中间有一段代码。在这种情况下谁是 3 美元和 4 美元?

func-header: ret-type ID { strcpy(func_id,current_id); } LPAREN params RPAREN

最佳答案

中间规则操作 (MRA) 被实现为与空序列匹配的非终结符。 (此类非终结符有时称为“标记”。)中间规则 Action 是生成的非终结符的语义 Action 。

与任何非终结符一样,这​​些自动生成的标记具有语义值,通过在操作中分配 $$ 来设置。但是,MRA 中 $n 的编号与正常操作中的编号略有不同。在 MRA 内部,$n 中的每个 n 都被转换为一个负索引,表示标记减少时堆栈顶部的值,通过减去 MRA 的 iwn 索引.

yacc/bison 始终允许使用负索引,但正如手册所述,它们非常危险,只有在您可以证明适当类型的值必然位于堆栈上的指示点时才应使用。在自动生成标记的情况下,yacc/bison 可以证明这一点,因为标记仅在单个产品中使用,并且生成的负索引总是落入包含 MRA 的右侧所占据的堆栈部分。

关于c - Bison:$ 变量($1 $2 等)如何与非 token 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56619522/

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