s4g  0.9.2
высокоуровневый, императивный, процедурный, встраиваемый, скриптовый язык программирования общего назначения, написанный на C++.
Описание синтаксиса в РБНФ

Буква = Aa - Zz
Цифра = 0-9
Идентификатор = ['$'](Буква | '_') {Буква | Цифра | '_'}
Натуральное число = Цифра {Цифра}
Знаковое целое число (или int) = Натуральное число
Беззнаковое целое число (или uint) = Натуральное число[.u]
Число с плавающей запятой (или float) = int.

[ ({[0-9]} | f)]
Символы_строковых_литералов = "Все возможные символы в том числе и экранированные"
Строковые_литералы = ("'" Символы_строковых_литералов "'") | ('"' Символы_строковых_литералов '"')

Оператор_присваивания = Бинарный_оператор_присваивания | Бинарные_арифметические_операторы_с_присваиванием

Операция_присваивания_полная = TLVal Оператор_присваивания TRVal
Операция_присваивания_ограниченная = TLVal Оператор_присваивания TRSVal

Левое_значение = (['var'] Идентификатор) | Обращение_к_полю_класса | Обращение_к_элементу_таблицы | Обращение_к_элементу_массива
Правое_значение = ('(' Выражение ')' | Скаляр | Создание_таблицы | Создание_массива | Определение_анонимной_функции | Создание_объекта_класса | Вызов_функции | Левое_значение)
[Neg | Not] ((Lparen Expr Rparen) | Int | (Function | Lvalue))
Expr: (Lvalue Assign Expr) | (Rvalue [Op Rvalue]*)

var b = (new a()).call();

RVal = [Унарная_инверсия_знака | Унарный_оператор_отрицания] (('(' LValOp ')') | (LVal Call) | Идентификатор)
LVal = (RVal (('.' Идентификатор) | ('[' Выражение ']')))
LValOp = (Унарные_арифметические_операторы_с_присваиванием LVal) | (LVal [Унарные_арифметические_операторы_с_присваиванием])

TRVal = TSRVal | Обьявление_функции | Обьявление_таблицы | Обьявление_массива | Создание_объекта_класса
TLVal = (['var'] Идентификатор) | LVal

TSRVal = Константа | RVal
CLSid = Идентификатор | RVal

Выражение = TRVal {Оператор TRVal}

get_class().foo = bar();
some.foo().bar[5].j = 123;

Call = '(' [Список_выражений] ')'
Константа = int | uint | float | string
Оператор = Бинарные_арифметические_операторы | Бинарные_операторы_сравнения | Бинарные_логические_операторы

Инструкция_блока = Инструкция | Управляющие_конструкции | Оператор_прерывания_цикла | Оператор_игнорирования | Оператор_возврата
Тело_функции = '{' {Инструкция_блока} '}'
Блок = (Тело_функции) | Инструкция_блока

Список_выражений = Выражение {',' Выражение}

Бинарные_арифметические_операторы = '+' | '-' | '*' | '/' | ''
Бинарные_операторы_сравнения = '==' | '<' | '<=' | '>' | '>=' | '!=' | '===' | '!=='
Бинарные_логические_операторы = '&&' | '||'
Бинарный_оператор_присваивания = '='
Унарные_арифметические_операторы_с_присваиванием = '++' | '–'
Бинарные_арифметические_операторы_с_присваиванием = '+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '~=' | '^=' | '|=' | '<<=' | '>>='
Унарная_инверсия_знака = '-'
Унарный_оператор_отрицания = '!'

Обьявление_таблицы = '{' (((Операция_присваивания_полная | Обьявление_функции) ';') | Обьявление_класса)'}'
Обьявление_массива = '[' [Список_выражений] ']'
(PARSER_NODE_CLASS_VAR)Переменная_класса = 'var' Идентификатор ';'
(PARSER_NODE_CLASS)Обьявление_класса = 'class' Идентификатор '{' {Переменная_класса | Обьявление_функции | Обьявление_класса} '}' ';'
(PARSER_NODE_FUNCTION)Обьявление_функции = "function" [Идентификатор] "(" [Список_идентификаторов] ")" ["extern" (Идентификатор | Список_идентификаторов)] Тело_функции

Управляющие_конструкции = if | for | while
Идентификатор = (Буква | '_') {Буква | Цифра | '_'}
Создание_объекта_класса = 'new' CLSid [Call]

if = 'if' '(' Инструкция_для_конструкций ')' Блок ['else' Блок]
for = 'for' '(' {Инструкция_для_конструкций ,} ';' Инструкция_для_конструкций ';' Инструкция_для_конструкций ')' Блок
while = 'while' '(' {Инструкция_для_конструкций } ')' Блок

Оператор_прерывания_цикла = "break" [uint] ";"
Оператор_игнорирования = "continue" ";"

Оператор_возврата = "return" Выражение ';'