月別アーカイブ: 2015年7月

Rustでスクリプト言語を作ってみようとする (2) – 字句解析部分

字句解析の部分

メモ

v2

  • enumに諸々のパラメータを持たせるのはやめる(パターンマッチを簡単にできるようにする)
  • マクロが便利そうなので積極的に使う

v1

ちゃんとできたら説明のようなものを書いてみたいと思うのですが、とりあえず今は書いてみたという進捗報告のみ。

token.rs

gist6160bb87695ea22afae3

tokenizer.rs

gist377346c4e24c7a5cccde

Rustでスクリプト言語を作ってみようとする (1)

Rustでスクリプト言語を作ってみようと思います。

その進捗報告および備忘録をつけていきます。

想定しているゴール

  • Rustで実装されたスクリプト言語の処理系が存在する
  • 字句解析・構文解析VMについてはライブラリを使わずにハンドメイドで実装されている
  • ユーザーがコマンドラインから操作するための何らかのバイナリが存在する

モチベーション

  • Rustの可能性を引き出したい
  • 言語処理系の中身を知りたい

考えている言語

正直はじめてこういった言語処理系を実装してみようとしているので、あまり奇抜なことはできません。なので、基本的に次のような言語を想定します。

  • Luaっぽいプロトタイプ指向言語を目指す
    • Luaソースコードyaccのようなパーサジェネレータを使わずに書かれているので、参考になると考えたため。
    • プロトタイプ指向の言語に興味があるため。
  • Luaの文法をできるだけ簡略化し、自分が実装可能な範囲で制限を加える
    • 実装しきることが現在の第一目標なので。

筆者の能力的な部分

情報系の授業は受けたことがありますが、コンピューターサイエンスを学んだ人間ではありません。ましてや形式文法や構文解析について専門的に学んだ経験もありません。そのような凡プログラマが私です。