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