この BNF 文法の preg_match 関数を書きたいと思います。
経験値 ::= 経験値 + 期間 | EXP - 期間 | 学期
用語 ::= 用語 * 係数 | 用語 / 係数 | 要素
ファクター ::= ( EXP ) | 桁
数字 ::= 0 | 1 | 2 | 3
こんな感じで書いてみました
$pattern = "|[0-3+-()*/]+\$$|";
しかし、これの問題は、私の文法では無効な文字列 33$ を受け入れるため、私の文法では 1+22$ は有効ではないはずです。
私が犯している間違いは何ですか?誰か助けてください。
編集:
例: 1+22$ は無効な文字列にする必要があります。数字 0、1、2、3 だけが必要で、3 を超える数字は必要ないためです。
ありがとうございました。