<> <> <> <> DIRECTORY SiroccoAG2Def, Rope, SiroccoBaseDef, SiroccoCGDef, SiroccoPrivate, ThreeC4Support, SiroccoATDef; SiroccoMethodsBImpl: CEDAR PROGRAM IMPORTS SiroccoBaseDef, ThreeC4Support EXPORTS SiroccoAG2Def= BEGIN OPEN SiroccoAG2Def, Rope, SiroccoBaseDef, SiroccoCGDef, SiroccoPrivate, ThreeC4Support, SiroccoATDef; EnumerationoneProdBuildTGN: PUBLIC PROC[ref: REF ANY, context: CONTEXT] RETURNS[temp0: TypeGraphNode] = BEGIN tree: EnumerationNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: EnumerationoneProdData _ NARROW[tree.data]; BEGIN node: TypeGraphNode; tag: ROPE; ordinal: AbstractValue; ordinal _ treeData.Constant.procs.BuildAbstractValue[treeData.Constant, context]; tag _ TextFromID[treeData.id]; node _ CreateFieldListTGN[tag, ordinal]; temp0 _ node; END; END END; EnumerationmoreProdBuildTGN: PUBLIC PROC[ref: REF ANY, context: CONTEXT] RETURNS[temp0: TypeGraphNode] = BEGIN tree: EnumerationNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: EnumerationmoreProdData _ NARROW[tree.data]; BEGIN nodeC: TypeGraphNode; nodeB: TypeGraphNode; nodeA: TypeGraphNode; nodeA _ treeData.Enumerationvalue.procs.BuildTGN[treeData.Enumerationvalue, context]; nodeB _ treeData.Enumerationnext.procs.BuildTGN[treeData.Enumerationnext, context]; nodeC _ FieldListTGNConcat[nodeA, nodeB]; temp0 _ nodeC; END; END END; UniononeProdBuildTGN: PUBLIC PROC[ref: REF ANY, context: CONTEXT] RETURNS[temp0: TypeGraphNode] = BEGIN tree: UnionNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: UniononeProdData _ NARROW[tree.data]; BEGIN nodeC: TypeGraphNode; nodeB: TypeGraphNode; nodeA: TypeGraphNode; nodeA _ treeData.Type.procs.BuildTGN[treeData.Type, context]; nodeB _ treeData.NameList.procs.BuildTGN[treeData.NameList, context]; nodeC _ CreateUnionTGN[nodeB, nodeA]; temp0 _ nodeC; END; END END; UnionmoreProdBuildTGN: PUBLIC PROC[ref: REF ANY, context: CONTEXT] RETURNS[temp0: TypeGraphNode] = BEGIN tree: UnionNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: UnionmoreProdData _ NARROW[tree.data]; BEGIN nodeC: TypeGraphNode; nodeB: TypeGraphNode; nodeA: TypeGraphNode; nodeA _ treeData.Unionvalue.procs.BuildTGN[treeData.Unionvalue, context]; nodeB _ treeData.Unionnext.procs.BuildTGN[treeData.Unionnext, context]; nodeC _ UnionTGNConcat[nodeA, nodeB]; temp0 _ nodeC; END; END END; FieldListemptyProdBuildTGN: PUBLIC PROC[ref: REF ANY, context: CONTEXT] RETURNS[temp0: TypeGraphNode] = BEGIN tree: FieldListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; BEGIN nodeA: TypeGraphNode; nodeA _ CreateEmptyFieldTGN[]; temp0 _ nodeA; END; END END; FieldListoneProdBuildTGN: PUBLIC PROC[ref: REF ANY, context: CONTEXT] RETURNS[temp0: TypeGraphNode] = BEGIN tree: FieldListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: FieldListoneProdData _ NARROW[tree.data]; BEGIN nodeC: TypeGraphNode; nodeB: TypeGraphNode; nodeA: TypeGraphNode; nodeA _ treeData.Type.procs.BuildTGN[treeData.Type, context]; nodeB _ treeData.NameList.procs.BuildTGN[treeData.NameList, context]; nodeC _ CreateFieldTGN[nodeB, nodeA]; temp0 _ nodeC; END; END END; FieldListmoreProdBuildTGN: PUBLIC PROC[ref: REF ANY, context: CONTEXT] RETURNS[temp0: TypeGraphNode] = BEGIN tree: FieldListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: FieldListmoreProdData _ NARROW[tree.data]; BEGIN nodeC: TypeGraphNode; nodeB: TypeGraphNode; nodeA: TypeGraphNode; nodeA _ treeData.FieldListvalue.procs.BuildTGN[treeData.FieldListvalue, context]; nodeB _ treeData.FieldListrest.procs.BuildTGN[treeData.FieldListrest, context]; nodeC _ FieldTGNConcat[nodeA, nodeB]; temp0 _ nodeC; END; END END; GroupingoneProdBuildAbstractValue: PUBLIC PROC[ref: REF ANY, context: CONTEXT] RETURNS[temp0: AbstractValue] = BEGIN tree: GroupingNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: GroupingoneProdData _ NARROW[tree.data]; BEGIN value: AbstractValue; nodeA: AbstractValue; nodeA _ treeData.Constant.procs.BuildAbstractValue[treeData.Constant, context]; value _ CreateGroupingAVN[nodeA]; temp0 _ value; END; END END; GroupingmoreProdBuildAbstractValue: PUBLIC PROC[ref: REF ANY, context: CONTEXT] RETURNS[temp0: AbstractValue] = BEGIN tree: GroupingNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: GroupingmoreProdData _ NARROW[tree.data]; BEGIN nodeC: AbstractValue; nodeB: AbstractValue; nodeA: AbstractValue; nodeA _ treeData.Grouping.procs.BuildAbstractValue[treeData.Grouping, context]; nodeB _ treeData.Constant.procs.BuildAbstractValue[treeData.Constant, context]; nodeC _ GroupingAVNConcat[nodeA, nodeB]; temp0 _ nodeC; END; END END; ConstructoroneProdBuildAbstractValue: PUBLIC PROC[ref: REF ANY, context: CONTEXT] RETURNS[temp0: AbstractValue] = BEGIN tree: ConstructorNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ConstructoroneProdData _ NARROW[tree.data]; BEGIN value: AbstractValue; nodeA: AbstractValue; nodeA _ treeData.Binding.procs.BuildAbstractValue[treeData.Binding, context]; value _ CreateConstructorAVN[nodeA]; temp0 _ value; END; END END; ConstructormoreProdBuildAbstractValue: PUBLIC PROC[ref: REF ANY, context: CONTEXT] RETURNS[temp0: AbstractValue] = BEGIN tree: ConstructorNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ConstructormoreProdData _ NARROW[tree.data]; BEGIN nodeC: AbstractValue; nodeB: AbstractValue; nodeA: AbstractValue; nodeA _ treeData.Constructor.procs.BuildAbstractValue[treeData.Constructor, context]; nodeB _ treeData.Binding.procs.BuildAbstractValue[treeData.Binding, context]; nodeC _ ConstructorAVNConcat[nodeA, nodeB]; temp0 _ nodeC; END; END END; BindingProdBuildAbstractValue: PUBLIC PROC[ref: REF ANY, context: CONTEXT] RETURNS[temp0: AbstractValue] = BEGIN tree: BindingNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: BindingProdData _ NARROW[tree.data]; BEGIN value: AbstractValue; nodeA: TypeGraphNode; nodeB: AbstractValue; nodeB _ treeData.Constant.procs.BuildAbstractValue[treeData.Constant, context]; nodeA _ treeData.NameList.procs.BuildTGN[treeData.NameList, context]; value _ CreateBindingAVN[nodeA, nodeB]; temp0 _ value; END; END END; NameListemptyProdBuildTGN: PUBLIC PROC[ref: REF ANY, context: CONTEXT] RETURNS[temp0: TypeGraphNode] = BEGIN tree: NameListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; BEGIN node: TypeGraphNode; node _ CreatePrimitiveTGN[Generic.record]; temp0 _ node; END; END END; NameListoneProdBuildTGN: PUBLIC PROC[ref: REF ANY, context: CONTEXT] RETURNS[temp0: TypeGraphNode] = BEGIN tree: NameListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: NameListoneProdData _ NARROW[tree.data]; BEGIN node: TypeGraphNode; node _ CreatePrimitiveTGN[Generic.record]; temp0 _ node; END; END END; NameListmoreProdBuildTGN: PUBLIC PROC[ref: REF ANY, context: CONTEXT] RETURNS[temp0: TypeGraphNode] = BEGIN tree: NameListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: NameListmoreProdData _ NARROW[tree.data]; BEGIN node: TypeGraphNode; node _ CreatePrimitiveTGN[Generic.record]; temp0 _ node; END; END END; NumberdecimalProdBuildAbstractValue: PUBLIC PROC[ref: REF ANY, context: CONTEXT] RETURNS[temp0: AbstractValue] = BEGIN tree: NumberNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: NumberdecimalProdData _ NARROW[tree.data]; BEGIN value: AbstractValue; card: CARD; card _ CardFromDecimal[treeData.decimal]; value _ CreateNumericalAVN[card]; temp0 _ value; END; END END; NumberhexProdBuildAbstractValue: PUBLIC PROC[ref: REF ANY, context: CONTEXT] RETURNS[temp0: AbstractValue] = BEGIN tree: NumberNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: NumberhexProdData _ NARROW[tree.data]; BEGIN value: AbstractValue; card: CARD; card _ CardFromHex[treeData.hex]; value _ CreateNumericalAVN[card]; temp0 _ value; END; END END; NumberoctalProdBuildAbstractValue: PUBLIC PROC[ref: REF ANY, context: CONTEXT] RETURNS[temp0: AbstractValue] = BEGIN tree: NumberNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: NumberoctalProdData _ NARROW[tree.data]; BEGIN value: AbstractValue; card: CARD; card _ CardFromOctal[treeData.octal]; value _ CreateNumericalAVN[card]; temp0 _ value; END; END END; END..