Skip to content

DSL Next

Ivan Kochurkin edited this page Aug 24, 2017 · 1 revision

DSL Next

Пробельные символы и переносы строк игнорируются.

Операторы для конструкций

В порядке уменьшения приоритета:

  • <~> - логическое отрицание
  • <&> - логическое и
  • <|> - логическое или

Литералы

Стандартные литералы

Паттерн-литералы

  • <[regex]> - регулярное выражение для любых идентификаторов (переменных и типов).
  • <[regex:type]> и <[regex:var]>- регулярное выражение для типов и переменных соответственно.
  • <"regex"> - регулярное выражение для строк.
  • <(begin..end)> - диапазон чисел. Возможно задание примитивных вычислимых формул.
  • </*regex*/> - регулярное выражение для комментариев.

Примеры литералов

  • null - null значение.
  • <[^null$]> - идентификатор null.
  • <[]> - любой идентификатор.
  • true <|> false - булевое значение.
  • "" - пустая строка.
  • <""> - любая строка.
  • <()> или <(..)> - весь диапазон чисел.
  • </**/> - любой комментарий.

Потоковые переменные

@ - маркер, обозначающий такую переменную.

Примеры:

  • @var_name - матчит переменную с любым идентификатором
  • @var_name : <[regex]> - матчит переменную с идентификатором по регулярному выражению.
  • <[regex]> @var_name - матчит переменную определенного типа.

Самое полная декларация переменной выглядит следующим образом: <[regex]> @var_name : <[regex]> = initialization

Языковые вставки

<?lang ?>

lang при этом может быть следующим:

  • csharp
  • java
  • php
  • tsql
  • plsql
  • javascript

Императивные конструкции

Поддерживается универсальный язык и C#. Универсальные обособляются так: {{ и }}.

Clone this wiki locally