Keyword syntax (DSL)
Особенности ассоциативной памяти
Синтаксис языка NewLang основан на строгих правилах без использования ключевых слов, и как бы он не выглядел логичным, ассоциация по ключевым словам вспоминается гораздо легче, например if, чем комбинация минус минус правая угловая скобка –>. Из-за этого имеет смысл использовать не “чистый” базовый синтаксис, а более привычный диалект с использованием ключевых слов.
NewLang уже содержит набор макросов, которые расширяют базовый синтаксис NewLang, основанный на правилах, набором предопределенных ключевых слов как в классических языках программирования, которые можно адаптировать или дополнить под собственную предметную область.
Константы
-
@true - 1
-
@yes - 1
-
@false - 0
-
@no - 0
-
@this или @self - Текущий объект
-
@super - Родительский объект
-
@latter или @last- Результат выполенения последнего оператора Result of the last operation
Логические операторы
- @and - Логическое И
- @or - Логическое ИЛИ
- @xor - Логическое Исключающее ИЛИ
- @not(value) - Логическое отрицание
Операторы
-
@if(…) - Первый условный оператор
-
@elif(…) - Второй и все последующие условные операторы
-
@else - Оператор иначе
-
@while(…) - Оператор цикла с предусловием
-
@dowhile(…) - Оператор цикла с постусловием
-
@loop - Оператор безконечного цикла
-
@break $label - Оператор выхода из именованного именованного блока кода
-
@continue $label - Оператор прехода на начало именованного блока кода
-
@return( result ) - Оператор возврата значения и выхода из функции
-
@throw( error ) - Оператор создания исключения и возврата ошибки
-
@match( … ) - Оператор оценки выражения
-
@case( … ) - Оператор сравнения с образцом
-
@default - Оператор выбора по улочанию
-
@iter(obj, … ) - Создание итератора
-
@next(obj, … ) - Получить следующий элемент итератора
-
@curr(obj, … ) - Получить текущий элемент итератора
-
@first(obj) - Перейти на первый элемент итератора
-
@all(obj) - Получить сразу все элементы итератора
Предопределенные макросы
При работе парсера NewLang автоматически формируются несколько зарезервированных макросов, часть из которых соответствуют макросам препроцессора у С/С++. Данные предопределенные макросы можно использовать как обычные константы.
-
__FILE__ или __FILE_NAME__ - имя и полный путь текущего файла
-
__LINE__ или __FILE_LINE__ - содержит номер текущей строки в файле
-
__FILE_TIMESTAMP__ - дату и время последней модификации текущего файла в строковом представлении
-
__FILE_MD5__ - md5 хеш текущего файла в строковом виде
-
__COUNTER__ - целочисленный счетчик, который увеличивает свое значение при каждом обращении
-
__DATE__ - дата начала запуска компилятора (имеет одно и тоже значение для всех обрабатываемых файлов)
-
__TIME__ - время начала запуска компилятора (имеет одно и тоже значение для всех обрабатываемых файлов)
-
__TIMESTAMP__ - дату и время начала запуска компилятора (например: “Fri 19 Aug 13:32:58 2016”)
-
__TIMESTAMP_ISO__ - дату и время начала запуска компилятора в формате ISO (например: “2013-07-06T00:50:06Z”)
-
__NLC_VER__ - Страшая и младшая версия компилятора NewLang (8 битное число, по 4 бита на цифру)
-
__NLC_DATE_BUILD__ - текстовая строка с датой сборки компилятора NewLang (например, “23.06.04 20:51:39”)
-
__NLC_SOURCE_GIT__ - текстовая строка с идентификатором исходных файлов NewLang git репозитория, использованных при сборке компилятора (например, “v0.3.0-fef8c371”)
-
__NLC_SOURCE_BUILD__ - дата сборки и git идентификатор исходных файлов NewLang одной текстовой строкой (например, “v0.3.0-fef8c371 23.06.04 20:51:39”)