用于TeX方程的Lexer规则(正则表达式)

时间:2013-02-05 22:07:30

标签: lex

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

我试过了:

equation  \$[^\$]*\$

没有成功。

1 个答案:

答案 0 :(得分:1)

如果您不希望美元符号包含在等式中,您可以尝试使用start conditions

%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()