Правильно ли созданная контекстно-свободная грамматика для sql запроса select?
Вот данная грамматика:
query -> "select" all | select_result "from" table_refs where_clause
all -> "*"
select_result -> col_refs | agg
agg -> agg_func (col_refs)
agg_func -> MIN | MAX | COUNT
col_refs -> col_ref, col_refs | col_ref
table_refs -> table_name, table_refs | table_name
where_clause -> "where" var opt value
var -> col_ref
opt -> > | < | >= | <= | =
value -> [a-zA-Z] | [a-zA-Z] value | [0-9] | [0-9] value
Я хочу узнать, правильно ли оформлена грамматика для ll парсера, и если нет, то почему и где я мог ошибиться. Заранее спасибо )