私はLaTeXをMathMLに変換するBison/Flexプログラムを作成しています。現時点では、機能(すなわち\ sqrtの、\のFRAC、など)を扱うことは、すべての機能Flexはbisonとの文字列一致を返すことができます
\\frac {return FUNC_FRAC;}
のトークンによって、次のように動作し、説明にその役割を果たしているバックバイソンにトークンFUNC_FRACを通過します
function: FUNC_FRAC LBRACE atom RBRACE LBRACE atom RBRACE {$$ = "<mfrac>" + $3 + $6 + "</mfrac>";}
しかし、これは私がトークンの潜在的に無制限の数を定義し、両立する必要があることを意味します。このサブツリーの私がしたいことは、このようなものであり、書かれたようには動作しません。
\\[A-Za-z]+[0-9]* {return the-matched-string;}
とバイソンで:Flexで
function: "\frac" LBRACE atom RBRACE LBRACE atom RBRACE {$$ = "<mfrac>" + $3 + $6 + "</mfrac>";}
oh boy。 yytextのもの。私が大学を覚えている –
質問が表示されないようにしたいと思っています...私は古いプロジェクトを終了させます;) –
LexとYaccの書籍には、関数のサポートを追加する簡単な電卓の例があり、各関数を呼び出して、上記のTOK_IDスタイルを使用して、yacc/bisonにテーブルを作成します。これは、create_id_node –