我正在编写一个 Bison/Flex 程序来将 LaTeX 转换为 MathML。目前,处理函数(即 \sqrt、\frac 等)的工作方式是这样的,每个函数都有一个标记
\\frac {return FUNC_FRAC;}
并将令牌 FUNC_FRAC 传递回 bison,它在此子树的描述中发挥作用:
function: FUNC_FRAC LBRACE atom RBRACE LBRACE atom RBRACE {$$ = "<mfrac>" + $3 + $6 + "</mfrac>";}
但这意味着我需要定义和处理可能无限数量的令牌。我想做的是这样的事情,它不像写的那样工作。在弹性:
\\[A-Za-z]+[0-9]* {return the-matched-string;}
在野牛中:
function: "\frac" LBRACE atom RBRACE LBRACE atom RBRACE {$$ = "<mfrac>" + $3 + $6 + "</mfrac>";}