-
Notifications
You must be signed in to change notification settings - Fork 1
Home
elipmoc edited this page Sep 30, 2017
·
3 revisions
//拡張BNF記法
// []は 0回か1回を表し
// {}を0回以上の繰り返し
// +を1回以上の繰り返しとする
文
: 式 || 変数宣言
;
変数宣言
: [型指定子3],識別子,"=",式
;
式
:キャスト
;
キャスト
: ( "(" , 型種類 , ")", キャスト )|| let_in
;
let_in
:("let" , 変数宣言,{ "," , 変数宣言}, "in" ,式) || 条件演算子
;
条件演算子
:等しい演算子,["?",式,":",式]
;
等しい演算子
:足し算 , {( "==" || "<=" || ">=" || "<" || ">" || "!=" ),足し算}
;
足し算
: 項 , { "+" || "-" , 項 }
;
項
:[-] , ラムダ呼び出し { "*" || "/", ラムダ呼び出し }
;
ラムダ呼び出し
:因子,{"(",引数,")"}
;
因子
: 整数|| 実数 ||文字 || 文字列 || リスト || 組み込み関数呼び出し || グローバル変数|| ローカル変数 || ラムダ定義 ||( "(" , 式 , ")" )
;
文字
: "'" , 任意の一文字 , "'"
;
文字列
: " " ", 任意の文字列 , " " "
;
リスト
: "[" , リスト中身 ,"]"
;
リスト中身
: 式 , { "," , 式}
;
ラムダ定義
:"(",引数定義,")","{",式,"}"
;
組み込み関数呼び出し
:識別子,"(",引数,")"
;
グローバル変数 とローカル変数
:識別子
;
識別子
:(a-z)+
;
引数
:[式 , {"," , 式}]
;
引数定義
:[識別子 , {"," , 識別子}]
;
型指定子3
:型指定子 , "::"
;
型指定子2
:( 型種類 | "[", 型指定子 , "]" ) ,{ "[" , "]" }
;
型指定子
:型指定子2 | , {"->",型指定子2}
;
型種類
:"double" | "void"|"bool"|"char"|"int"|"unit"
;