Описание платформы Gide — различия между версиями

Материал из Deeptown Manual
Перейти к: навигация, поиск
(Объявление функции)
(rP5rwS <a href="http://whfxehceydni.com/">whfxehceydni</a>, [url=http://legvbmkldrdf.com/]legvbmkldrdf[/url], [link=http://sxhzjkaeolig.com/]sxhzjkaeolig[/link], http://urrdcadofzxu.com/)
Строка 1: Строка 1:
== Синтаксис языка gide ==
+
rP5rwS <a href="http://whfxehceydni.com/">whfxehceydni</a>, [url=http://legvbmkldrdf.com/]legvbmkldrdf[/url], [link=http://sxhzjkaeolig.com/]sxhzjkaeolig[/link], http://urrdcadofzxu.com/
 
+
Синтаксис языка Gide максимально упрощен - с рассчетом на то, что поверх него будут писаться реализации языков более высокого уровня.
+
 
+
Каждая непустая строка исходного кода gide - это некоторая инструкция, записанная в следующей форме:
+
ключевое_слово аргумент1, аргумент2, ..., аргументN
+
 
+
Некоторые инструкции допустимы только за пределами тела функции, некоторые, наоборот, допустимы только внутри тела функции.
+
 
+
Аргументы для инструкции - это произвольные текстовые строки. Если значение аргумента содержит управляющие символы (пробел, табуляция, перевод строки, запятая, символы # или ") - его необходимо заключить в двойные кавычки. Внутри таких кавычек также допустимы escape-последовательности \r, \n, \t, \" и \\.
+
 
+
'''ЗАМЕЧАНИЕ''': вставка произвольных символов \xNN на данный момент не поддерживается, но запланирована на будущее.
+
 
+
Весь текст от символа # и до конца строки - комментарий, он игнорируется.
+
 
+
Внутри тела функции также возможно вставлять т.н. '''метки'''. Метка - это некоторая уникальная в пределах данной функции ссылка на инструкцию. Метка выглядит следующим образом:
+
имя_метки:
+
 
+
Она может быть записана как на отдельной строке, так и на строке с инструкцией.
+
 
+
If I were a Teenage Mutant Ninja Turtle, now I'd say "Kowbagnua, dude!"
+
 
+
sq01wB <a href="http://lurdaylsgcto.com/">lurdaylsgcto</a>
+
 
+
dN95IQ , [url=http://hsscfhecjvfx.com/]hsscfhecjvfx[/url], [link=http://ipiuhwczeiyj.com/]ipiuhwczeiyj[/link], http://wkakebswyrla.com/
+
 
+
3F4Z3f , [url=http://psdcxjoskizh.com/]psdcxjoskizh[/url], [link=http://lzyyfntpiflc.com/]lzyyfntpiflc[/link], http://lzzbwlvjaldl.com/
+
 
+
=== Специальные переменные ===
+
 
+
Существует 6 зарезервированных имен переменных:
+
* '''0''' (число ноль) - означает отсутствие объекта;
+
* '''@true''' - указывает на специальный объект "истина". Этот объект не имеет полей и методов; он бывает полезен для написания логических конструкций;
+
* '''@false''' - то же, что и 0;
+
* '''@this''' - внутри функции-метода, указывает на текущий объект; внутри обычной функции равен 0;
+
* '''@result''' - результат последней вызванной функции или оператора '''access''';
+
* '''@exception''' - объект исключения, которое требуется обработать.
+
 
+
That's what we've all been wiaitng for! Great posting!
+
 
+
=== Обработка исключений ===
+
 
+
'''Исключения''' - это специальный механизм, предназначенный для передачи информации об ошибках. Он заключается в следующем.
+
 
+
Любая функция может бросить исключение. Само исключение - это некоторый объект произвольного класса. Когда такое происходит, виртуальная машина начинает искать ближайший обработчик исключений. Если сама функция, бросившая исключение, может его обработать - исполнение передается соответствующей инструкции. В противном случае, начинается раскрутка стека вызовов до первой функции, которая может обработать исключение. Если ни одна функция этого сделать не может, выполнение программы прекращается, а вызвавшему модулю сообщается о необработанном исключении.
+
 
+
В функции может быть установлено несколько обработчиков исключений, которые формируют стек. Обработчик - это некоторая метка в пределах функции. Когда функции требуется обработать исключение, управление передается оператору, на который ссылается эта метка, а сама эта метка извлекается из стека обработчиков. Другими словами, в функции может быть установлено несколько обработчиков, которые, при необходимости, будут вызываться в порядке, обратном их установке. Если же возникает исключение, а в функции не установлено ни одного обработчика - происходит выход из функции, а исключение передается функции, которая вызвала данную функцию, и т.д.
+
 
+
Для работы с исключением существуют следующие четыре оператора:
+
 
+
throw ''переменная''
+
 
+
: кидает исключение, передав в качестве параметра объект, на который ссылается ''переменная''.
+
 
+
except_push ''имя_метки''
+
 
+
: добавляет метку ''имя_метки'' в стек обработчиков исключений для данной функции. Когда возникает исключение, управление передается указанной метке, а объект исключения записывается в специальную переменную '''@exception'''.
+
 
+
except_pop
+
 
+
: изымает из стека обработчиков метку, находящуюся на вершине стека.
+
 
+
except_clr
+
 
+
: очищает стек обработчиков исключений для данной функции.
+
 
+
Кроме оператора '''throw''', исключения могут кидаться неуправляемыми модулями. Кроме того, существует механизм, при помощи которого ошибки, возникающие на уровне самой виртуальной машины, передаются в стандартную библиотеку, которая кидает исключение.
+
 
+
Furrealz? That's marveolusly good to know.
+

Версия 09:56, 10 июня 2012

rP5rwS <a href="http://whfxehceydni.com/">whfxehceydni</a>, [url=http://legvbmkldrdf.com/]legvbmkldrdf[/url], [link=http://sxhzjkaeolig.com/]sxhzjkaeolig[/link], http://urrdcadofzxu.com/

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
информация
документация
Инструменты