ГЛАВА 8. СИНТАКСИЧЕСКИЙ РАЗБОР И ВЫЧИСЛЕНИЕ ВЫРАЖЕНИЙ
Как вы напишите программу, которая будет брать в качестве
входа строку, содержащую численное выражение, например, 10-5*3, и
возвращает ответ, который в данном случае равен -5? Если "высшее
духовенство" еще существует среди программистов, она должна быть
составлена теми немногими, кто знает как это делается. Хотя каж-
дый, кто пользуется компьютером, мистифицирован способом, которым
компиляторы и интерпретаторы языков высокого уровня преобразуют
такие сложные выражения, как 10*3 - (4+COUNT)/12 в команды, кото-
рые может выполнять компьютер. Процесс преобразования называется
синтаксическим разбором. Синтаксический разбор - это основа всех
компиляторов и интерпретаторов с языков высокого уровня. Некото-
рые программисты знают, как написать программу синтаксического
разбора; эта область программирования доступна только для немно-
гих посвященных.
Однако, такого быть не должно. Синтаксический разбор на са-
мом деле является довольно прозрачным и похож на другие проблемы
программирования. В некоторых отношениях он даже легче, так как
имеет дело со строгими синтаксическими правилами. В данной главе
рассматривается метод рекурсивного нисходящего разбора, а также
все вспомогательные процедуры, которые позволяют вычислить слож-
ные численные выражения. Все эти процедуры будут помещены в один
файл, который вы будете использовать всякий раз, когда это пона-
добиться. После того, как вы научитесь пользоваться данным фай-
лом, вы можете развить и модифицировать его в соответствии с ва-
шими нуждами и присоединить себя к "высшему духовенству".