LaTeX を MathML に変換する Bison/Flex プログラムを作成しています。現時点では、関数 (つまり、\sqrt、\frac など) の処理は、すべての関数のトークンを使用して、次のように機能します。
\\frac {return FUNC_FRAC;}
そして、トークン FUNC_FRAC を bison に渡します。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>";}