在 TeX 中,方程定义在 之间$...$
。对于两个美元符号之间的任意数量的任意字符的实例,我如何定义 lex 的词法分析器规则?
我试过了:
equation \$[^\$]*\$
没有成功。
在 TeX 中,方程定义在 之间$...$
。对于两个美元符号之间的任意数量的任意字符的实例,我如何定义 lex 的词法分析器规则?
我试过了:
equation \$[^\$]*\$
没有成功。
如果您不希望将美元符号作为等式的一部分包含在内,您可以尝试使用开始条件:
%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()