2

一般的なテキストエディタで巨大なソースファイル(C++など)を高速にレックスするためにどのような手法が採用されているのでしょうか。編集時の高速レキシング

ファイルを編集するたびにファイル全体を再レキシング(つまりいくつかの文字を追加)するとすぐに実行できなくなる可能性がありますが、これらの文字はソースファイル内のすべて(上方向、下方向または両方) 、途中巨大なファイルを介し

/* 

又は

\* 

を挿入するときにそうであるように。

ランタイムレキシングの標準的なアプローチはありますか?

+0

レキシングは非常に高速です。あなたは* paraingを意味しますか?* – EJP

+0

@EJP:*パース*を意味しますか? –

+0

どのようにして、いくつかのキャラクターのネーザーがlex *をトップに変えることができますか? (少なくとも、現在のトークンよりも、キーワードになるか停止するかもしれません) – rici

答えて

2

私は、コンパイラによってソースファイルをレックスするのと同じテクニックを想定しています。

優れたFSAベースのレクサー(または手書きのもの)は、1文字につきわずかの命令しか費やしません。命令を実行するのに5nsかかるかたちのマシンを想定します(遅いWRT現代のワークステーション)。 100万文字のバッファ(30文字で約30万行)があり、それぞれを処理するために10命令が必要な場合、合計のレッキング時間は5000万nS = .05秒です。

なぜこれが問題だと思いますか?

関連する問題