ルール
名前 = 式;
- 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+;