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”)