Initial Grammar - akamah/garbanzo GitHub Wiki

初期構文

埋め込み構文

Garbanzoの埋め込み構文は処理系本体に書かれた唯一の構文である. 内容は文字列とデータストアのみであり,理論的には全てのプログラムがこの記法だけで記述できる. しかし,人間が読み書きするためにはやや冗長かつ複雑なので,幾つかの機能を追加した"初期構文"を, 処理系とは別途記述し,最初に読み込むとする.

文と式

Garbanzoの埋め込み構文で現れる概念(非終端記号)として,文(sentence)と式(expression)とキー(key)が存在する. sentenceは,埋め込み段階ではデータストアのみからなる.また,expressionは,データストアと文字列からなる. また,keyはデータストアのキーとして現れることのできる値のルールであり,最初は文字列のみからなる.

一覧

初期構文で作成中の文法一覧

文(sentence)

文はあまりたくさんは存在しない予定である.

名前
改行 \n
コメント # ...
whileループ while expr sentence* end
if文 if expr sentence* else sentence* end

式(expression)

式は一部,優先順位付きルールを用いた定義を行っている. 優先順位は高いほど先にルールとして認識されるため, 結合は弱くなる.また,左結合の演算子には対応していない.

名前 優先順位
整数 0 142857
真偽値 20 true, false
ブロック 20 block sentence* end
関数 20 fun(args, ...) sentence* end
変数 0 hogehoge
代入 300 a = expr
呼出 30 hoge(foo, bar)
eval 40 %expr
足し引き 100 a + 30
掛け算 90 a * 40
小なり 150 a < b