История изменений
Исправление den73, (текущая версия) :
Привет! У меня было всё сделано рукописное, методом рекурсивного спуска. Основной инструмент здесь - это голова, которой не хватало, поэтому сделали очень простой движок базы знаний в одном файле, где предметная область была разбита на мелкие статьи, взаимосвязанные друг с другом. В том числе и конфликты там учитывались в виде тега, и была табличка разных видов character-ов, чтобы видеть проблемы на границах лексем. Наверное, что-то среднее между фреймами, семантической сетью и вики. Остались ли в синтаксисе в результате этого решения какие-то баги - я не могу сказать, ибо не знаю. В общем и целом я стремился, чтобы синтаксис был простым, т.к. у меня в утёнке бейсик, а в практике на тот момент был лисп, т.е. простые синтаксисы, читающиеся в основном слева направо, с весьма малой дозой синтаксического сахара. Весь синтаксис - это сумма синтаксиса лексем, которая более-менее одинакова, выражений с приоритетами и скобок. В таком простом наборе довольно легко исправлять косяки. Если посмотреть на некоторые «настоящие» компиляторы, то рукописные парсеры вполне себе встречаются. Почему отказался от генераторов? Потому что не увидел большой пользы, сложно отлаживать и сложно контролировать сообщения об ошибках. То ли я их не осилил, то ли правильно сделал - пока не знаю.
Исправление den73, :
Привет! У меня было всё сделано рукописное, методом рекурсивного спуска. Основной инструмент здесь - это голова, которой не хватало, поэтому сделали очень простой движок базы знаний в одном файле, где предметная область была разбита на мелкие статьи, взаимосвязанные друг с другом. Наверное, что-то среднее между фреймами, семантической сетью и вики. Остались ли в синтаксисе в результате этого решения какие-то баги - я не могу сказать, ибо не знаю. В общем и целом я стремился, чтобы синтаксис был простым, т.к. у меня в утёнке бейсик, а в практике на тот момент был лисп, т.е. простые синтаксисы с весьма малой дозой синтасического сахара. Весь синтаксис - это сумма синтаксиса лексем, которая более-менее одинакова, выражений с приоритетами и скобок. В таком простом наборе довольно легко исправлять косяки. Если посмотреть на некоторые «настоящие» компиляторы, то рукописные парсеры вполне себе встречаются. Почему отказался от генераторов? Потому что не увидел большой пользы, сложно отлаживать и сложно контролировать сообщения об ошибках. То ли я их не осилил, то ли правильно сделал - пока не знаю.
Исходная версия den73, :
Привет! У меня было всё сделано рукописное, методом рекурсивного спуска. Основной инструмент здесь - это голова, которой не хватало, поэтому сделали очень простой движок базы знаний в одном файле, где предметная область была разбита на мелкие статьи, взаимосвязанные друг с другом. Наверное, что-то среднее между фреймами, семантической сетью и вики. Остались ли в синтаксисе в результате этого какие-то баги - я не могу сказать ибо не знаю. Если посмотреть на некоторые «настоящие» компиляторы, то рукописные парсеры вполне себе встречаются. Почему отказался от генераторов? Потому что не увидел большой пользы, сложно отлаживать и сложно контролировать сообщения об ошибках. То ли я их не осилил, то ли правильно сделал - пока не знаю.