在TeX中,方程式定义在$...$
之间。如何定义lex的词法分析器规则,对于两个美元符号之间任意数量的任何字符的实例?
我试过了:
equation \$[^\$]*\$
没有成功。
答案 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()
。