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
-- будут трактоваться, как РАЗНЫЕ слова.
Таким образом "перебором фраз" мы можем построить "человекочитабельную грамматику".
Которую ещё и компилятор скриптов понимает.
Конкатенативность языка (Конкатенативный язык программирования) - позволяет. Вроде.
С вменяемой диагностикой об ошибке.
Хм...
Не много ли я на себя беру...
Но это всё размышления не имеющие ничего общего с "основной веткой разработки".
Можно и без таких изысков обойтись.
Можно кстати и другим путём пойти.
Слово "Убедиться," смотрит что за ни слово "что", а слово "что" - смотрит, что за ним слово "объект", а слово "объект" смотрит, что за ним слово "является" или "равен". Ну понятно, что есть "ветка успеха разбора" и "ветка неуспеха".
В итоге словосочетание даёт валидный список параметров.
Как-то так...
Варианты разные бывают.
В общем надо это дело обмозговать. Может быть выкинуть в корзину.
Пример:
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
-- будут трактоваться, как РАЗНЫЕ слова.
Таким образом "перебором фраз" мы можем построить "человекочитабельную грамматику".
Которую ещё и компилятор скриптов понимает.
Конкатенативность языка (Конкатенативный язык программирования) - позволяет. Вроде.
С вменяемой диагностикой об ошибке.
Хм...
Не много ли я на себя беру...
Но это всё размышления не имеющие ничего общего с "основной веткой разработки".
Можно и без таких изысков обойтись.
Можно кстати и другим путём пойти.
Слово "Убедиться," смотрит что за ни слово "что", а слово "что" - смотрит, что за ним слово "объект", а слово "объект" смотрит, что за ним слово "является" или "равен". Ну понятно, что есть "ветка успеха разбора" и "ветка неуспеха".
В итоге словосочетание даёт валидный список параметров.
Как-то так...
Варианты разные бывают.
В общем надо это дело обмозговать. Может быть выкинуть в корзину.
Комментариев нет:
Отправить комментарий