C/C++
進捗どうですか? ええ、はい……。 率直に言うと、進んでない。正確には両方のリポジトリでちょっと躓いてしまったので、ソースコードをフルスクラッチで書き直してる最中です。 やったこと ・リポジトリ名変更。 ・今までの名前のリポジトリに、同じような(…
あそこまで実装しておいたが、すべて投げ捨てた いや正確には、残しておいて、別名に変更して取っておいた、が正しい。 boost::xpressiveを使用して1から書き直してみた ・動的に正規表現で、字句の種類やらを定義及び字句解析できるようにしてみた。 ・とり…
ここまでにやったこと ・符号付き整数や文字列、改行、セミコロンなどの認識(トークン化) ・トークン切り出し関数のクラス化 ・16進表記対応。 ・符号なし整数(正)のみ対応に戻した。 ・他、細かな改修 https://github.com/seekerkrt/lexer 今後の予定 …
さらにC++っぽくクラスにまとめてみた。 細かい点も書き直したり継ぎ足してある。 ・出力を少し変えた。 ・セミコロンを認識するようにした。 GitHub - seekerkrt/compiler
3※なお、C++11の機能を使って書いてるのであしからず。 前回は、整数と文字列、空白文字(タブ、改行、スペース)だけを認識するというプログラムを書いた。 今回は少し拡張し、空白文字を細かく認識するようにし、今後のための些末な改良も加えた。 //Start…
というわけで、まずは単純愚直に1文字ずつ判定するところから。 テスト用なので関数に分けてあるが、そのまま標準出力しているし、メタ的な結果を返すことをしていない。 #include <cstdio> #include <cctype> void tokenize(char* str){ int pos = 0; while(*str != '\0'){</cctype></cstdio>…