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 |