r1 - 10 Mar 2005 - 00:25:00 - OrloVYou are here: TWiki >  Refaldevel Web > RefalPlus > RefalPlusSyntax
НОТАЦИЯ ДЛЯ ЗАПИСИ СИНТАКСИСА

$    Синтаксис      = { СинтФормула }.
$    СинтФормула    = Идентификатор "=" СинтВыражение ".".
$    СинтВыражение  = СинтСлагаемое { "|" СинтСлагаемое }.
$    СинтСлагаемое  = СинтМножитель { СинтМножитель }.
$    СинтМножитель  = Идентификатор | Цепочка |
$         "(" СинтВыражение ")" | "[" СинтВыражение "]" |
$         "{" СинтВыражение "}".

ЛЕКСИЧЕСКАЯ СТРУКТУРА ПРОГРАММЫ

$    Программа = { Межа Лексема } Межа.
$    Межа = РазделительЛексем | Комментарий.
$    РазделительЛексем = Пробел | Табуляция | КонецСтроки.

КОММЕНТАРИИ

$    Комментарий = "*" ОкончаниеКомментария КонецСтроки
$         | "/*" ТелоКомментария "*/".
$    ОкончаниеКомментария =
$         любая цепочка литер, не содержащая КонецСтроки.
$    ТелоКомментария =
$         любая цепочка литер, не содержащая "*/".

ЛЕКСЕМЫ

$    Лексема =
$         Скобка | КлючевоеСлово |
$         ИзображениеЦепочкиЛитер |
$         ИзображениеСлова | ИзображениеЧисла |
$         Переменная.
$    Скобка = "(" | ")" | "{" | "\{" | "}" | "<" | ">".

КЛЮЧЕВЫЕ СЛОВА

$    КлючевоеСлово =
$         "$box" | "$channel | "$const" | "$error" | "$fail" |
$         "$func" | "$func?" | "$iter" | "$l" | "$r" |
$         "$string" | "$table" | "$trace | | "$traceall" |
$          "$trap" | "$use" | "$vector" | "$with" |
$         "#" | "&" | "," | ":" | "::" | ";" | "=" |
$         "\?" | "\!".

СИМВОЛЫ-ЛИТЕРЫ

$    ИзображениеЦепочкиЛитер =
$         "'" { ИзображениеЛитеры | ПереходНаНовуюСтроку } "'".
$    ИзображениеЛитеры =
$         ИзображениеОбычнойЛитеры | ИзображениеОсобойЛитеры.
$    ИзображениеОбычнойЛитеры =
$         любая литера ASCII кроме апострофа ('), кавычки ("),
$         обратной косой (\) и конца строки.
$    ИзображениеОсобойЛитеры =
$         "\n" | "\t" | "\v" | "\b" | "\r" | "\f" |
$         "\\" | "\'" | '\"' .
$    ПереходНаНовуюСтроку =
$         "\" КонецСтроки .

СИМВОЛЫ-СЛОВА

$    ИзображениеСлова =
$         Идентификатор |
$         '"' { ИзображениеЛитеры | ПереходНаНовуюСтроку } '"'.
$    Идентификатор = НачалоИдентификатора ХвостИдентификатора.
$    НачалоИдентификатора = ПрописнаяБуква | "!" | "?".
$    ХвостИдентификатора = { Буква | Цифра | "!" | "?" | "-" }.
$    Буква = ПрописнаяБуква | СтрочнаяБуква.
$    ПрописнаяБуква = 
$         "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" |
$         "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" |
$         "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z".
$    СтрочнаяБуква = 
$         "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" |
$         "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" |
$         "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z".
$    Цифра = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7"
$         | "8" | "9".

СИМВОЛЫ-ЧИСЛА

$    ИзображениеЧисла = [ "+" | "-" ] Цифра { Цифра }.

ПЕРЕМЕННЫЕ

$    Переменная =
$         s-переменная | t-переменная | e-переменная |
$         v-переменная.
$    s-переменная = "s" [ "." ] ИндексПеременной.
$    t-переменная = "t" [ "." ] ИндексПеременной.
$    v-переменная = "v" [ "." ] ИндексПеременной.
$    e-переменная = "e" [ "." ] ИндексПеременной.
$    УказательТипаПеременной = "s" | "t" | "v" | "e".
$    ИндексПеременной = ХвостИдентификатора.

СИНТАКСИС ОБЪЕКТНЫХ ВЫРАЖЕНИЙ

$    ОбъектноеВыражение = { ОбъектныйТерм }.
$    ОбъектныйТерм = Символ | "(" ОбъектноеВыражение ")".

СТАТИЧЕСКИЕ И ДИНАМИЧЕСКИЕ СИМВОЛЫ

$    Символ = СтатическийСимвол | ДинамическийСимвол.
$    СтатическийСимвол = Литера | Слово | Число.
$    ДинамическийСимвол = СсылкаНаФункцию | СсылкаНаТаблицу |
$         СсылкаНаЯщик | СсылкаНаВектор |
$         СсылкаНаСтроку | СсылкаНаКанал.

СИМВОЛИЧЕСКИЕ ИМЕНА ВЫРАЖЕНИЙ

$    ИмяВыражения = "&" Слово.

РЕЗУЛЬТАТНЫЕ ВЫРАЖЕНИЯ

$    РезультатноеВыражение =
$         { РезультатныйТерм | ИмяВыражения }.
$    РезультатныйТерм =
$         СтатическийСимвол | Переменная |
$         "(" РезультатноеВыражение ")" |
$         ВызовФункции.
$    ВызовФункции =
$         "<" ИмяФункции АргументВызова ">".
$    АргументВызова =
$         РезультатноеВыражение.

ОБРАЗЦЫ

$    Образец = УказательНаправления ОбразцовоеВыражение.
$    УказательНаправления = [ "$l" | "$r" ].
$    ОбразцовоеВыражение =
$         { ОбразцовыйТерм | ИмяВыражения }.
$    ОбразцовыйТерм =
$         СтатическийСимвол | Переменная |
$         "(" ОбразцовоеВыражение ")".

ЖЕСТКИЕ ВЫРАЖЕНИЯ

$    ЖесткоеВыражение =
$         { ЖесткийКрай } |
$         { ЖесткийКрай } e-переменная { ЖесткийКрай } |
$         { ЖесткийКрай } v-переменная { ЖесткийКрай }.
$    ЖесткийКрай = { ЖесткийТерм | ИмяВыражения }.
$    ЖесткийТерм =
$         СтатическийСимвол | s-переменная | t-переменная |
$         "(" ЖесткоеВыражение ")".

ТРОПЫ

$    Тропа =
$         Условие | Присваивание | Поиск | Перестройка |
$         Хвост | Источник.
$    Условие =
$         Источник Хвост.
$    Присваивание =
$         Источник "::" ЖесткоеВыражение [ Хвост ].
$    Поиск =
$         Источник "$iter" Источник
$              [ "::" ЖесткоеВыражение ] [ Хвост ].
$    Перестройка =
$         Источник ":" Образец [ Хвост ].
$    Хвост =
$         ОгражденнаяТропа | ОтрицаниеУсловия |
$         Забор | Отсечение |
$         Тупик | ПраваяЧасть | Авария |
$         ПерехватАварий.
$    ОгражденнаяТропа =
$         "," Тропа.
$    ОтрицаниеУсловия =
$         "#" Источник [ Хвост ].
$    Забор =
$         "\?" Тропа.
$    Отсечение =
$         "\!" Тропа.
$    Тупик =
$         "$fail".
$    ПраваяЧасть =
$         "=" Тропа.
$    Авария =
$         "$error" Тропа.
$    ПерехватАварий =
$         "$trap" Тропа "$with" ОбразцовоеРаспутье.
$    Источник =
$         Распутье | Выбор | РезультатноеВыражение.
$    Распутье =
$         "\{" ПослТроп "}" |
$          "{" ПослТроп "}".
$    Выбор =
$         Источник ":" ОбразцовоеРаспутье.
$    ОбразцовоеРаспутье =
$         "\{" ПослПредложений "}" |
$         " {" ПослПредложений "}" |
$    ПослТроп = { Тропа ";" }.
$    ПослПредложений =
$         { Предложение ";" }.
$    Предложение = Образец [ Хвост ].

ОПРЕДЕЛЕНИЯ ФУНКЦИЙ

$    ОпределениеФункции =
$         ИмяФункции ТелоФункции ";".
$    ТелоФункции =
$         ОбразцовоеРаспутье | Предложение.

ОБЪЯВЛЕНИЯ КОНСТАНТ

$    ОбъявлениеКонстант =
$         "$const" [ ОбъКонст { "," ОбъКонст } ] ";".
$    ОбъКонст = ИмяВыражения "=" КонстантноеВыражение.
$    КонстантноеВыражение =
$         { КонстантныйТерм | ИмяВыражения }.
$    КонстантныйТерм =
$         СтатическийСимвол | "(" КонстантноеВыражение ")".

ОБЪЯВЛЕНИЯ ЯЩИКОВ, ВЕКТОРОВ, СТРОК, ТАБЛИЦ И КАНАЛОВ

$    ОбъявлениеЯщиков   = "$box"     { ИмяСсылки } ";".
$    ОбъявлениеВекторов = "$vector"  { ИмяСсылки } ";".
$    ОбъявлениеСтрок    = "$string"  { ИмяСсылки } ";".
$    ОбъявлениеТаблиц   = "$table"   { ИмяСсылки } ";".
$    ОбъявлениеКаналов  = "$channel" { ИмяСсылки } ";".
$    ИмяСсылки = Слово.

ОБЪЯВЛЕНИЯ ФУНКЦИЙ

$    ОбъявлениеФункции =
$         "$func"   ИмяФункции
$              ВходнойФормат "=" ВыходнойФормат ";" |
$         "$func?"  ИмяФункции
$              ВходнойФормат "=" ВыходнойФормат ";".
$    ИмяФункции = Слово.
$    ВходнойФормат = ФорматноеВыражение.
$    ВыходнойФормат = ФорматноеВыражение.
$    ФорматноеВыражение = ЖесткоеВыражение.

ДИРЕКТИВЫ ОТЛАДКИ

$    ДирективаОтладки =
$         "$trace" { ИмяФункции } ";" |
$         "$traceall" .

МОДУЛИ

$    ИнтерфейсМодуля =
$         { Объявление }.
$    Объявление =
$         ОбъявлениеКонстант | ОбъявлениеЯщиков |
$         ОбъявлениеВекторов | ОбъявлениеСтрок |
$         ОбъявлениеТаблиц | ОбъявлениеКаналов |
$         ОбъявлениеФункции.
$    РеализацияМодуля =
$         { Импорт } { ДирективаРеализации }.
$    ДирективаРеализации =
$         Объявление |
$         ДирективаОтладки |
$         ОпределениеФункции.
$    Импорт = "$use" { ИмяМодуля } ";".
$    ИмяМодуля = Слово.
Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r1 | More topic actions
 
R+

This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback