Главная страница о компиляторе
Краткое описание языка CLIP
Данное описание не претендует на полноту и не является учебником по языку.
Целью данного описания является "введение в Clipper" для тех кто не знает
что это такое и хочет быстро понять основные возможности.
Clipper является одним из диалектов xBase, а clip одной из
реализаций компилятора Clipper. Clip старается быть полностью совместимым с
Clipper, но увы Clipper - не без недостатков, поэтому при попытке избавится
от недостатков, возникают некоторые несовместимости.
Начнем с того что xBase и Clipper ориентированы на обработку данных
из табличных источников, к которым в частности относятся файлы формата DBF.
xBase позволяет также производить различные манипуляции со стороками,
датами, числами, файлами, экраном и т.п.
Кол-во функций зависит от реализации диалекта, наличием дополнительных
библиотек, наличием API для поключения новых функций и может исчислятся
несколькими тысячами.
А также в последних реализациях Clipper были добавлены объектно-ориентированные
возможности и несколько типовых объектов.
Clip - это уже полностью объектно ориентированный язык, т.е. используя clip
можно писать программы не применяя других подходов, кроме ОО.
Но при этом clip не запрещает использовать другие подходы к программированию
и проектированию программ.
Самая простая программа в стиле xBase выглядит вот так:
? "Hello world"
Что означает вывести на экран (поток, файл, принтер) строку "hello World".
Это самое можно получить и другими способами:
выведи на экран "Hello world"
qout("Hello world")
("Hello world"):qout()
Как видите - можно использовать разные стили программирования, в том
числе можно разработать свою собственную систему команд.
Такие возможности обеспечивает наличие гибкого препроцессора, которому можно
объяснить как надо транслировать команды в "основной" стиль программирования,
который понимает компилятор.
Итак - существует как бы две программы:
компилятор - переводчик с языка xBase/Clipper/Clip в более понятный для машины.
препроцессор - предварительный обработчик текстров программ, обеспечивающий
гибкость стилей программирования.
На самом деле обе эти программы находятся в одном файле, который обычно
и называют "компилятор", подразумевая что в нем одновременно присутсвует и
препроцессор.
Немного о препроцессоре
По своей сути препроцессор это "умная" команда редактора "найти и заменить",
надо только ему объяснить что именно надо "найти" и на что "заменить".
Самый простой спoсоб:
#define MY_WORD "Hello world"
В данном случае в любом месте текста где попадется MY_WORD будет произведена
замена на "Hello world". И вот такая программа
? MY_WORD
Превратится в
? "Hello world"
На самом деле команда "?" тоже является назначенной командой, и вот как
выглядит это назначение:
#command ? [ list,... ] => QOut( list )
И соотвественно очень легко назначить свою команду:
#command вывести на экран [ list,... ] => QOut( list )
В итоге текст программы может уже выглядеть как:
#define MY_WORD "Hello world"
#define MY_WORD2 date()
#define MY_WORD time()
вывести на экран MY_WORD, MY_WORD2, MY_WORD3
которая препроцессором будет превращена в:
qout("Hello World",date(),time())
а после ее компиляции и исполнения на экране будет сообщение
Hello world 08/03/2001 14:31:45
Возможности по назначению своих команд очень широки, некоторые ушлые
программеры умудряются транслировать например программы на паскале в
программы на клиппере.
Подробности опускаем, так как лучше читать полноценную документацию.
Немного о компиляторе и основном синтаксисе языка
Основной синтаксис языка XBase/Clipper относится к
процедурному/функциональному стилю программирования, т.е. это
в основном вызовы функций, обработка возвращаемых значений и различные
способы ветвления:
for i=1 to 10 step 1
if i=1
qout(i)
endif
do case
case i=2
@ i, 1 say str(i)+":"+chr(65+i)
otherwise
? log10(i)
endcase
next
а при помощи препроцессора можно например получить вот такое:
для всех i от 1 до 10 с шагом 1
если i=1
.........
следуюший
Ну а для Clipper с версией больше 5.x и для clip можно использовать
ОО-синтаксис:
result:=var:call_function(param1,param2,param3,....,paramN)
и если в clipper такие возможности очень ограничено, то в clip можно
писать программы только в ОО-стиле, и соответсвенно создавать
свои классы, наследовать и модифицировать структуры классов "на лету".
Главная страница о компиляторе
© Ю.Хныкин, uri@itk.ru, 2000