|
Для скриптового языка Tcl имеет достаточно простой синтаксис.
puts "The time is [clock formats [clock seconds]]"
Разбор Tcl синтаксиса происходит в три этапа: группировка аргументов (argument grouping), подстановка результата (result substitution) и отправка команды (command dispatch).
1. Группировка аргументов (argument grouping).
Интерпретатору необходимо определить, как организованны аргументы. В простейшем случае, аргументы разделяются пробелами. Как сказано ранее, кавычки и фигурные скобки используются для объединения нескольких слов в один аргумент. В предыдущем примере двойные кавычки использованы для формирования единого аргумента для команды puts.
3. Выполнение команды (command dispatch)
После подстановки Tcl осуществляет поиск по имени команды в dispatch table. Он вызывает C-функцию, соответствующую команде. Функции также могут быть написаны и на Tcl.
И вот еще один пример:
Здесь фигурные скобки использованы для объединения аргументов без подстановки. Для интерпретатора команда while ничем не отличается от остальных команд. Он и выполняет ее как любую другую команду. И только соответствующая while процедура знает, что первый аргумент - выражение, а второй - Tcl команды. Скобки формируют два аргумента: булево выражение, которое контролирует цикл, и команды, составляющие тело цикла. Мы также видим два математических выражения: операцию сравнения, и опреацию умножения. Комада while автоматически выполняет свой первый аргумент, как выражение. В других случаях следует обязательно использовать команду expr для выполнения математических операций.
Выполнение команд.
Итак, Tcl использует внешние вызовы для выполнения всей тяжелой работы. Мы видели, что Tcl использует expr для математики, puts для вывода и set для инициализации переменных. Эти вызовы обслуживаются C - функциями, которые обозначили себя в dispatch table. C - команды принимают строковые аргументы от Tcl команд и возвращают новые строки в качестве результата. Очень легко можно добавить собственные C - обработчики для собственных Tcl - команд. Благодаря этому Tcl можно использовать для любых задач, вплоть до работы с базами данных и создания GUI. Tcl, как интерпретатор, в действительности даже не будет знать, что команды собственно делают. В его задачи входит только группировка аргументов, подстановка значений и вызов команд.
И самый последний пример. Процедура вычисления факториала.