четверг, 23 июля 2015 г.

ToDo. Сделать "устойчивые словосочетания"

ToDo. Сделать "устойчивые словосочетания".

Пример:

USES IN USED

значит не то что:

USES XXX

и не то что:

OBJECT IN A

Т.е. расширяем концепцию "DoubleQuotedString".

Только как-то так:

VOID operator "USES IN USED" TreatAsSentence
 ...
;

-- эта конструкция определяет не слово "USES IN USED", а словосочетание USES IN USED.

На основе Parser:NextToken и Parser:PushXXX. И Word:AddEnding.

Т.е. к слову добавляем "завершающие слова" и на этом строим разбор входного потока. И если разбор удался, то возвращаем "устойчивое словосочетание", а если не удался, то откатываемся к первому подходящему месту.

Таким образом конструкции:

Убедиться, что XXX
Убедиться, что объект XXX
Убедиться, что объект является XXX
Убедиться, что объект равен XXX

-- будут трактоваться, как РАЗНЫЕ слова.

Таким образом "перебором фраз" мы можем построить "человекочитабельную грамматику".

Которую ещё и компилятор скриптов понимает.

Конкатенативность языка (Конкатенативный язык программирования) - позволяет. Вроде.

С вменяемой диагностикой об ошибке.

Хм...

Не много ли я на себя беру...

Но это всё размышления не имеющие ничего общего с "основной веткой разработки".

Можно и без таких изысков обойтись.

Можно кстати и другим путём пойти.

Слово "Убедиться," смотрит что за ни слово "что", а слово "что" - смотрит, что за ним слово "объект", а слово "объект" смотрит, что за ним слово "является" или "равен". Ну  понятно, что есть "ветка успеха разбора" и "ветка неуспеха".

В итоге словосочетание даёт валидный список параметров.

Как-то так...

Варианты разные бывают.

В общем надо это дело обмозговать. Может быть выкинуть в корзину.

Комментариев нет:

Отправить комментарий