161
Gener -- генераторы Алгола 68 (модель).
LEXICS: GenerLex
SYNTAX
Nonterminals :
GENERATOR ( ГЕНЕРАТОР ),
DECLARER ( ОПИСАТЕЛЬ ).
Auxiliary notions :
DECLARATOR (ОПРЕДЕЛИТЕЛЬ),
REFERENCE TO MODE DECLARATOR (ОПРЕДЕЛИТЕЛЬ_ИМЕНИ),
STRUCTURED WITH FIELDS DECLARATOR (ОПРЕДЕЛИТЕЛЬ_СТРУКТУРЫ),
ROWS OF MODE ECLARATOR (ОПРЕДЕЛИТЕЛЬ_МАССИВА),
PROCEDURE DECLARATOR (ОПРЕДЕЛИТЕЛЬ_ПРОЦЕДУРЫ),
UNION OF MODE DECLARATOR (ОПРЕДЕЛИТЕЛЬ_ОБЪЕДИНЕНИЯ),
PORTRAYER (СПЕЦИФИКАТОР_ПОЛЕЙ),
ROWER (ИНДЕКСАТОР),
UNIT (ОСНОВА),
ACTUAL DECLARER (ФАКТИЧЕСКИЙ_ОПИСАТЕЛЬ),
FORMAL DECLARER (ФОРМАЛЬНЫЙ_ОПИСАТЕЛЬ),
VIRTUAL DECLARER (ВИРТУАЛЬНЫЙ_ОПИСАТЕЛЬ).
Forward pass semantics : Init, Set Actual, Set Formal, Set Virtual, Reset,
Complete.
Forward pass resolvers : Is VIRACT , Is Actual , Is Not Actual .
GENERATOR : Init , Set Actual , ( '.loc' ; '.heap') , DECLARER , Complete.
DECLARER : 'ModeIndication' ; DECLARATOR .
ACTUAL DECLARER : DECLARER .
FORMAL DECLARER : DECLARER .
VIRTUAL DECLARER : DECLARER .
DECLARATOR : REFRENCE TO MODE DECLARATOR ;
STRUCTURED WITH FIELDS DECLARATOR ;
ROWS OF MODE DECLARATOR ;
PROCEDURE DECLARATOR ;
UNION OF MODE DECLARATOR .
REFERENCE TO MODE DECLARATOR : Set Virtual , '.ref' ,
VIRTUAL DECLARER , Reset .
STRUCTURED WITH FIELDS DECLARATOR : '.struct', '(',PORTRAYER , ')' .
PORTRAYER : ( DECLARER , 'tag' # ',' ) # ',' .
ROWS OF MODE DECLARATOR : [ Is VirAct , '.flex' ] , ROWER , DECLARER.
ROWER : '[', ( Is Actual , [ UNIT , ':' ] , UNIT ; Is Not Actual , [ ': '] ) # ',' , ']' .
UNIT : 'integer' .
PROCEDURE DECLARATOR : Set Formal , '.proc',
['(', FORMAL DECLARER # ',' , ')'] ,
FORMAL DECLARER , Reset .
UNION OF MODE DECLARATOR : Set Formal, '.union',
'(', FORMAL DECLARER # ',' , ')' , Reset .
ENVIRONMENT
const n = 10;
type TSort = ( Actual , Formal , Virtual );
TLevel = 0 .. n ; TIndex = 1 .. n ;
TStack = array [ 1 .. n ] of TSORT;
var Stack : TStack; t : TLevel;