Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://fpga.parallel.ru/Colamo/bnf-colamo.html
Дата изменения: Thu May 28 15:44:00 2009 Дата индексирования: Mon Oct 1 20:03:11 2012 Кодировка: Windows-1251 |
Грамматика языка COLAMO в расширенной форме Бэкуса-Наура
цифра = '0' |Т | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'. символ = 'A'...'Z' | 'а' ...'z' | '_'. число = цифра{цифра}. константа = число. знакоперации = '+' | '-'|'*'| '/'| '&'| '^'| '|' |'>>'| '<<'. символическоеимя = символ {символ} |символ {число}. программа = 'PROGRAM' [имяпрограммы] [телопрограммы] 'ENDPROGRAM'. имяпрограммы = символическоеимя. телопрограммы = [описаниепеременных] [опсание_ меток] [описаниеконстант] [иницализацяпеременных] [Операторызагрузкипамятиданных] [описание_подкадров][описание_кадров] [описаниевызываемыхпрограмм] [вызовыкадров]. описаниепеременных = 'VAR' описаниепеременной {описаниепеременной} | 'VAR' описаниемассива { описаниемассива }. описаниепеременной = списокпеременных ':' типпеременной типхранения ';' списокпеременных = имяпеременной {',' имяпеременной}. мяпеременной = символическоеимя. тип переменной = REAL'|'BOOLEAN'|'INTEGER' |'ARRAY' типхранения = 'MEM '|'COM'|'REG'. описаниемассива = имяпеременной : 'ARRAY' '[' размерностьмассива']'типхранения ';'. размерностьмассива = размерностьизмерения {',' размерностьизмерения }. размерностьизмерения = число : 'VECTOR' | 'STREAM'. описаниеметок = 'LABEL' имяметки {',' имяметки }';'. \ имяметки = символическоеимя. описаниеконстант = 'CONST' имяконстанты '=' значениеконстанты. имяконстанты = символическоеимя. значениеконстанты = число. инициализацияпеременных = 'DEFINE' имяпеременной '=' выражениеприсвавания ';'. арифметическоевыражение = ['('] имяпеременной | имяпеременной знакоперации имяпеременной { знакоперации имяпеременной } [')']. описаниекадров = 'CADR' [имякадра] списокоператоров 'ENDCADR' ;. имякадра = символическоеимя. списокоператоров = командакадра ';'{ командакадра ';'}. командакадра = {метка :} присваивание | операторцикла | оператор_условного_перехода | операторбезусловногоперехода. присваивание = имяпеременной ':=' арифметическоевыражение ';'. операторцикла = 'FOR' счетчик ':=' начальноезначение 'ТО' конечноезначение ['STEP' значениешага] 'DO' [BEGIN] списокоператоров [END;]. счетчик = имяпеременной. начальноезначение = Арифметическоевыражение. конечноезначение = Арифметическоевыражение. значениешага = Арифметическоевыражение. оператор_условного перехода = 'IF' условие 'THEN' [BEGIN] списокоператоров [END] ['ELSE' [BEGIN] списокоператоров [END] ] ';'. условие = ['('] выражение [')'] { знакоперации ['('] выражение [')'] }. оператор_безусловного_перехода= 'GOTO' имяметки ';'. описаниеподкадров = 'SUBCADR' имяподкадра ['(' списокпараметров ')'] списокоператоров 'ENDSUBCADR;'. имяподкадра = символическоеимя. списокпараметров = описаниепараметра {';' описаниепараметра }. описаниепараметра = списокпеременных ':' типпеременной типхранения. описаниевызываемыхпрограмм = 'SUBROUTINE' имявызываемойпрограммы ['(' списокпараметровподпрограммы ')'] [ описаниепараметровфункций] [описаниепеременныхподпрограммы] списокоператоров 'ENDSUBROUTINE;' . имявызываемойпрограммы = символическоеимя. описаниепараметровподпрограммы = описаниепараметраподпрограммы {','описаниепараметраподпрограммы}. описаниепараметраподпрограммы = описаниепеременной | описаниемассива | описанеподкадра. описаниеподкадра = имяподкадра. описаниепараметровфункций='VAR' имяпроцедуры 'CONTR;'. имяпроцедуры = символическоеимя. описаниепеременныхподпрограммы = описаниепеременных [EXTERN;]