私は単純な言語のコンパイラを書いています。
ファイルを取得してトークンを に出力するレクサー/トークナイザーを作成しましたstdout
。
構文解析を行いたいのですが、トークンを入力として受け取るためにレクサーを変更する方法がわかりません。
- リンクされたリストは、大きなファイルに対して非常に非効率的です (約 80MB のソース ファイルは約 1.3GB の RAM を必要とします)。
- レクサーを変更して、呼び出されるたびに次のトークンを提供することもできます (アイデアは Dragon Book から取られました) が、プロセスのどこかで前のトークンに戻って読み取らなければならない場合、どうすればよいかわかりません。
これらのことを行う正しい方法は何ですか?