Каково использование создания дерева разбора для кода? Это может показаться глупым, но я просто не могу понять, как это работает. Я понимаю, что он может быть полезен в арифметических операциях для учета приоритетов. Но зачем конвертировать код в дерево? И что происходит после этого? Кажется, я не понимаю, что я могу сделать с деревом разбора. Я пытаюсь написать очень маленький интерпретатор, который выполняет арифметические операции и простые условия. Я написал небольшую грамматику. У меня есть дерево разбора. Но не знаю, что с этим делать.Какова цель создания дерева синтаксического анализа?
0
A
ответ
3
Ну, если у вас есть дерево синтаксического анализа, и вы хотите закончить переводчика, то вы делаете это вы Оцените дерево, рекурсивно.
Чтобы оценить блок кода, вы каждый раз оцениваете каждое из своих утверждений.
Чтобы оценить оператор if
, вы оцениваете выражение условия и в зависимости от результата вы вычисляете ветвь then
или ветвь else
(если она существует).
Чтобы оценить дополнение, вы оцениваете каждый операнд, а затем добавляете их вместе.
Наличие синтаксического дерева означает, что эти операции являются естественными, они обычно включают в себя оценку (некоторые из) дочерних узлов текущего узла, а затем, возможно, объединение результатов вместе.
Смежные вопросы
- 1. Цель синтаксического анализа помощи
- 2. Упрощение дерева синтаксического анализа ANTLR4
- 3. Какова цель анализа аргументов функций?
- 4. Какова главная цель создания DBpedia?
- 5. создание дерева синтаксического анализа/AST из java-байтового кода
- 6. Ошибка Цель кодирования синтаксического анализа XML с
- 7. Выход дерева (под) синтаксического анализа в Rascal
- 8. Формат дерева синтаксического анализа в Stanford NLP
- 9. Speed-оптимизации данных дерева синтаксического анализа
- 10. Yacc (зубр) синтаксического анализа дерева неупорядоченный печать
- 11. Визуализация дерева синтаксического анализа с d3.js
- 12. понятия из Стэнфордского синтаксического анализа дерева NLP
- 13. Написать код для создания синтаксического дерева
- 14. Ошибка создания синтаксического анализа нового приложения Usergrid
- 15. Какова цель создания классов коллекции в PHP?
- 16. Какова цель создания класса внутри конструктора? Java
- 17. Какова цель создания проекта в Sublime?
- 18. Какова цель создания собственного класса исключений
- 19. Какова цель создания переменной класса на Java?
- 20. Какова цель создания двух endian-представлений?
- 21. Какова цель создания статического объекта в Java?
- 22. Какова цель создания символических переменных в Theano?
- 23. синтаксического анализа в сборке
- 24. Python: команда синтаксического анализа
- 25. Какова цель "?"
- 26. Обозначение круглой формы синтаксического анализа
- 27. Какова цель хранилища .jks?
- 28. Проблема синтаксического анализа
- 29. Какова цель maxPostSize для HTTP-коннектора Tomcat?
- 30. кукольный: ошибка синтаксиса в «цель»; expected '}' - ошибка синтаксического анализа
Возможный дубликат [Как используются деревья синтаксического анализа?] (Http://stackoverflow.com/questions/38516485/how-are-parse-trees-used) – rici
Проще всего это понять, посмотрев, как калькулятор RPN работает. RPN похож на сплющенную парсету (по крайней мере, для простых математических выражений) –