0

在 TeX 中,方程定义在 之间$...$对于两个美元符号之间的任意数量的任意字符的实例,我如何定义 lex 的词法分析器规则?

我试过了:

equation  \$[^\$]*\$

没有成功。

4

1 回答 1

1

如果您不希望将美元符号作为等式的一部分包含在内,您可以尝试使用开始条件:

%x EQN
%%
\$ { BEGIN(EQN); } /* switch to EQN start condition upon seeing $ */
<EQN>{
    \$ { BEGIN(INITIAL); } /* return to initial state upon seeing another $ */
    [^\$]* { printf(yytext); } /* match everything that isn't a $ */
}        

或者,如果您在词法分析器中定义了其他状态,则BEGIN(STATE)可以使用yy_push_state(),而不是使用。yy_pop_state()

于 2013-02-05T22:47:47.290 回答