未能生成语法

时间:2016-11-23 23:31:19

标签: parsing grammar

我必须检查一个简单的布尔表达式的语法,例如 (X = 100和Y <100),我写了语法,并试图检查这是否正确所以我使用这个在线工具http://smlweb.cpsc.ucalgary.ca/start.html。它说语法错了。

有人可以在这里指出问题吗?提前谢谢。

boolean       -> bool_term | boolean OR bool_term  
bool_term     -> bool_factor | bool_term AND bool_factor
bool_factor   -> bool_primary | NOT bool_primary
bool_primary  -> predicate | ( boolean )  
predicate     -> expr comp_op expr 
expr          -> string | number.
comp_op       -> = |  > 

1 个答案:

答案 0 :(得分:1)

主要是关于服务的愚蠢语法。例如,不支持字符=>,也无法将其转义。

这个语法有效:

BOOLEAN       -> BOOLTERM | BOOLEAN or BOOLTERM  .
BOOLTERM      -> BOOLFACTOR | BOOLTERM and BOOLFACTOR .
BOOLFACTOR    -> BOOLPRIMARY | not BOOLPRIMARY .
BOOLPRIMARY   -> PREDICATE | ( BOOLEAN )  .
PREDICATE     -> EXPR COMPOP EXPR .
EXPR          -> string | number .
COMPOP        -> eq | gt .