В блоке вычислений разрешено определение переменных, использование арифметических операций, а также условных операторов. Условные операторы имеют следующий формат:
? LE O [or O]
Допускается использование фигурных скобок для объединения нескольких операций в теле условного оператора, неполные операторы, а также любая глубина вложенности. Логическим выражением в условии может быть любое выражение, включающее в себя арифметические и логические операции. Разрешено также объединение несколько логических выражений с помощью операторов && (И) и || (ИЛИ).
Блок связей предназначен для определения соответствия переменных выхода и входа блоков программы. Связь определяется по следующему формату:
выход одного блока => вход другого блока, вход другого блока, вход другого блока …, где входы и выходы представляют собой:
<имя блока><-> / -^><имя входа/выхода>
Лексика
.
Имя автомата |
Имя группы слов |
Регулярное выражение |
Действие |
Примечание |
main |
blockBegin |
[{] |
stack.push(lexAcceptor); lexAcceptor=lexAcceptors[findAutomat(«block»)]; |
Скобка, открывающая блок. Переход к автомату «block». |
Main |
blockEnd |
[}] |
Скобка, закрывающая блок. |
|
Main |
comments |
other+ |
ignoreLastWord=true; |
Комментарии. |
Block |
blockBegin |
[{] |
stack.push(lexAcceptor);lexAcceptor=lexAcceptors[findAutomat(«block»)]; |
Скобка, открывающая тело условного оператора. |
Block |
blockEnd |
[}] |
lexAcceptor=(fAutomat)stack.pop(); |
Скобка, закрывающая тело условного оператора. |
Block |
id |
[a-zA-Z][0-9a-zA-Z]* |
if(Htid.get(Lexem.textOfWord.toString()) == null && Htwords.get(Lexem.textOfWord.toString()) == null){Lexem.wordIndex = Htid.size(); Htid.put(Lexem.textOfWord.toString(),Lexem);} |
Идентификатор. |
Block |
int |
[0-9]+ |
if(ignore.val() == false && Htint.get(Lexem.textOfWord.toString()) == null) {Lexem.wordIndex = Htint.size(); Htint.put(Lexem.textOfWord.toString(),Lexem);} |
Целочисленные константы, а также имена блоков. |
Block |
float |
[0-9]+[.]([0-9])+ |
if(Htfloat.get(Lexem.textOfWord.toString()) == null) {Lexem.wordIndex = Htfloat.size(); Htfloat.put(Lexem.textOfWord.toString(),Lexem);} |
Константы с плавающей точкой. |
Block |
op1 |
[+-] |
VectPentadOp.add(Lexem.textOfWord); |
Операции суммы и разности. |
Block |
op2 |
[*/] |
VectPentadOp.add(Lexem.textOfWord); |
Операции умножения и деления. |
Block |
relation |
([=][=])|([!][=])|([<>])|([<][=])|([>][=]) |
VectPentadOp.add(Lexem.textOfWord); |
Логические операции сравнения. |
Block |
logic |
([&][&])|([|][|]) |
VectPentadOp.add(Lexem.textOfWord); |
Операторы объединения логических выражений. |
Block |
in |
[-][>] |
Вход в блок. |
|
Block |
out |
[-][^] |
Выход из блока. |
|
Block |
join |
[=][>] |
Определение связи. |
|
Block |
symbols |
[;L)] |
Служебные символы. |
|
Block |
ignore |
[ \r\t\n]+ |
ignoreLastWord=true; |
Служебные символы. |
Block |
space |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.