BNF Syntax Mapper

入力された文字列がBNFのどの規則に分解されるかを木で表示します。
BNF
入力文字列
Parse Tree
入力文字列を解析すると構文解析木が表示されます。

このツールで使えるBNFの表記

ルール

名前 = 式;
1行に1ルールを書きます。最初のルールが開始記号になります。
# ... / // ...
行全体のコメントとして無視されます。
/* ... */
範囲コメントとして無視されます。

name
別のルール、または組み込み記号を参照します。
'text' / "text"
その文字列に一致する終端記号です。
[0-9]
1文字に一致するJavaScript正規表現の文字クラスです。
a b c
左から順番に一致させます。
a | b
どちらかに一致させます。
( ... )
式をグループ化します。
a?
0回または1回に一致します。
a*
0回以上の繰り返しに一致します。
a+
1回以上の繰り返しに一致します。

組み込み記号

ALPHA
英字1文字、A-Z または a-z
UPALPHA
英大文字1文字。
LOALPHA
英小文字1文字。
DIGIT
数字1文字。
SP
半角スペース1文字。
LF / CR / CRLF
改行文字に一致します。
CTL
制御文字に一致します。
非改行文字
改行以外の1文字に一致します。

空白の扱い

通常の要素
入力文字列中の半角スペースとタブは、一致判定の前に自動で読み飛ばされます。
SP / LF / CR / CRLF / CTL / 非改行文字
これらは読み飛ばしをせず、その位置の文字を直接判定します。

expr   = term '+' term LF?;
term   = number | '(' expr ')';
number = DIGIT+;
木構造がクリップボードにコピーされました