しょぼいマシンで自作プログラミング言語を作ってみる (22)

UTF-32での字句解析にあたって(5)

ソースの行情報とバッファを保持するクラスを用意

 ソースに含まれる改行コード(キャリッジリターン'\r'、ラインフィード'\n')を検出して、各行の開始、終了を配列として、保持するクラスをSrcLinesとして用意しました。
 そして、その中にはUTF-32文字列バッファを保持するようにもしました。
 インタプリタだろうがコンパイラだろうが、SrcLinesに一旦バッファを溜め込んで、字句解析に引き渡す方針です。

トークンの位置情報について

 トークンの位置情報についてですが、改修前はソースの行番号、列番号、ファイル名だけを保持してましたが、バッファの位置も保持するようにしました。
 トークンを切り出す際にバッファの位置情報の差分から切り出せるようにとの意図からです。

字句解析の改修の開始

 ようやっと字句解析の改修にとりかかかれました。

識別子の字句解析

 識別子ですが、やはり数字から始まる識別子は受け付けないようにします。
 理由としては導入予定の16進数浮動小数点数の解析を容易にするためです。
 それに伴い、構造体のメンバアクセスのための演算子は"->"に統一する予定です。
 また、パッケージにおけるサブパッケージの区切りとする演算子も"::"に統一する予定です。

 とりあえず、今回の記事はここまで。継続して字句解析処理の改修を進めていきます。

いいなと思ったら応援しよう!