我想问你一个关于Flex的问题,这是解析代码的程序。 假设我在规则部分有这样的指令:
"=" BEGIN(attribution);
<attribution>{var_name} { fprintf(yyout, "="); ECHO; }
<attribution>";" BEGIN(INITIAL);
{var_name}是一个匹配变量名称的正则表达式,我想要做的就是在输出中复制所有归属指令,例如 a = 3; 要么 b = a;
我的规则虽然不能用fprintf写入归属的左边成员,但只能 = 3; 要么 = A;
对此的一个解决方案可能是,在我使匹配“=”并且我处于归因状态之后,返回2个位置以获得左操作数。 我怎么能在Flex中做到这一点?
答案 0 :(得分:1)
为什么使用flex进行语法分析?
你在做什么听起来像野牛的东西而不是弹性工作。 您将能够存储以前的令牌。
如果您仍想使用flex,可以使用/ pattern。 使用它可能会导致效率低下,而词法分析器可能是假的;它取决于整个规则集。
{var_name}/"=" { ECHO; BEGIN(attribution); }
请参阅the flex manual。