Задать вопрос

Как создать парсер AST допускающий синтаксические ошибки?

Для начала как вооще строятся AST (абстрактное синтаксическое дерево) деревья? Что почитать?

Как создать парсер для языка, например SQL, который генерирует AST дерево и прощает синтаксические ошибки?

Пример: "3+4*5":
+
 / \
3   *
   / \
  4   5


Но если пользователь допустил ошибку "3+4*+", парсер пытается все равно понять что имел ввиду пользователь:
+
 / \
3   *
   / \
  4   +
     / \
    ?   ?


С чего начать? Спасибо!

SQL:
---SELECT_________________
   /           \           \
  .           FROM        JOIN
 / \           |         /    \
a city_name  people   address  ON
                                |
                                =______________
                               /               \
                              .____             .
                             /     \           / \
                            p  address_id     a  id
  • Вопрос задан
  • 4055 просмотров
Подписаться 10 Оценить Комментировать
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Для начала как вооще строятся AST (абстрактное синтаксическое дерево) деревья? Что почитать?

Книгу дракона.

Как создать парсер для языка, например SQL, который генерирует AST дерево и прощает синтаксические ошибки?

Предусмотреть в грамматике правила описывающие синтаксические ошибки и восстановление после них. В bison, например, для этого есть токен "error".
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы