必要なすべての (そして唯一の) 情報を含めるように最善を尽くしました。もっと見ると助けになるかどうか教えてください。
正規表現に問題があります。私のプログラムは、lexeme - トークンのペアを .txt ファイルに出力します。識別子と整数を除いて、すべてが正常に機能しています。たとえば、識別子のトークンは 262 です。
サンプル入力ファイル:
function main a: integer returns integer;
b: integer is a * 2;
出力例:
function - 269
maina - 262
integer - 272
returns - 274
integer - 272
; - 59
b - 262
integer - 272
is - 271
a - 262
2 - 263
; - 59
正しい出力は次のようになります。
function - 269
main - 262
a - 262
: - 58
integer - 272
returns - 274
integer - 272
; - 59
b - 262
: - 58
integer - 272
is - 271
a - 262
* - 261
2 - 263
; - 59
要約すると、空白で区切られた 2 つの識別子を結合し、識別子の後のトークンも削除します。