Если ваши данные имеют структуру, возможно, вы можете использовать грамматику для описания некоторых из этих структур. (Обычно вы используете грамматики для распознавания того, что они могут, часто слишком много, и внеграмматические проверки, чтобы исключить то, что грамматики не могут устранить).
Если вы используете грамматику, которая может выполнять параллельные потенциальные разборы, которые исключают разборы, когда они становятся неосуществимыми,
Вы можете разобрать различные заказы прямо. (Парсер GLR может сделать это красиво).
Представьте, что у вас есть НОМЕРА, описывающие суммы, НОУНЫ, описывающие различные объекты, и ГЛАГОЛЫ для действий.
Тогда грамматика, которая может принимать различные порядки элементов, может быть:
G = SENTENCE '.' ;
SENTENCE = VERB NOUN NUMBER ;
SENTENCE = NOUN VERB NUMBER;
VERB = 'ORDER' | 'SAW' ;
NUMBER = '1' | '2' | '10' ;
NOUN = 'JOE' | 'TABLE' | 'SAW' ;
Этот образец чрезвычайно прост, но он будет обрабатывать:
JOE ORDERED 10.
JOE SAW 1.
ORDER 2 SAW.
Он также принимает:
SAW SAW 10.
Вы можете устранить это, добавив внешнее ограничение, что субъектами должны быть люди.