ほとんどの従来の通念は、完全な言語設計や極端な効率の必要性など、目標について書かれていない前提を置いているため、これについては従来の通念に同意しません。あなたの質問から、私はこれらの目標を想定しています:
- 自分の言語を書くことについて学ぶ
- エレガントに見えるまで、言語をいじってみましょう
- 実際の実行のためにコードを別の言語またはバイトコードに出力しようとします。
ハッキング ハーネスと再帰降下パーサーを構築したいと考えています。
テキストベースのプロセッサのみを使用して、ハーネス用に作成したいものを次に示します。
- コード フラグメントを変更します (現在は「AT 0700 SET HALLWAY LIGHTS ON FULL」)。
- フラグメントをコンパイルする
- コード ファイル (現在は「tests.l」) を変更します。
- ファイルからコンパイル
- レクサー出力の切り替え (現在オン)
- エミッター出力の切り替え (現在オン)
家庭用ハードウェアでの実行の切り替え (現在はオフ)
あなたの命令ですか?
Python やその他のスクリプト言語でコードを書きたいと思うでしょう。実行ではなく、プレイの速度を最適化しています。再帰降下パーサーは次のようになります。
def cmd_at():
if next_token.type == cTIME:
num = next_num()
emit("events.setAlarm(events.DAILY, converttime(" + time[0:1] + ", "
+ time[2:] + ", func_" + num + ");")
match_token(cTIME)
match_token(LOCATION)
...
したがって、次のように記述する必要があります。
- ハッキングのための小さなメニュー。
- 数値、予約語などに対して異なるトークンを返す、いくつかの字句解析ルーチン。
- あなたの言語のロジックの束
このアプローチは、言語を一緒にハッキングするためのサイクルをスピードアップすることを目的としています。このアプローチが終了したら、BISON、テスト ハーネスなどに手を伸ばします。
自分の言語を作ることは素晴らしい旅になるでしょう!学ぶことを期待してください。金持ちになることを期待しないでください。