SiroccoCGImpl.mesa
Copyright Ó 1987 by Xerox Corporation. All rights reserved.
Generated by BJackson.pa at August 26, 1987 3:38:04 pm PDT
using ThreeCasabaFour [1.2] of June 1, 1987 6:00:00 pm PDT
DIRECTORY
SiroccoAG2Def,
SiroccoAG1Def,
Rope,
SiroccoCGDef,
ThreeC4Support,
SiroccoATDef;
SiroccoCGImpl: CEDAR PROGRAM IMPORTS SiroccoAG2Def, SiroccoAG1Def, Rope EXPORTS SiroccoCGDef=
BEGIN
OPEN SiroccoAG2Def, SiroccoAG1Def, Rope, SiroccoCGDef, ThreeC4Support, SiroccoATDef;
SiroccoCGLinkProc: PUBLIC PROC[prodLinkArray: SeeProdLinkArray, tknLinkArray: TokenLinkArray] =
BEGIN
tknLinkArray[tokenID] ← BuildidNode;
tknLinkArray[tokenDECIMAL] ← BuilddecimalNode;
tknLinkArray[tokenHEX] ← BuildhexNode;
tknLinkArray[tokenOCTAL] ← BuildoctalNode;
tknLinkArray[tokenROPE] ← BuildropeNode;
prodLinkArray[0] ← Seeexport;
prodLinkArray[1] ← Seeprogram;
prodLinkArray[2] ← Seedependencyempty;
prodLinkArray[3] ← Seedependencyimports;
prodLinkArray[4] ← Seeimportlistone;
prodLinkArray[5] ← Seeimportlistmore;
prodLinkArray[6] ← Seeimport;
prodLinkArray[7] ← Seedeclarationlista;
prodLinkArray[8] ← Seedeclarationlistb;
prodLinkArray[9] ← Seedeclarationtype;
prodLinkArray[10] ← Seedeclarationconstant;
prodLinkArray[11] ← Seedeclarationid;
prodLinkArray[12] ← Seetypesimple;
prodLinkArray[13] ← Seetypeconstruction;
prodLinkArray[14] ← Seesimpletypereference;
prodLinkArray[15] ← Seesimpletypeprimitive;
prodLinkArray[16] ← Seereferencealias;
prodLinkArray[17] ← Seereferenceimport;
prodLinkArray[18] ← Seeprimitivebool;
prodLinkArray[19] ← Seeprimitivecard16;
prodLinkArray[20] ← Seeprimitivecard32;
prodLinkArray[21] ← Seeprimitiveint16;
prodLinkArray[22] ← Seeprimitiveint32;
prodLinkArray[23] ← Seeprimitivesink;
prodLinkArray[24] ← Seeprimitivesource;
prodLinkArray[25] ← Seeprimitivestring;
prodLinkArray[26] ← Seeprimitiveunspec;
prodLinkArray[27] ← Seeconstructionarray;
prodLinkArray[28] ← Seeconstructionchoice;
prodLinkArray[29] ← Seeconstructionenum;
prodLinkArray[30] ← Seeconstructionerror;
prodLinkArray[31] ← Seeconstructionproc;
prodLinkArray[32] ← Seeconstructionrecord;
prodLinkArray[33] ← Seeconstructionnull;
prodLinkArray[34] ← Seeconstructionseq;
prodLinkArray[35] ← Seeconstantvalue;
prodLinkArray[36] ← Seeconstantcomplex;
prodLinkArray[37] ← Seeconstantchoiceconstant;
prodLinkArray[38] ← Seeconstantchoiceid;
prodLinkArray[39] ← Seeconstantimport;
prodLinkArray[40] ← Seevaluetrue;
prodLinkArray[41] ← Seevaluefalse;
prodLinkArray[42] ← Seevaluenumber;
prodLinkArray[43] ← Seevalueinverted;
prodLinkArray[44] ← Seevaluestring;
prodLinkArray[45] ← Seecomplexvaluegrouping;
prodLinkArray[46] ← Seecomplexvalueconstructor;
prodLinkArray[47] ← Seecomplexvaluenull;
prodLinkArray[48] ← Seeoptionalnonempty;
prodLinkArray[49] ← Seeoptionalalias;
prodLinkArray[50] ← Seeoptionalempty;
prodLinkArray[51] ← Seemandatoryvalue;
prodLinkArray[52] ← Seemandatoryalias;
prodLinkArray[53] ← Seeenumerationone;
prodLinkArray[54] ← Seeenumerationmore;
prodLinkArray[55] ← Seekeyindexpair;
prodLinkArray[56] ← Seeunionone;
prodLinkArray[57] ← Seeunionmore;
prodLinkArray[58] ← Seeselectorone;
prodLinkArray[59] ← Seeselectortwo;
prodLinkArray[60] ← Seefieldlistfield;
prodLinkArray[61] ← Seefieldlistmore;
prodLinkArray[62] ← Seefield;
prodLinkArray[63] ← Seegroupingconst;
prodLinkArray[64] ← Seegroupingid;
prodLinkArray[65] ← Seegroupingcmore;
prodLinkArray[66] ← Seegroupingimore;
prodLinkArray[67] ← Seeconstructorone;
prodLinkArray[68] ← Seeconstructormore;
prodLinkArray[69] ← Seebindingid;
prodLinkArray[70] ← Seebindingconst;
prodLinkArray[71] ← Seeargumentsempty;
prodLinkArray[72] ← Seeargumentslist;
prodLinkArray[73] ← Seeargumentsnull;
prodLinkArray[74] ← Seeresultsempty;
prodLinkArray[75] ← Seeresultslist;
prodLinkArray[76] ← Seeresultsnull;
prodLinkArray[77] ← Seeerrorsempty;
prodLinkArray[78] ← Seeerrorslist;
prodLinkArray[79] ← Seenamelistone;
prodLinkArray[80] ← Seenamelistmore;
prodLinkArray[81] ← Seenumberdecimal;
prodLinkArray[82] ← Seenumberoctal;
prodLinkArray[83] ← Seenumberhex;
END;
id
BuildidNode: PUBLIC PROC[text: Rope.ROPE, firstCharPosition: INT] RETURNS[idNode] =
{RETURN[NEW[idNodeBody←[text, firstCharPosition, Length[text]]]]};
decimal
BuilddecimalNode: PUBLIC PROC[text: Rope.ROPE, firstCharPosition: INT] RETURNS[decimalNode] =
{RETURN[NEW[decimalNodeBody←[text, firstCharPosition, Length[text]]]]};
hex
BuildhexNode: PUBLIC PROC[text: Rope.ROPE, firstCharPosition: INT] RETURNS[hexNode] =
{RETURN[NEW[hexNodeBody←[text, firstCharPosition, Length[text]]]]};
octal
BuildoctalNode: PUBLIC PROC[text: Rope.ROPE, firstCharPosition: INT] RETURNS[octalNode] =
{RETURN[NEW[octalNodeBody←[text, firstCharPosition, Length[text]]]]};
rope
BuildropeNode: PUBLIC PROC[text: Rope.ROPE, firstCharPosition: INT] RETURNS[ropeNode] =
{RETURN[NEW[ropeNodeBody←[text, firstCharPosition, Length[text]]]]};
Seeexport: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
program: ProgramNode;
program ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[program, stack];
RETURN [stack]
END;
Seeprogram: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
decimalpgm: decimalNode;
decimalversion: decimalNode;
dependency: ImportListNode;
declarationlist: DeclarationListNode;
declarationlist ← NARROW[stack.first];
stack ← stack.rest;
dependency ← NARROW[stack.first];
stack ← stack.rest;
decimalversion ← NARROW[stack.first];
stack ← stack.rest;
decimalpgm ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildProgramexportProdNode[position, length, id, decimalpgm, decimalversion, dependency, declarationlist], stack];
RETURN [stack]
END;
Seedependencyempty: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildImportListemptyProdNode[position, length], stack];
RETURN [stack]
END;
Seedependencyimports: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
importlist: ImportListNode;
importlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[importlist, stack];
RETURN [stack]
END;
Seeimportlistone: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
import: ImportNode;
import ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildImportListmoreProdNode[position, length, BuildImportListemptyProdNode[import.position, import.position - import.length], import], stack];
RETURN [stack]
END;
Seeimportlistmore: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
importlist: ImportListNode;
import: ImportNode;
import ← NARROW[stack.first];
stack ← stack.rest;
importlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildImportListmoreProdNode[position, length, importlist, import], stack];
RETURN [stack]
END;
Seeimport: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
decimalpgm: decimalNode;
decimalversion: decimalNode;
decimalversion ← NARROW[stack.first];
stack ← stack.rest;
decimalpgm ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildImportinterfaceProdNode[position, length, id, decimalpgm, decimalversion], stack];
RETURN [stack]
END;
Seedeclarationlista: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildDeclarationListemptyProdNode[position, length], stack];
RETURN [stack]
END;
Seedeclarationlistb: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
declarationlist: DeclarationListNode;
declaration: DeclarationNode;
declaration ← NARROW[stack.first];
stack ← stack.rest;
declarationlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildDeclarationListmoreProdNode[position, length, declarationlist, declaration], stack];
RETURN [stack]
END;
Seedeclarationtype: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
type: TypeNode;
type ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildDeclarationtypeProdNode[position, length, id, type], stack];
RETURN [stack]
END;
Seedeclarationconstant: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
type: TypeNode;
constant: ConstantNode;
constant ← NARROW[stack.first];
stack ← stack.rest;
type ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildDeclarationconstantProdNode[position, length, id, type, constant], stack];
RETURN [stack]
END;
Seedeclarationid: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
idname: idNode;
type: TypeNode;
idconstant: idNode;
idconstant ← NARROW[stack.first];
stack ← stack.rest;
type ← NARROW[stack.first];
stack ← stack.rest;
idname ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildDeclarationconstantProdNode[position, length, idname, type, BuildConstantderefProdNode[idconstant.position, idconstant.length, idconstant]], stack];
RETURN [stack]
END;
Seetypesimple: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
simpletype: TypeNode;
simpletype ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[simpletype, stack];
RETURN [stack]
END;
Seetypeconstruction: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
construction: TypeNode;
construction ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[construction, stack];
RETURN [stack]
END;
Seesimpletypereference: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
reference: TypeNode;
reference ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[reference, stack];
RETURN [stack]
END;
Seesimpletypeprimitive: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
primitive: TypeNode;
primitive ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[primitive, stack];
RETURN [stack]
END;
Seereferencealias: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypealiasProdNode[position, length, id], stack];
RETURN [stack]
END;
Seereferenceimport: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
idinterface: idNode;
iditem: idNode;
iditem ← NARROW[stack.first];
stack ← stack.rest;
idinterface ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeimportProdNode[position, length, idinterface, iditem], stack];
RETURN [stack]
END;
Seeprimitivebool: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTypeboolProdNode[position, length], stack];
RETURN [stack]
END;
Seeprimitivecard16: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTypecard16ProdNode[position, length], stack];
RETURN [stack]
END;
Seeprimitivecard32: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTypecard32ProdNode[position, length], stack];
RETURN [stack]
END;
Seeprimitiveint16: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTypeint16ProdNode[position, length], stack];
RETURN [stack]
END;
Seeprimitiveint32: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTypeint32ProdNode[position, length], stack];
RETURN [stack]
END;
Seeprimitivesink: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTypesinkProdNode[position, length], stack];
RETURN [stack]
END;
Seeprimitivesource: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTypesourceProdNode[position, length], stack];
RETURN [stack]
END;
Seeprimitivestring: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTypestringProdNode[position, length], stack];
RETURN [stack]
END;
Seeprimitiveunspec: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTypeunspecProdNode[position, length], stack];
RETURN [stack]
END;
Seeconstructionarray: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
mandatory: ConstantNode;
simpletype: TypeNode;
simpletype ← NARROW[stack.first];
stack ← stack.rest;
mandatory ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypearrayProdNode[position, length, mandatory, simpletype], stack];
RETURN [stack]
END;
Seeconstructionchoice: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
reference: TypeNode;
union: UnionNode;
union ← NARROW[stack.first];
stack ← stack.rest;
reference ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypechoiceProdNode[position, length, reference, union], stack];
RETURN [stack]
END;
Seeconstructionenum: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
enumeration: EnumerationNode;
enumeration ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeenumProdNode[position, length, enumeration], stack];
RETURN [stack]
END;
Seeconstructionerror: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
arguments: FieldListNode;
arguments ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeerrorProdNode[position, length, arguments], stack];
RETURN [stack]
END;
Seeconstructionproc: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
arguments: FieldListNode;
results: FieldListNode;
errors: NameListNode;
errors ← NARROW[stack.first];
stack ← stack.rest;
results ← NARROW[stack.first];
stack ← stack.rest;
arguments ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeprocProdNode[position, length, arguments, results, errors], stack];
RETURN [stack]
END;
Seeconstructionrecord: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
fieldlist: FieldListNode;
fieldlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTyperecordProdNode[position, length, fieldlist], stack];
RETURN [stack]
END;
Seeconstructionnull: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTypenullProdNode[position, length], stack];
RETURN [stack]
END;
Seeconstructionseq: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
optional: ConstantNode;
simpletype: TypeNode;
simpletype ← NARROW[stack.first];
stack ← stack.rest;
optional ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeseqProdNode[position, length, optional, simpletype], stack];
RETURN [stack]
END;
Seeconstantvalue: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
value: ConstantNode;
value ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[value, stack];
RETURN [stack]
END;
Seeconstantcomplex: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
complexvalue: ConstantNode;
complexvalue ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[complexvalue, stack];
RETURN [stack]
END;
Seeconstantchoiceconstant: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
constant: ConstantNode;
constant ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildConstantchoiceProdNode[position, length, id, constant], stack];
RETURN [stack]
END;
Seeconstantchoiceid: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
idchoice: idNode;
idvalue: idNode;
idvalue ← NARROW[stack.first];
stack ← stack.rest;
idchoice ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildConstantchoiceProdNode[position, length, idchoice, BuildConstantderefProdNode[idvalue.position, idvalue.length, idvalue]], stack];
RETURN [stack]
END;
Seeconstantimport: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
idinterface: idNode;
iditem: idNode;
iditem ← NARROW[stack.first];
stack ← stack.rest;
idinterface ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildConstantimportProdNode[position, length, idinterface, iditem], stack];
RETURN [stack]
END;
Seevaluetrue: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildConstanttrueProdNode[position, length], stack];
RETURN [stack]
END;
Seevaluefalse: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildConstantfalseProdNode[position, length], stack];
RETURN [stack]
END;
Seevaluenumber: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
number: NumberNode;
number ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildConstantnumberProdNode[position, length, number], stack];
RETURN [stack]
END;
Seevalueinverted: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
number: NumberNode;
number ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildConstantinvertedProdNode[position, length, number], stack];
RETURN [stack]
END;
Seevaluestring: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
rope: ropeNode;
rope ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildConstantstringProdNode[position, length, rope], stack];
RETURN [stack]
END;
Seecomplexvaluegrouping: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
grouping: GroupingNode;
grouping ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildConstantgroupingProdNode[position, length, grouping], stack];
RETURN [stack]
END;
Seecomplexvalueconstructor: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
constructor: ConstructorNode;
constructor ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildConstantconstructorProdNode[position, length, constructor], stack];
RETURN [stack]
END;
Seecomplexvaluenull: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildConstantemptyProdNode[position, length], stack];
RETURN [stack]
END;
Seeoptionalnonempty: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
constant: ConstantNode;
constant ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[constant, stack];
RETURN [stack]
END;
Seeoptionalalias: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildConstantderefProdNode[position, length, id], stack];
RETURN [stack]
END;
Seeoptionalempty: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildConstantunboundedProdNode[position, length], stack];
RETURN [stack]
END;
Seemandatoryvalue: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
constant: ConstantNode;
constant ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[constant, stack];
RETURN [stack]
END;
Seemandatoryalias: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildConstantderefProdNode[position, length, id], stack];
RETURN [stack]
END;
Seeenumerationone: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
keyindexpair: EnumerationNode;
keyindexpair ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[keyindexpair, stack];
RETURN [stack]
END;
Seeenumerationmore: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
keyindexpair: EnumerationNode;
enumeration: EnumerationNode;
enumeration ← NARROW[stack.first];
stack ← stack.rest;
keyindexpair ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildEnumerationmoreProdNode[position, length, keyindexpair, enumeration], stack];
RETURN [stack]
END;
Seekeyindexpair: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
mandatory: ConstantNode;
mandatory ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildEnumerationoneProdNode[position, length, id, mandatory], stack];
RETURN [stack]
END;
Seeunionone: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
selector: UnionNode;
selector ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[selector, stack];
RETURN [stack]
END;
Seeunionmore: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
selector: UnionNode;
union: UnionNode;
union ← NARROW[stack.first];
stack ← stack.rest;
selector ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildUnionmoreProdNode[position, length, selector, union], stack];
RETURN [stack]
END;
Seeselectorone: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
namelist: NameListNode;
simpletype: TypeNode;
simpletype ← NARROW[stack.first];
stack ← stack.rest;
namelist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildUniononeProdNode[position, length, namelist, simpletype], stack];
RETURN [stack]
END;
Seeselectortwo: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
namelist: NameListNode;
number: NumberNode;
simpletype: TypeNode;
simpletype ← NARROW[stack.first];
stack ← stack.rest;
number ← NARROW[stack.first];
stack ← stack.rest;
namelist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildUniononeProdNode[position, length, namelist, simpletype], stack];
RETURN [stack]
END;
Seefieldlistfield: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
field: FieldListNode;
field ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildFieldListmoreProdNode[position, length, field, BuildFieldListemptyProdNode[field.position, field.position - field.length]], stack];
RETURN [stack]
END;
Seefieldlistmore: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
field: FieldListNode;
fieldlist: FieldListNode;
fieldlist ← NARROW[stack.first];
stack ← stack.rest;
field ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildFieldListmoreProdNode[position, length, field, fieldlist], stack];
RETURN [stack]
END;
Seefield: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
namelist: NameListNode;
simpletype: TypeNode;
simpletype ← NARROW[stack.first];
stack ← stack.rest;
namelist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildFieldListoneProdNode[position, length, namelist, simpletype], stack];
RETURN [stack]
END;
Seegroupingconst: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
constant: ConstantNode;
constant ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildGroupingoneProdNode[position, length, constant], stack];
RETURN [stack]
END;
Seegroupingid: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildGroupingoneProdNode[position, length, BuildConstantderefProdNode[id.position, id.length, id]], stack];
RETURN [stack]
END;
Seegroupingcmore: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
constant: ConstantNode;
grouping: GroupingNode;
grouping ← NARROW[stack.first];
stack ← stack.rest;
constant ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildGroupingmoreProdNode[position, length, constant, grouping], stack];
RETURN [stack]
END;
Seegroupingimore: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
grouping: GroupingNode;
grouping ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildGroupingmoreProdNode[position, length, BuildConstantderefProdNode[id.position, id.length, id], grouping], stack];
RETURN [stack]
END;
Seeconstructorone: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
binding: BindingNode;
binding ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildConstructoroneProdNode[position, length, binding], stack];
RETURN [stack]
END;
Seeconstructormore: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
binding: BindingNode;
constructor: ConstructorNode;
constructor ← NARROW[stack.first];
stack ← stack.rest;
binding ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildConstructormoreProdNode[position, length, binding, constructor], stack];
RETURN [stack]
END;
Seebindingid: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
namelist: NameListNode;
id: idNode;
id ← NARROW[stack.first];
stack ← stack.rest;
namelist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildBindingProdNode[position, length, namelist, BuildConstantderefProdNode[id.position, id.length, id]], stack];
RETURN [stack]
END;
Seebindingconst: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
namelist: NameListNode;
constant: ConstantNode;
constant ← NARROW[stack.first];
stack ← stack.rest;
namelist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildBindingProdNode[position, length, namelist, constant], stack];
RETURN [stack]
END;
Seeargumentsempty: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildFieldListemptyProdNode[position, length], stack];
RETURN [stack]
END;
Seeargumentslist: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
fieldlist: FieldListNode;
fieldlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[fieldlist, stack];
RETURN [stack]
END;
Seeargumentsnull: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildFieldListemptyProdNode[position, length], stack];
RETURN [stack]
END;
Seeresultsempty: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildFieldListemptyProdNode[position, length], stack];
RETURN [stack]
END;
Seeresultslist: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
fieldlist: FieldListNode;
fieldlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[fieldlist, stack];
RETURN [stack]
END;
Seeresultsnull: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildFieldListemptyProdNode[position, length], stack];
RETURN [stack]
END;
Seeerrorsempty: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildNameListemptyProdNode[position, length], stack];
RETURN [stack]
END;
Seeerrorslist: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
namelist: NameListNode;
namelist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[namelist, stack];
RETURN [stack]
END;
Seenamelistone: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildNameListoneProdNode[position, length, id], stack];
RETURN [stack]
END;
Seenamelistmore: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
namelist: NameListNode;
namelist ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildNameListmoreProdNode[position, length, id, namelist], stack];
RETURN [stack]
END;
Seenumberdecimal: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
decimal: decimalNode;
decimal ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildNumberdecimalProdNode[position, length, decimal], stack];
RETURN [stack]
END;
Seenumberoctal: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
octal: octalNode;
octal ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildNumberoctalProdNode[position, length, octal], stack];
RETURN [stack]
END;
Seenumberhex: PROC [nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS [LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
hex: hexNode;
hex ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildNumberhexProdNode[position, length, hex], stack];
RETURN [stack]
END;
END..