Правильно ли созданная контекстно-свободная грамматика для 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 парсера, и если нет, то почему и где я мог ошибиться. Заранее спасибо )


Ответы (0 шт):