1
我想为这个BNF语法编写preg_match函数。preg_match只有一些数字
EXP :: = EXP + TERM | EXP - TERM | TERM
TERM :: = TERM * FACTOR | TERM/FACTOR | FACTOR
FACTOR :: =(EXP)| DIGIT
DIGIT :: = 0 | 1 | 2 | 3
我试图这种方式写
$图案= “| [0-3 + - ()* /] + \ $$ |”;
,但这样做的问题是,它接受字符串33 $这是无效的按我的语法 所以按我的语法1个+ $ 22不应该无效的,因为数字应该为0 | 1 | 2 | 3。
我正在犯什么错误?有人能帮帮我吗。
编辑:
例: 1 + 22 $应该是无效的字符串,因为我只想号0,1,2,3,但没有任何数量> 3
谢谢。
给你有什么&为例你想要什么输出? – Rikesh 2013-05-10 05:14:05
为什么不直接运行tokenizer/parser并查看它解析是否正确?Regex是一个很差的解析替代品。 – Patashu 2013-05-10 05:18:32