Ключевые и зарезервированные слова
Использование зарезервированных слов существенно упрощает синтаксический анализ в ходе трансляции. В языке Fortran, например, ситуация осложняется из-за того, что оператор, предваряемый словами DO или IF, может и не быть оператором цикла (или условным оператором). Поскольку DO и IF не считаются зарезервированными словами, программист имеет полное право использовать их в качестве имен переменных.
В языке Cobol, напротив, зарезервированных слов слишком много, их трудно запомнить, поэтому возможно случайное употребление какого-либо из этих слов в качестве имени переменной. При добавлении новых зарезервированных слов в модифицированную версию языка тоже вероятны проблемы. Применение нового зарезервированного слова означает, что любая старая программа становится синтаксически неправильной, если в ней это слово используется в качестве имени переменной. В приводимых примерах программ мы будем стараться выделять зарезервированные слова полужирным шрифтом.Во многих языках содержатся предопределенные имена, которые занимают некоторое среднее положение между зарезервированными словами и именами, определяемыми пользователем.
С одной стороны, их смысл предопределен. С другой стороны, они могут переопределяться пользователем. Например, такие встроенные в язык Ada имена типов данных, как Integer и Float, предопределены. Эти имена не зарезервированы — их переопределение доступно любой программе на языке Ada. В языке Pascal обычные имена подпрограмм ввода-вывода, в том числе и названия подпрограмм readln и writeln, предопределены.Определения предопределенных имен в языках Pascal и Ada должны быть видимы компиляторами этих языков, поскольку проверка типов здесь производится в период компиляции. В обоих языках перечисленные выше примеры предопределенных имен видимы компилятором неявно. В языке Ada предопределенные имена стандартных процедур ввода и вывода get и put видимы. Их видимость обеспечивается оператором with, который записывается программистом.
В языках С и С++ многие имена предопределены в стандартных библиотеках. Например, имена функций ввода и вывода языка С printf и scanf описаны в библиотеке stdio. Доступ компилятора к именам из библиотек обеспечивается соответствующими заголовочными файлами.
156 |
Глава 6. Средства представления синтаксиса языков программирования |