2016-11-23 2 views
0

Я должен проверить синтаксис для простого булевого выражения, такого как (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  -> = | > 
+0

Добро пожаловать в StackOverflow! Если мой ответ будет работать для вас, подумайте о его маркировке. Если это не так, прокомментируйте это. –

ответ

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 . 
Смежные вопросы