Program:
Statement_List
Statement_List:
Statement "\n"
Statement_List "\n" Statement
Statement:
NAME=Expression
IFOperator
FOROperator
FUNCDescr
CONTINUE //пропускает выполнение операторов до конца текущего Statement_List
BREAK //начинает выполнение оператора следующего за текущим Statement_List
RETURN //выход из текущего управляющего блока – из тела функции или из всей программы
IFOperator:
"IF " Condition "\n"
Statement_List
"ELSE" "\n"
Statement_List
"END IF"
Condition
Condition "OR" Condition
Condition "AND" Condition
"("Condition") "
PrimaryCondition
PrimaryCondition
Expression "==" Expression
Expression "=" Expression //c той же семантикой, что и "=="
Expression ">=" Expression
Expression "<=" Expression
Expression >"Expression
Expression "<"Expression
Expression "!=" Expression
Expression "<>" Expression //c той же семантикой, что и "!="
FOROperator:
"FOR " NAME " IN " ArgList "\n"
Statement_List
"END FOR"
"FOR " NAME " FROM " Expression " TO " Expression "\n"
Statement_List
"END FOR"
ArgList
NAME // в этом случае переменная с именем NAME должна содержать значение вида ArgList1
ArgList1
ArgList1:
Expression
ArgList "," Expression
FUNCDescr
"FUNC " NAME "(" FargList ")" "\n"
Statement_List
"END FUNC"
FArgList
NAME
FArgList "," NAME
Expression:
Expression "+" Term
Expression "–" Term
Expression "&" Term //конкатенация строк
Term
Term:
Term "/" Primary
Term "*"Primary
Primary
Primary:
NUMBER
STRINGNAME //значение переменной с именем NAME
"-" Primary
"(" Expression ")"
FunctionCall
FunctionCall
FNAME "(" ArgList1")"
NUMBER:
Digits
Digits "."DigitsSTRING: //определяется стандартно
NAME: //определяется стандартно
Ключевые слова = {IF, ELSE, FOR, IN, TO, FROM, AND, OR, RESULT, FUNC, END FUNC, END FOR, END IF, CONTINUE, BREAK, RETURN}