Flex(解析器)中的问题

时间:2010-12-10 14:48:40

标签: flex-lexer

我想问你一个关于Flex的问题,这是解析代码的程序。 假设我在规则部分有这样的指令:

"=" BEGIN(attribution);

<attribution>{var_name} { fprintf(yyout, "="); ECHO; }

<attribution>";" BEGIN(INITIAL);

{var_name}是一个匹配变量名称的正则表达式,我想要做的就是在输出中复制所有归属指令,例如     a = 3; 要么     b = a;

我的规则虽然不能用fprintf写入归属的左边成员,但只能     = 3; 要么     = A;

对此的一个解决方案可能是,在我使匹配“=”并且我处于归因状态之后,返回2个位置以获得左操作数。 我怎么能在Flex中做到这一点?

1 个答案:

答案 0 :(得分:1)

为什么使用flex进行语法分析?

你在做什么听起来像野牛的东西而不是弹性工作。 您将能够存储以前的令牌。

如果您仍想使用flex,可以使用/ pattern。 使用它可能会导致效率低下,而词法分析器可能是假的;它取决于整个规则集。

{var_name}/"=" { ECHO; BEGIN(attribution); }

请参阅the flex manual