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..