YACC或Bison Action Variables位置最大值

时间:2016-04-03 08:12:56

标签: yacc

在YACC和其他类似Yacc的计划中。当前解析的令牌组有动作位置变量。我可能想要处理一些csv文件输入,列数会因未知原因而发生变化。根据我的规则,quoted_strings和numbers可以找到一个或多个实例。

rule : DATE_TOKEN QUOTED_NUMBERS q_string numbers { printf(..... $1,$2....}

q_string
    : QUOTED_STRING
    | QUOTED_STRING q_string
    ;

numbers
    : number numbers
    | number
    ;

number
    : INT_VALUE
    | FLOAT_VALUE
    ; 

可以添加操作来处理已经解析过的内容

{ printf("%s %s %s \n",$<string>1, $<string>1, $<string>1); }

是否有运行时宏,构造或变量告诉我已经读取了多少个令牌,以便我可以编写一个循环来打印所有令牌值?

什么是$ max

1 个答案:

答案 0 :(得分:2)

野牛行动中的$n变量是指右侧符号,而不是代币。如果对应的rhs对象是非终端对象,则$n指的是非终端的语义值,该语义值是通过在该非终结符的语义动作中分配给$$来设置的。 p>

因此,如果规则的右侧有五个符号,那么您可以使用$1$5。没有变量符号可以让你引用&#34; nth&#34;符号