----- GENERATED PART STARTS HERE. DO NOT EDIT ON OR BEYOND THIS LINE ----- -------------------------------------------------------------------------- -- presentationSheet -- -------------------------------------------------------------------------- imports { import ScannerSheetHS as Lex } WRAPPER Root { -- type PresentationSheet doc enr node clip token = -- enr -> doc -> FocusDoc -> WhitespaceMap -> IDPCounter -> -- (WhitespaceMap, IDPCounter, Presentation doc node clip token) presentationSheet :: PresentationSheet Document EnrichedDoc Node ClipDoc UserToken presentationSheet enrichedDoc document focusD whitespaceMap pIdC = let (Syn_EnrichedDoc pIdC' pres self whitespaceMap') = wrap_EnrichedDoc (sem_EnrichedDoc enrichedDoc) (Inh_EnrichedDoc document focusD pIdC [] whitespaceMap) in (whitespaceMap', pIdC', pres) {- A type error here means that extra attributes were declared on EnrichedDoc The attribute signature for EnrichedDoc should be: EnrichedDoc [ focusD : FocusDoc path : Path | pIdC : Int layoutMap : WhitespaceMap | pres : Presentation_ EnrichedDoc ] -} } -------------------------------------------------------------------------- -- AG data type -- -------------------------------------------------------------------------- DATA Root | Root idP:IDP decls:List_Decl | HoleRoot | ParseErrRoot error:{(ParseError Document EnrichedDoc Node ClipDoc UserToken)} DATA EnrichedDoc | RootEnr root:RootE heliumTypeInfo:HeliumTypeInfo | HoleEnrichedDoc | ParseErrEnrichedDoc error:{(ParseError Document EnrichedDoc Node ClipDoc UserToken)} DATA RootE | RootE idP:IDP decls:List_Decl idListDecls:List_Decl | HoleRootE | ParseErrRootE error:{(ParseError Document EnrichedDoc Node ClipDoc UserToken)} DATA Decl | Decl idP0:IDP idP1:IDP idP2:IDP idP3:IDP expanded:Bool autoLayout:Bool ident:Ident exp:Exp | BoardDecl idP0:IDP idP1:IDP board:Board | PPPresentationDecl idP0:IDP idP1:IDP pPPresentation:PPPresentation | HoleDecl | ParseErrDecl error:{(ParseError Document EnrichedDoc Node ClipDoc UserToken)} DATA Ident | Ident idP0:IDP idP1:IDP string:String | HoleIdent | ParseErrIdent error:{(ParseError Document EnrichedDoc Node ClipDoc UserToken)} DATA Exp | PlusExp idP0:IDP exp1:Exp exp2:Exp | TimesExp idP0:IDP exp1:Exp exp2:Exp | DivExp idP0:IDP exp1:Exp exp2:Exp | PowerExp idP0:IDP exp1:Exp exp2:Exp | BoolExp idP0:IDP bool:Bool | IntExp idP0:IDP int:Int | LamExp idP0:IDP idP1:IDP ident:Ident exp:Exp | AppExp exp1:Exp exp2:Exp | CaseExp idP0:IDP idP1:IDP exp:Exp alts:List_Alt | LetExp idP0:IDP idP1:IDP decls:List_Decl exp:Exp | IdentExp ident:Ident | IfExp idP0:IDP idP1:IDP idP2:IDP exp1:Exp exp2:Exp exp3:Exp | ParenExp idP0:IDP idP1:IDP exp:Exp | ListExp idP0:IDP idP1:IDP ids:{[IDP]} exps:List_Exp | ProductExp idP0:IDP idP1:IDP ids:{[IDP]} exps:List_Exp | HoleExp | ParseErrExp error:{(ParseError Document EnrichedDoc Node ClipDoc UserToken)} DATA Alt | Alt idP0:IDP idP1:IDP ident:Ident exp:Exp | HoleAlt | ParseErrAlt error:{(ParseError Document EnrichedDoc Node ClipDoc UserToken)} DATA Board | Board r1:BoardRow r2:BoardRow r3:BoardRow r4:BoardRow r5:BoardRow r6:BoardRow r7:BoardRow r8:BoardRow | HoleBoard | ParseErrBoard error:{(ParseError Document EnrichedDoc Node ClipDoc UserToken)} DATA BoardRow | BoardRow ca:BoardSquare cb:BoardSquare cc:BoardSquare cd:BoardSquare ce:BoardSquare cf:BoardSquare cg:BoardSquare ch:BoardSquare | HoleBoardRow | ParseErrBoardRow error:{(ParseError Document EnrichedDoc Node ClipDoc UserToken)} DATA BoardSquare | Queen color:Bool | King color:Bool | Bishop color:Bool | Knight color:Bool | Rook color:Bool | Pawn color:Bool | Empty | HoleBoardSquare | ParseErrBoardSquare error:{(ParseError Document EnrichedDoc Node ClipDoc UserToken)} DATA PPPresentation | PPPresentation viewType:Bool slides:List_Slide | HolePPPresentation | ParseErrPPPresentation error:{(ParseError Document EnrichedDoc Node ClipDoc UserToken)} DATA Slide | Slide title:String itemList:ItemList | HoleSlide | ParseErrSlide error:{(ParseError Document EnrichedDoc Node ClipDoc UserToken)} DATA ItemList | ItemList listType:ListType items:List_Item | HoleItemList | ParseErrItemList error:{(ParseError Document EnrichedDoc Node ClipDoc UserToken)} DATA ListType | Bullet | Number | Alpha | HoleListType | ParseErrListType error:{(ParseError Document EnrichedDoc Node ClipDoc UserToken)} DATA Item | StringItem string:String | HeliumItem exp:Exp | ListItem itemList:ItemList | HoleItem | ParseErrItem error:{(ParseError Document EnrichedDoc Node ClipDoc UserToken)} DATA List_Decl | List_Decl elts:ConsList_Decl | HoleList_Decl | ParseErrList_Decl error:{(ParseError Document EnrichedDoc Node ClipDoc UserToken)} DATA List_Alt | List_Alt elts:ConsList_Alt | HoleList_Alt | ParseErrList_Alt error:{(ParseError Document EnrichedDoc Node ClipDoc UserToken)} DATA List_Exp | List_Exp elts:ConsList_Exp | HoleList_Exp | ParseErrList_Exp error:{(ParseError Document EnrichedDoc Node ClipDoc UserToken)} DATA List_Slide | List_Slide elts:ConsList_Slide | HoleList_Slide | ParseErrList_Slide error:{(ParseError Document EnrichedDoc Node ClipDoc UserToken)} DATA List_Item | List_Item elts:ConsList_Item | HoleList_Item | ParseErrList_Item error:{(ParseError Document EnrichedDoc Node ClipDoc UserToken)} DATA ConsList_Decl | Cons_Decl head:Decl tail:ConsList_Decl | Nil_Decl DATA ConsList_Alt | Cons_Alt head:Alt tail:ConsList_Alt | Nil_Alt DATA ConsList_Exp | Cons_Exp head:Exp tail:ConsList_Exp | Nil_Exp DATA ConsList_Slide | Cons_Slide head:Slide tail:ConsList_Slide | Nil_Slide DATA ConsList_Item | Cons_Item head:Item tail:ConsList_Item | Nil_Item -------------------------------------------------------------------------- -- Attr declarations -- -------------------------------------------------------------------------- ATTR Root EnrichedDoc RootE Decl Ident Exp Alt Board BoardRow BoardSquare PPPresentation Slide ItemList ListType Item List_Decl List_Alt List_Exp List_Slide List_Item ConsList_Decl ConsList_Alt ConsList_Exp ConsList_Slide ConsList_Item [ doc : Document focusD : FocusDoc path : Path | pIdC : Int whitespaceMap : WhitespaceMap | ] ATTR Root EnrichedDoc RootE Decl Ident Exp Alt Board BoardRow BoardSquare PPPresentation Slide ItemList ListType Item List_Decl List_Alt List_Exp List_Slide List_Item [ | | pres : Presentation_ ] ATTR Root RootE Decl Ident Exp Alt Board BoardRow BoardSquare PPPresentation Slide ItemList ListType Item List_Decl List_Alt List_Exp List_Slide List_Item ConsList_Decl ConsList_Alt ConsList_Exp ConsList_Slide ConsList_Item [ ix : Int | | parseErrors USE {++} {[]} : {[ParseErrorMessage]} ] ATTR Root RootE Decl Ident Exp Alt Board BoardRow BoardSquare PPPresentation Slide ItemList ListType Item List_Decl List_Alt List_Exp List_Slide List_Item [ | | ix : Int path : Path presXML : Presentation_ presTree : Presentation_ ] ATTR List_Decl List_Alt List_Exp List_Slide List_Item ConsList_Decl ConsList_Alt ConsList_Exp ConsList_Slide ConsList_Item [ | | press : {[Presentation_]} ] ATTR ConsList_Decl ConsList_Alt ConsList_Exp ConsList_Slide ConsList_Item [ | | pressXML : {[Presentation_]} pressTree : {[Presentation_]} ] -------------------------------------------------------------------------- -- General sem functions -- -------------------------------------------------------------------------- SEM Root | Root decls.pIdC = @lhs.pIdC + 1 lhs.pIdC = @decls.pIdC decls.path = @lhs.path++[0] | Root decls.ix = 0 | Root lhs.pres = loc (Node_Root @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | HoleRoot lhs.pres = presHole @lhs.focusD "Root" (Node_HoleRoot @self @lhs.path) @lhs.path `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ParseErrRoot lhs.pres = presParseErr (Node_ParseErrRoot @self @lhs.path) @error `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) lhs.parseErrors = getErrorMessages @error SEM EnrichedDoc | RootEnr root.pIdC = @lhs.pIdC + 0 lhs.pIdC = @root.pIdC root.path = @lhs.path++[0] | RootEnr root.ix = 0 | RootEnr lhs.pres = loc (Node_RootEnr @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | HoleEnrichedDoc lhs.pres = presHole @lhs.focusD "EnrichedDoc" (Node_HoleEnrichedDoc @self @lhs.path) @lhs.path `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ParseErrEnrichedDoc lhs.pres = presParseErr (Node_ParseErrEnrichedDoc @self @lhs.path) @error `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) SEM RootE | RootE decls.pIdC = @lhs.pIdC + 1 idListDecls.pIdC = @decls.pIdC lhs.pIdC = @idListDecls.pIdC decls.path = @lhs.path++[0] idListDecls.path = @lhs.path++[1] | RootE decls.ix = 0 idListDecls.ix = 1 | RootE lhs.pres = loc (Node_RootE @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | HoleRootE lhs.pres = presHole @lhs.focusD "RootE" (Node_HoleRootE @self @lhs.path) @lhs.path `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ParseErrRootE lhs.pres = presParseErr (Node_ParseErrRootE @self @lhs.path) @error `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) lhs.parseErrors = getErrorMessages @error SEM Decl | Decl ident.pIdC = @lhs.pIdC + 4 exp.pIdC = @ident.pIdC lhs.pIdC = @exp.pIdC ident.path = @lhs.path++[2] exp.path = @lhs.path++[3] | BoardDecl board.pIdC = @lhs.pIdC + 2 lhs.pIdC = @board.pIdC board.path = @lhs.path++[0] | PPPresentationDecl pPPresentation.pIdC = @lhs.pIdC + 2 lhs.pIdC = @pPPresentation.pIdC pPPresentation.path = @lhs.path++[0] | Decl ident.ix = 2 exp.ix = 3 | BoardDecl board.ix = 0 | PPPresentationDecl pPPresentation.ix = 0 | Decl lhs.pres = loc (Node_Decl @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | BoardDecl lhs.pres = loc (Node_BoardDecl @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | PPPresentationDecl lhs.pres = loc (Node_PPPresentationDecl @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | HoleDecl lhs.pres = presHole @lhs.focusD "Decl" (Node_HoleDecl @self @lhs.path) @lhs.path `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ParseErrDecl lhs.pres = presParseErr (Node_ParseErrDecl @self @lhs.path) @error `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) lhs.parseErrors = getErrorMessages @error SEM Ident | Ident lhs.pIdC = @lhs.pIdC + 2 | Ident | Ident lhs.pres = loc (Node_Ident @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | HoleIdent lhs.pres = presHole @lhs.focusD "Ident" (Node_HoleIdent @self @lhs.path) @lhs.path `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ParseErrIdent lhs.pres = presParseErr (Node_ParseErrIdent @self @lhs.path) @error `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) lhs.parseErrors = getErrorMessages @error SEM Exp | PlusExp exp1.pIdC = @lhs.pIdC + 1 exp2.pIdC = @exp1.pIdC lhs.pIdC = @exp2.pIdC exp1.path = @lhs.path++[0] exp2.path = @lhs.path++[1] | TimesExp exp1.pIdC = @lhs.pIdC + 1 exp2.pIdC = @exp1.pIdC lhs.pIdC = @exp2.pIdC exp1.path = @lhs.path++[0] exp2.path = @lhs.path++[1] | DivExp exp1.pIdC = @lhs.pIdC + 1 exp2.pIdC = @exp1.pIdC lhs.pIdC = @exp2.pIdC exp1.path = @lhs.path++[0] exp2.path = @lhs.path++[1] | PowerExp exp1.pIdC = @lhs.pIdC + 1 exp2.pIdC = @exp1.pIdC lhs.pIdC = @exp2.pIdC exp1.path = @lhs.path++[0] exp2.path = @lhs.path++[1] | BoolExp lhs.pIdC = @lhs.pIdC + 1 | IntExp lhs.pIdC = @lhs.pIdC + 1 | LamExp ident.pIdC = @lhs.pIdC + 2 exp.pIdC = @ident.pIdC lhs.pIdC = @exp.pIdC ident.path = @lhs.path++[0] exp.path = @lhs.path++[1] | AppExp exp1.pIdC = @lhs.pIdC + 0 exp2.pIdC = @exp1.pIdC lhs.pIdC = @exp2.pIdC exp1.path = @lhs.path++[0] exp2.path = @lhs.path++[1] | CaseExp exp.pIdC = @lhs.pIdC + 2 alts.pIdC = @exp.pIdC lhs.pIdC = @alts.pIdC exp.path = @lhs.path++[0] alts.path = @lhs.path++[1] | LetExp decls.pIdC = @lhs.pIdC + 2 exp.pIdC = @decls.pIdC lhs.pIdC = @exp.pIdC decls.path = @lhs.path++[0] exp.path = @lhs.path++[1] | IdentExp ident.pIdC = @lhs.pIdC + 0 lhs.pIdC = @ident.pIdC ident.path = @lhs.path++[0] | IfExp exp1.pIdC = @lhs.pIdC + 3 exp2.pIdC = @exp1.pIdC exp3.pIdC = @exp2.pIdC lhs.pIdC = @exp3.pIdC exp1.path = @lhs.path++[0] exp2.path = @lhs.path++[1] exp3.path = @lhs.path++[2] | ParenExp exp.pIdC = @lhs.pIdC + 2 lhs.pIdC = @exp.pIdC exp.path = @lhs.path++[0] | ListExp exps.pIdC = @lhs.pIdC + 3 lhs.pIdC = @exps.pIdC exps.path = @lhs.path++[0] | ProductExp exps.pIdC = @lhs.pIdC + 3 lhs.pIdC = @exps.pIdC exps.path = @lhs.path++[0] | PlusExp exp1.ix = 0 exp2.ix = 1 | TimesExp exp1.ix = 0 exp2.ix = 1 | DivExp exp1.ix = 0 exp2.ix = 1 | PowerExp exp1.ix = 0 exp2.ix = 1 | BoolExp | IntExp | LamExp ident.ix = 0 exp.ix = 1 | AppExp exp1.ix = 0 exp2.ix = 1 | CaseExp exp.ix = 0 alts.ix = 1 | LetExp decls.ix = 0 exp.ix = 1 | IdentExp ident.ix = 0 | IfExp exp1.ix = 0 exp2.ix = 1 exp3.ix = 2 | ParenExp exp.ix = 0 | ListExp exps.ix = 0 | ProductExp exps.ix = 0 | PlusExp lhs.pres = loc (Node_PlusExp @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | TimesExp lhs.pres = loc (Node_TimesExp @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | DivExp lhs.pres = loc (Node_DivExp @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | PowerExp lhs.pres = loc (Node_PowerExp @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | BoolExp lhs.pres = loc (Node_BoolExp @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | IntExp lhs.pres = loc (Node_IntExp @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | LamExp lhs.pres = loc (Node_LamExp @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | AppExp lhs.pres = loc (Node_AppExp @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | CaseExp lhs.pres = loc (Node_CaseExp @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | LetExp lhs.pres = loc (Node_LetExp @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | IdentExp lhs.pres = loc (Node_IdentExp @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | IfExp lhs.pres = loc (Node_IfExp @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ParenExp lhs.pres = loc (Node_ParenExp @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ListExp lhs.pres = loc (Node_ListExp @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ProductExp lhs.pres = loc (Node_ProductExp @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | HoleExp lhs.pres = presHole @lhs.focusD "Exp" (Node_HoleExp @self @lhs.path) @lhs.path `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ParseErrExp lhs.pres = presParseErr (Node_ParseErrExp @self @lhs.path) @error `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) lhs.parseErrors = getErrorMessages @error SEM Alt | Alt ident.pIdC = @lhs.pIdC + 2 exp.pIdC = @ident.pIdC lhs.pIdC = @exp.pIdC ident.path = @lhs.path++[0] exp.path = @lhs.path++[1] | Alt ident.ix = 0 exp.ix = 1 | Alt lhs.pres = loc (Node_Alt @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | HoleAlt lhs.pres = presHole @lhs.focusD "Alt" (Node_HoleAlt @self @lhs.path) @lhs.path `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ParseErrAlt lhs.pres = presParseErr (Node_ParseErrAlt @self @lhs.path) @error `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) lhs.parseErrors = getErrorMessages @error SEM Board | Board r1.pIdC = @lhs.pIdC + 0 r2.pIdC = @r1.pIdC r3.pIdC = @r2.pIdC r4.pIdC = @r3.pIdC r5.pIdC = @r4.pIdC r6.pIdC = @r5.pIdC r7.pIdC = @r6.pIdC r8.pIdC = @r7.pIdC lhs.pIdC = @r8.pIdC r1.path = @lhs.path++[0] r2.path = @lhs.path++[1] r3.path = @lhs.path++[2] r4.path = @lhs.path++[3] r5.path = @lhs.path++[4] r6.path = @lhs.path++[5] r7.path = @lhs.path++[6] r8.path = @lhs.path++[7] | Board r1.ix = 0 r2.ix = 1 r3.ix = 2 r4.ix = 3 r5.ix = 4 r6.ix = 5 r7.ix = 6 r8.ix = 7 | Board lhs.pres = loc (Node_Board @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | HoleBoard lhs.pres = presHole @lhs.focusD "Board" (Node_HoleBoard @self @lhs.path) @lhs.path `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ParseErrBoard lhs.pres = presParseErr (Node_ParseErrBoard @self @lhs.path) @error `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) lhs.parseErrors = getErrorMessages @error SEM BoardRow | BoardRow ca.pIdC = @lhs.pIdC + 0 cb.pIdC = @ca.pIdC cc.pIdC = @cb.pIdC cd.pIdC = @cc.pIdC ce.pIdC = @cd.pIdC cf.pIdC = @ce.pIdC cg.pIdC = @cf.pIdC ch.pIdC = @cg.pIdC lhs.pIdC = @ch.pIdC ca.path = @lhs.path++[0] cb.path = @lhs.path++[1] cc.path = @lhs.path++[2] cd.path = @lhs.path++[3] ce.path = @lhs.path++[4] cf.path = @lhs.path++[5] cg.path = @lhs.path++[6] ch.path = @lhs.path++[7] | BoardRow ca.ix = 0 cb.ix = 1 cc.ix = 2 cd.ix = 3 ce.ix = 4 cf.ix = 5 cg.ix = 6 ch.ix = 7 | BoardRow lhs.pres = loc (Node_BoardRow @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | HoleBoardRow lhs.pres = presHole @lhs.focusD "BoardRow" (Node_HoleBoardRow @self @lhs.path) @lhs.path `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ParseErrBoardRow lhs.pres = presParseErr (Node_ParseErrBoardRow @self @lhs.path) @error `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) lhs.parseErrors = getErrorMessages @error SEM BoardSquare | Queen lhs.pIdC = @lhs.pIdC + 0 | King lhs.pIdC = @lhs.pIdC + 0 | Bishop lhs.pIdC = @lhs.pIdC + 0 | Knight lhs.pIdC = @lhs.pIdC + 0 | Rook lhs.pIdC = @lhs.pIdC + 0 | Pawn lhs.pIdC = @lhs.pIdC + 0 | Empty lhs.pIdC = @lhs.pIdC + 0 | Queen | King | Bishop | Knight | Rook | Pawn | Empty | Queen lhs.pres = loc (Node_Queen @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | King lhs.pres = loc (Node_King @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | Bishop lhs.pres = loc (Node_Bishop @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | Knight lhs.pres = loc (Node_Knight @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | Rook lhs.pres = loc (Node_Rook @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | Pawn lhs.pres = loc (Node_Pawn @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | Empty lhs.pres = loc (Node_Empty @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | HoleBoardSquare lhs.pres = presHole @lhs.focusD "BoardSquare" (Node_HoleBoardSquare @self @lhs.path) @lhs.path `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ParseErrBoardSquare lhs.pres = presParseErr (Node_ParseErrBoardSquare @self @lhs.path) @error `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) lhs.parseErrors = getErrorMessages @error SEM PPPresentation | PPPresentation slides.pIdC = @lhs.pIdC + 0 lhs.pIdC = @slides.pIdC slides.path = @lhs.path++[1] | PPPresentation slides.ix = 1 | PPPresentation lhs.pres = loc (Node_PPPresentation @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | HolePPPresentation lhs.pres = presHole @lhs.focusD "PPPresentation" (Node_HolePPPresentation @self @lhs.path) @lhs.path `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ParseErrPPPresentation lhs.pres = presParseErr (Node_ParseErrPPPresentation @self @lhs.path) @error `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) lhs.parseErrors = getErrorMessages @error SEM Slide | Slide itemList.pIdC = @lhs.pIdC + 0 lhs.pIdC = @itemList.pIdC itemList.path = @lhs.path++[1] | Slide itemList.ix = 1 | Slide lhs.pres = loc (Node_Slide @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | HoleSlide lhs.pres = presHole @lhs.focusD "Slide" (Node_HoleSlide @self @lhs.path) @lhs.path `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ParseErrSlide lhs.pres = presParseErr (Node_ParseErrSlide @self @lhs.path) @error `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) lhs.parseErrors = getErrorMessages @error SEM ItemList | ItemList listType.pIdC = @lhs.pIdC + 0 items.pIdC = @listType.pIdC lhs.pIdC = @items.pIdC listType.path = @lhs.path++[0] items.path = @lhs.path++[1] | ItemList listType.ix = 0 items.ix = 1 | ItemList lhs.pres = loc (Node_ItemList @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | HoleItemList lhs.pres = presHole @lhs.focusD "ItemList" (Node_HoleItemList @self @lhs.path) @lhs.path `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ParseErrItemList lhs.pres = presParseErr (Node_ParseErrItemList @self @lhs.path) @error `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) lhs.parseErrors = getErrorMessages @error SEM ListType | Bullet lhs.pIdC = @lhs.pIdC + 0 | Number lhs.pIdC = @lhs.pIdC + 0 | Alpha lhs.pIdC = @lhs.pIdC + 0 | Bullet | Number | Alpha | Bullet lhs.pres = loc (Node_Bullet @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | Number lhs.pres = loc (Node_Number @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | Alpha lhs.pres = loc (Node_Alpha @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | HoleListType lhs.pres = presHole @lhs.focusD "ListType" (Node_HoleListType @self @lhs.path) @lhs.path `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ParseErrListType lhs.pres = presParseErr (Node_ParseErrListType @self @lhs.path) @error `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) lhs.parseErrors = getErrorMessages @error SEM Item | StringItem lhs.pIdC = @lhs.pIdC + 0 | HeliumItem exp.pIdC = @lhs.pIdC + 0 lhs.pIdC = @exp.pIdC exp.path = @lhs.path++[0] | ListItem itemList.pIdC = @lhs.pIdC + 0 lhs.pIdC = @itemList.pIdC itemList.path = @lhs.path++[0] | StringItem | HeliumItem exp.ix = 0 | ListItem itemList.ix = 0 | StringItem lhs.pres = loc (Node_StringItem @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | HeliumItem lhs.pres = loc (Node_HeliumItem @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ListItem lhs.pres = loc (Node_ListItem @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | HoleItem lhs.pres = presHole @lhs.focusD "Item" (Node_HoleItem @self @lhs.path) @lhs.path `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ParseErrItem lhs.pres = presParseErr (Node_ParseErrItem @self @lhs.path) @error `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) lhs.parseErrors = getErrorMessages @error SEM List_Decl | List_Decl lhs.press = map ( loc (Node_List_Decl @self @lhs.path) . presentFocus @lhs.focusD @lhs.path ) @elts.press -- parent is reponsible for setting parsing/structural elts.pIdC = @lhs.pIdC + 100 -- NOT RIGHT, should be taken from document type def. lhs.pIdC = @elts.pIdC elts.path = @lhs.path elts.ix = 0 | HoleList_Decl lhs.press = [] | ParseErrList_Decl lhs.press = [] | List_Decl lhs.pres = loc (Node_List_Decl @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path $ @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ParseErrList_Decl lhs.pres = presParseErr (Node_ParseErrList_Decl @self @lhs.path) @error `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) lhs.parseErrors = getErrorMessages @error | HoleList_Decl lhs.pres = presHole @lhs.focusD "Decl" (Node_HoleList_Decl @self @lhs.path) @lhs.path `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) SEM List_Alt | List_Alt lhs.press = map ( loc (Node_List_Alt @self @lhs.path) . presentFocus @lhs.focusD @lhs.path ) @elts.press -- parent is reponsible for setting parsing/structural elts.pIdC = @lhs.pIdC + 100 -- NOT RIGHT, should be taken from document type def. lhs.pIdC = @elts.pIdC elts.path = @lhs.path elts.ix = 0 | HoleList_Alt lhs.press = [] | ParseErrList_Alt lhs.press = [] | List_Alt lhs.pres = loc (Node_List_Alt @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path $ @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ParseErrList_Alt lhs.pres = presParseErr (Node_ParseErrList_Alt @self @lhs.path) @error `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) lhs.parseErrors = getErrorMessages @error | HoleList_Alt lhs.pres = presHole @lhs.focusD "Alt" (Node_HoleList_Alt @self @lhs.path) @lhs.path `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) SEM List_Exp | List_Exp lhs.press = map ( loc (Node_List_Exp @self @lhs.path) . presentFocus @lhs.focusD @lhs.path ) @elts.press -- parent is reponsible for setting parsing/structural elts.pIdC = @lhs.pIdC + 100 -- NOT RIGHT, should be taken from document type def. lhs.pIdC = @elts.pIdC elts.path = @lhs.path elts.ix = 0 | HoleList_Exp lhs.press = [] | ParseErrList_Exp lhs.press = [] | List_Exp lhs.pres = loc (Node_List_Exp @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path $ @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ParseErrList_Exp lhs.pres = presParseErr (Node_ParseErrList_Exp @self @lhs.path) @error `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) lhs.parseErrors = getErrorMessages @error | HoleList_Exp lhs.pres = presHole @lhs.focusD "Exp" (Node_HoleList_Exp @self @lhs.path) @lhs.path `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) SEM List_Slide | List_Slide lhs.press = map ( loc (Node_List_Slide @self @lhs.path) . presentFocus @lhs.focusD @lhs.path ) @elts.press -- parent is reponsible for setting parsing/structural elts.pIdC = @lhs.pIdC + 100 -- NOT RIGHT, should be taken from document type def. lhs.pIdC = @elts.pIdC elts.path = @lhs.path elts.ix = 0 | HoleList_Slide lhs.press = [] | ParseErrList_Slide lhs.press = [] | List_Slide lhs.pres = loc (Node_List_Slide @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path $ @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ParseErrList_Slide lhs.pres = presParseErr (Node_ParseErrList_Slide @self @lhs.path) @error `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) lhs.parseErrors = getErrorMessages @error | HoleList_Slide lhs.pres = presHole @lhs.focusD "Slide" (Node_HoleList_Slide @self @lhs.path) @lhs.path `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) SEM List_Item | List_Item lhs.press = map ( loc (Node_List_Item @self @lhs.path) . presentFocus @lhs.focusD @lhs.path ) @elts.press -- parent is reponsible for setting parsing/structural elts.pIdC = @lhs.pIdC + 100 -- NOT RIGHT, should be taken from document type def. lhs.pIdC = @elts.pIdC elts.path = @lhs.path elts.ix = 0 | HoleList_Item lhs.press = [] | ParseErrList_Item lhs.press = [] | List_Item lhs.pres = loc (Node_List_Item @self @lhs.path) $ presentFocus @lhs.focusD @lhs.path $ @pres `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) | ParseErrList_Item lhs.pres = presParseErr (Node_ParseErrList_Item @self @lhs.path) @error `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) lhs.parseErrors = getErrorMessages @error | HoleList_Item lhs.pres = presHole @lhs.focusD "Item" (Node_HoleList_Item @self @lhs.path) @lhs.path `withLocalPopupMenuItems` (mkPopupItemsFromDocUpdates $ menuD (PathD @lhs.path) @lhs.doc) SEM ConsList_Decl | Cons_Decl head.path = @lhs.path++[@lhs.ix] tail.path = @lhs.path lhs.press = @head.pres : @tail.press head.pIdC = @lhs.pIdC + 30 -- NOT RIGHT, should be taken from document type def. tail.pIdC = @head.pIdC lhs.pIdC = @tail.pIdC tail.ix = @lhs.ix + 1 | Nil_Decl lhs.press = [] SEM ConsList_Alt | Cons_Alt head.path = @lhs.path++[@lhs.ix] tail.path = @lhs.path lhs.press = @head.pres : @tail.press head.pIdC = @lhs.pIdC + 30 -- NOT RIGHT, should be taken from document type def. tail.pIdC = @head.pIdC lhs.pIdC = @tail.pIdC tail.ix = @lhs.ix + 1 | Nil_Alt lhs.press = [] SEM ConsList_Exp | Cons_Exp head.path = @lhs.path++[@lhs.ix] tail.path = @lhs.path lhs.press = @head.pres : @tail.press head.pIdC = @lhs.pIdC + 30 -- NOT RIGHT, should be taken from document type def. tail.pIdC = @head.pIdC lhs.pIdC = @tail.pIdC tail.ix = @lhs.ix + 1 | Nil_Exp lhs.press = [] SEM ConsList_Slide | Cons_Slide head.path = @lhs.path++[@lhs.ix] tail.path = @lhs.path lhs.press = @head.pres : @tail.press head.pIdC = @lhs.pIdC + 30 -- NOT RIGHT, should be taken from document type def. tail.pIdC = @head.pIdC lhs.pIdC = @tail.pIdC tail.ix = @lhs.ix + 1 | Nil_Slide lhs.press = [] SEM ConsList_Item | Cons_Item head.path = @lhs.path++[@lhs.ix] tail.path = @lhs.path lhs.press = @head.pres : @tail.press head.pIdC = @lhs.pIdC + 30 -- NOT RIGHT, should be taken from document type def. tail.pIdC = @head.pIdC lhs.pIdC = @tail.pIdC tail.ix = @lhs.ix + 1 | Nil_Item lhs.press = [] -------------------------------------------------------------------------- -- Synthesized path rules -- -------------------------------------------------------------------------- SEM Root | Root lhs.path = @lhs.path SEM RootE | RootE lhs.path = @lhs.path SEM Decl | Decl lhs.path = @lhs.path | BoardDecl lhs.path = @lhs.path | PPPresentationDecl lhs.path = @lhs.path SEM Ident | Ident lhs.path = @lhs.path SEM Exp | PlusExp lhs.path = @lhs.path | TimesExp lhs.path = @lhs.path | DivExp lhs.path = @lhs.path | PowerExp lhs.path = @lhs.path | BoolExp lhs.path = @lhs.path | IntExp lhs.path = @lhs.path | LamExp lhs.path = @lhs.path | AppExp lhs.path = @lhs.path | CaseExp lhs.path = @lhs.path | LetExp lhs.path = @lhs.path | IdentExp lhs.path = @lhs.path | IfExp lhs.path = @lhs.path | ParenExp lhs.path = @lhs.path | ListExp lhs.path = @lhs.path | ProductExp lhs.path = @lhs.path SEM Alt | Alt lhs.path = @lhs.path SEM Board | Board lhs.path = @lhs.path SEM BoardRow | BoardRow lhs.path = @lhs.path SEM BoardSquare | Queen lhs.path = @lhs.path | King lhs.path = @lhs.path | Bishop lhs.path = @lhs.path | Knight lhs.path = @lhs.path | Rook lhs.path = @lhs.path | Pawn lhs.path = @lhs.path | Empty lhs.path = @lhs.path SEM PPPresentation | PPPresentation lhs.path = @lhs.path SEM Slide | Slide lhs.path = @lhs.path SEM ItemList | ItemList lhs.path = @lhs.path SEM ListType | Bullet lhs.path = @lhs.path | Number lhs.path = @lhs.path | Alpha lhs.path = @lhs.path SEM Item | StringItem lhs.path = @lhs.path | HeliumItem lhs.path = @lhs.path | ListItem lhs.path = @lhs.path SEM List_Decl | List_Decl lhs.path = @lhs.path SEM List_Alt | List_Alt lhs.path = @lhs.path SEM List_Exp | List_Exp lhs.path = @lhs.path SEM List_Slide | List_Slide lhs.path = @lhs.path SEM List_Item | List_Item lhs.path = @lhs.path -------------------------------------------------------------------------- -- Sem functions for XML presentation -- -------------------------------------------------------------------------- SEM Root | Root lhs.presXML = presentElementXML @lhs.focusD (Node_Root @self @lhs.path) @lhs.path "Root" [ @decls.presXML ] | HoleRoot lhs.presXML = presHole @lhs.focusD "Root" (Node_HoleRoot @self @lhs.path) @lhs.path | ParseErrRoot lhs.presXML = presParseErr (Node_ParseErrRoot @self @lhs.path) @error SEM RootE | RootE lhs.presXML = presentElementXML @lhs.focusD (Node_RootE @self @lhs.path) @lhs.path "RootE" [ @decls.presXML, @idListDecls.presXML ] | HoleRootE lhs.presXML = presHole @lhs.focusD "RootE" (Node_HoleRootE @self @lhs.path) @lhs.path | ParseErrRootE lhs.presXML = presParseErr (Node_ParseErrRootE @self @lhs.path) @error SEM Decl | Decl lhs.presXML = presentElementXML @lhs.focusD (Node_Decl @self @lhs.path) @lhs.path "Decl" [ presentPrimXMLBool @expanded, presentPrimXMLBool @autoLayout, @ident.presXML, @exp.presXML ] | BoardDecl lhs.presXML = presentElementXML @lhs.focusD (Node_BoardDecl @self @lhs.path) @lhs.path "BoardDecl" [ @board.presXML ] | PPPresentationDecl lhs.presXML = presentElementXML @lhs.focusD (Node_PPPresentationDecl @self @lhs.path) @lhs.path "PPPresentationDecl" [ @pPPresentation.presXML ] | HoleDecl lhs.presXML = presHole @lhs.focusD "Decl" (Node_HoleDecl @self @lhs.path) @lhs.path | ParseErrDecl lhs.presXML = presParseErr (Node_ParseErrDecl @self @lhs.path) @error SEM Ident | Ident lhs.presXML = presentElementXML @lhs.focusD (Node_Ident @self @lhs.path) @lhs.path "Ident" [ presentPrimXMLString @string ] | HoleIdent lhs.presXML = presHole @lhs.focusD "Ident" (Node_HoleIdent @self @lhs.path) @lhs.path | ParseErrIdent lhs.presXML = presParseErr (Node_ParseErrIdent @self @lhs.path) @error SEM Exp | PlusExp lhs.presXML = presentElementXML @lhs.focusD (Node_PlusExp @self @lhs.path) @lhs.path "PlusExp" [ @exp1.presXML, @exp2.presXML ] | TimesExp lhs.presXML = presentElementXML @lhs.focusD (Node_TimesExp @self @lhs.path) @lhs.path "TimesExp" [ @exp1.presXML, @exp2.presXML ] | DivExp lhs.presXML = presentElementXML @lhs.focusD (Node_DivExp @self @lhs.path) @lhs.path "DivExp" [ @exp1.presXML, @exp2.presXML ] | PowerExp lhs.presXML = presentElementXML @lhs.focusD (Node_PowerExp @self @lhs.path) @lhs.path "PowerExp" [ @exp1.presXML, @exp2.presXML ] | BoolExp lhs.presXML = presentElementXML @lhs.focusD (Node_BoolExp @self @lhs.path) @lhs.path "BoolExp" [ presentPrimXMLBool @bool ] | IntExp lhs.presXML = presentElementXML @lhs.focusD (Node_IntExp @self @lhs.path) @lhs.path "IntExp" [ presentPrimXMLInt @int ] | LamExp lhs.presXML = presentElementXML @lhs.focusD (Node_LamExp @self @lhs.path) @lhs.path "LamExp" [ @ident.presXML, @exp.presXML ] | AppExp lhs.presXML = presentElementXML @lhs.focusD (Node_AppExp @self @lhs.path) @lhs.path "AppExp" [ @exp1.presXML, @exp2.presXML ] | CaseExp lhs.presXML = presentElementXML @lhs.focusD (Node_CaseExp @self @lhs.path) @lhs.path "CaseExp" [ @exp.presXML, @alts.presXML ] | LetExp lhs.presXML = presentElementXML @lhs.focusD (Node_LetExp @self @lhs.path) @lhs.path "LetExp" [ @decls.presXML, @exp.presXML ] | IdentExp lhs.presXML = presentElementXML @lhs.focusD (Node_IdentExp @self @lhs.path) @lhs.path "IdentExp" [ @ident.presXML ] | IfExp lhs.presXML = presentElementXML @lhs.focusD (Node_IfExp @self @lhs.path) @lhs.path "IfExp" [ @exp1.presXML, @exp2.presXML, @exp3.presXML ] | ParenExp lhs.presXML = presentElementXML @lhs.focusD (Node_ParenExp @self @lhs.path) @lhs.path "ParenExp" [ @exp.presXML ] | ListExp lhs.presXML = presentElementXML @lhs.focusD (Node_ListExp @self @lhs.path) @lhs.path "ListExp" [ @exps.presXML ] | ProductExp lhs.presXML = presentElementXML @lhs.focusD (Node_ProductExp @self @lhs.path) @lhs.path "ProductExp" [ @exps.presXML ] | HoleExp lhs.presXML = presHole @lhs.focusD "Exp" (Node_HoleExp @self @lhs.path) @lhs.path | ParseErrExp lhs.presXML = presParseErr (Node_ParseErrExp @self @lhs.path) @error SEM Alt | Alt lhs.presXML = presentElementXML @lhs.focusD (Node_Alt @self @lhs.path) @lhs.path "Alt" [ @ident.presXML, @exp.presXML ] | HoleAlt lhs.presXML = presHole @lhs.focusD "Alt" (Node_HoleAlt @self @lhs.path) @lhs.path | ParseErrAlt lhs.presXML = presParseErr (Node_ParseErrAlt @self @lhs.path) @error SEM Board | Board lhs.presXML = presentElementXML @lhs.focusD (Node_Board @self @lhs.path) @lhs.path "Board" [ @r1.presXML, @r2.presXML, @r3.presXML, @r4.presXML, @r5.presXML, @r6.presXML, @r7.presXML, @r8.presXML ] | HoleBoard lhs.presXML = presHole @lhs.focusD "Board" (Node_HoleBoard @self @lhs.path) @lhs.path | ParseErrBoard lhs.presXML = presParseErr (Node_ParseErrBoard @self @lhs.path) @error SEM BoardRow | BoardRow lhs.presXML = presentElementXML @lhs.focusD (Node_BoardRow @self @lhs.path) @lhs.path "BoardRow" [ @ca.presXML, @cb.presXML, @cc.presXML, @cd.presXML, @ce.presXML, @cf.presXML, @cg.presXML, @ch.presXML ] | HoleBoardRow lhs.presXML = presHole @lhs.focusD "BoardRow" (Node_HoleBoardRow @self @lhs.path) @lhs.path | ParseErrBoardRow lhs.presXML = presParseErr (Node_ParseErrBoardRow @self @lhs.path) @error SEM BoardSquare | Queen lhs.presXML = presentElementXML @lhs.focusD (Node_Queen @self @lhs.path) @lhs.path "Queen" [ presentPrimXMLBool @color ] | King lhs.presXML = presentElementXML @lhs.focusD (Node_King @self @lhs.path) @lhs.path "King" [ presentPrimXMLBool @color ] | Bishop lhs.presXML = presentElementXML @lhs.focusD (Node_Bishop @self @lhs.path) @lhs.path "Bishop" [ presentPrimXMLBool @color ] | Knight lhs.presXML = presentElementXML @lhs.focusD (Node_Knight @self @lhs.path) @lhs.path "Knight" [ presentPrimXMLBool @color ] | Rook lhs.presXML = presentElementXML @lhs.focusD (Node_Rook @self @lhs.path) @lhs.path "Rook" [ presentPrimXMLBool @color ] | Pawn lhs.presXML = presentElementXML @lhs.focusD (Node_Pawn @self @lhs.path) @lhs.path "Pawn" [ presentPrimXMLBool @color ] | Empty lhs.presXML = presentElementXML @lhs.focusD (Node_Empty @self @lhs.path) @lhs.path "Empty" [ ] | HoleBoardSquare lhs.presXML = presHole @lhs.focusD "BoardSquare" (Node_HoleBoardSquare @self @lhs.path) @lhs.path | ParseErrBoardSquare lhs.presXML = presParseErr (Node_ParseErrBoardSquare @self @lhs.path) @error SEM PPPresentation | PPPresentation lhs.presXML = presentElementXML @lhs.focusD (Node_PPPresentation @self @lhs.path) @lhs.path "PPPresentation" [ presentPrimXMLBool @viewType, @slides.presXML ] | HolePPPresentation lhs.presXML = presHole @lhs.focusD "PPPresentation" (Node_HolePPPresentation @self @lhs.path) @lhs.path | ParseErrPPPresentation lhs.presXML = presParseErr (Node_ParseErrPPPresentation @self @lhs.path) @error SEM Slide | Slide lhs.presXML = presentElementXML @lhs.focusD (Node_Slide @self @lhs.path) @lhs.path "Slide" [ presentPrimXMLString @title, @itemList.presXML ] | HoleSlide lhs.presXML = presHole @lhs.focusD "Slide" (Node_HoleSlide @self @lhs.path) @lhs.path | ParseErrSlide lhs.presXML = presParseErr (Node_ParseErrSlide @self @lhs.path) @error SEM ItemList | ItemList lhs.presXML = presentElementXML @lhs.focusD (Node_ItemList @self @lhs.path) @lhs.path "ItemList" [ @listType.presXML, @items.presXML ] | HoleItemList lhs.presXML = presHole @lhs.focusD "ItemList" (Node_HoleItemList @self @lhs.path) @lhs.path | ParseErrItemList lhs.presXML = presParseErr (Node_ParseErrItemList @self @lhs.path) @error SEM ListType | Bullet lhs.presXML = presentElementXML @lhs.focusD (Node_Bullet @self @lhs.path) @lhs.path "Bullet" [ ] | Number lhs.presXML = presentElementXML @lhs.focusD (Node_Number @self @lhs.path) @lhs.path "Number" [ ] | Alpha lhs.presXML = presentElementXML @lhs.focusD (Node_Alpha @self @lhs.path) @lhs.path "Alpha" [ ] | HoleListType lhs.presXML = presHole @lhs.focusD "ListType" (Node_HoleListType @self @lhs.path) @lhs.path | ParseErrListType lhs.presXML = presParseErr (Node_ParseErrListType @self @lhs.path) @error SEM Item | StringItem lhs.presXML = presentElementXML @lhs.focusD (Node_StringItem @self @lhs.path) @lhs.path "StringItem" [ presentPrimXMLString @string ] | HeliumItem lhs.presXML = presentElementXML @lhs.focusD (Node_HeliumItem @self @lhs.path) @lhs.path "HeliumItem" [ @exp.presXML ] | ListItem lhs.presXML = presentElementXML @lhs.focusD (Node_ListItem @self @lhs.path) @lhs.path "ListItem" [ @itemList.presXML ] | HoleItem lhs.presXML = presHole @lhs.focusD "Item" (Node_HoleItem @self @lhs.path) @lhs.path | ParseErrItem lhs.presXML = presParseErr (Node_ParseErrItem @self @lhs.path) @error SEM List_Decl | List_Decl lhs.presXML = loc (Node_List_Decl @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ col @elts.pressXML | ParseErrList_Decl lhs.presXML = loc (Node_List_Decl @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ presParseErr (Node_ParseErrList_Decl @self @lhs.path) @error | HoleList_Decl lhs.presXML = loc (Node_List_Decl @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ presHole @lhs.focusD "List_Decl" (Node_HoleList_Decl @self @lhs.path) @lhs.path SEM List_Alt | List_Alt lhs.presXML = loc (Node_List_Alt @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ col @elts.pressXML | ParseErrList_Alt lhs.presXML = loc (Node_List_Alt @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ presParseErr (Node_ParseErrList_Alt @self @lhs.path) @error | HoleList_Alt lhs.presXML = loc (Node_List_Alt @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ presHole @lhs.focusD "List_Alt" (Node_HoleList_Alt @self @lhs.path) @lhs.path SEM List_Exp | List_Exp lhs.presXML = loc (Node_List_Exp @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ col @elts.pressXML | ParseErrList_Exp lhs.presXML = loc (Node_List_Exp @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ presParseErr (Node_ParseErrList_Exp @self @lhs.path) @error | HoleList_Exp lhs.presXML = loc (Node_List_Exp @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ presHole @lhs.focusD "List_Exp" (Node_HoleList_Exp @self @lhs.path) @lhs.path SEM List_Slide | List_Slide lhs.presXML = loc (Node_List_Slide @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ col @elts.pressXML | ParseErrList_Slide lhs.presXML = loc (Node_List_Slide @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ presParseErr (Node_ParseErrList_Slide @self @lhs.path) @error | HoleList_Slide lhs.presXML = loc (Node_List_Slide @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ presHole @lhs.focusD "List_Slide" (Node_HoleList_Slide @self @lhs.path) @lhs.path SEM List_Item | List_Item lhs.presXML = loc (Node_List_Item @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ col @elts.pressXML | ParseErrList_Item lhs.presXML = loc (Node_List_Item @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ presParseErr (Node_ParseErrList_Item @self @lhs.path) @error | HoleList_Item lhs.presXML = loc (Node_List_Item @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ presHole @lhs.focusD "List_Item" (Node_HoleList_Item @self @lhs.path) @lhs.path SEM ConsList_Decl | Cons_Decl lhs.pressXML = @head.presXML : @tail.pressXML | Nil_Decl lhs.pressXML = [] SEM ConsList_Alt | Cons_Alt lhs.pressXML = @head.presXML : @tail.pressXML | Nil_Alt lhs.pressXML = [] SEM ConsList_Exp | Cons_Exp lhs.pressXML = @head.presXML : @tail.pressXML | Nil_Exp lhs.pressXML = [] SEM ConsList_Slide | Cons_Slide lhs.pressXML = @head.presXML : @tail.pressXML | Nil_Slide lhs.pressXML = [] SEM ConsList_Item | Cons_Item lhs.pressXML = @head.presXML : @tail.pressXML | Nil_Item lhs.pressXML = [] -------------------------------------------------------------------------- -- Sem functions for tree presentation -- -------------------------------------------------------------------------- SEM Root | Root lhs.presTree = presentElementTree @lhs.focusD (Node_Root @self @lhs.path) @lhs.path "Root" [ @decls.presTree ] | HoleRoot lhs.presTree = presHole @lhs.focusD "Root" (Node_HoleRoot @self @lhs.path) @lhs.path | ParseErrRoot lhs.presTree = presParseErr (Node_ParseErrRoot @self @lhs.path) @error SEM RootE | RootE lhs.presTree = presentElementTree @lhs.focusD (Node_RootE @self @lhs.path) @lhs.path "RootE" [ @decls.presTree, @idListDecls.presTree ] | HoleRootE lhs.presTree = presHole @lhs.focusD "RootE" (Node_HoleRootE @self @lhs.path) @lhs.path | ParseErrRootE lhs.presTree = presParseErr (Node_ParseErrRootE @self @lhs.path) @error SEM Decl | Decl lhs.presTree = presentElementTree @lhs.focusD (Node_Decl @self @lhs.path) @lhs.path "Decl" [ presentPrimXMLBool @expanded, presentPrimXMLBool @autoLayout, @ident.presTree, @exp.presTree ] | BoardDecl lhs.presTree = presentElementTree @lhs.focusD (Node_BoardDecl @self @lhs.path) @lhs.path "BoardDecl" [ @board.presTree ] | PPPresentationDecl lhs.presTree = presentElementTree @lhs.focusD (Node_PPPresentationDecl @self @lhs.path) @lhs.path "PPPresentationDecl" [ @pPPresentation.presTree ] | HoleDecl lhs.presTree = presHole @lhs.focusD "Decl" (Node_HoleDecl @self @lhs.path) @lhs.path | ParseErrDecl lhs.presTree = presParseErr (Node_ParseErrDecl @self @lhs.path) @error SEM Ident | Ident lhs.presTree = presentElementTree @lhs.focusD (Node_Ident @self @lhs.path) @lhs.path "Ident" [ presentPrimXMLString @string ] | HoleIdent lhs.presTree = presHole @lhs.focusD "Ident" (Node_HoleIdent @self @lhs.path) @lhs.path | ParseErrIdent lhs.presTree = presParseErr (Node_ParseErrIdent @self @lhs.path) @error SEM Exp | PlusExp lhs.presTree = presentElementTree @lhs.focusD (Node_PlusExp @self @lhs.path) @lhs.path "PlusExp" [ @exp1.presTree, @exp2.presTree ] | TimesExp lhs.presTree = presentElementTree @lhs.focusD (Node_TimesExp @self @lhs.path) @lhs.path "TimesExp" [ @exp1.presTree, @exp2.presTree ] | DivExp lhs.presTree = presentElementTree @lhs.focusD (Node_DivExp @self @lhs.path) @lhs.path "DivExp" [ @exp1.presTree, @exp2.presTree ] | PowerExp lhs.presTree = presentElementTree @lhs.focusD (Node_PowerExp @self @lhs.path) @lhs.path "PowerExp" [ @exp1.presTree, @exp2.presTree ] | BoolExp lhs.presTree = presentElementTree @lhs.focusD (Node_BoolExp @self @lhs.path) @lhs.path "BoolExp" [ presentPrimXMLBool @bool ] | IntExp lhs.presTree = presentElementTree @lhs.focusD (Node_IntExp @self @lhs.path) @lhs.path "IntExp" [ presentPrimXMLInt @int ] | LamExp lhs.presTree = presentElementTree @lhs.focusD (Node_LamExp @self @lhs.path) @lhs.path "LamExp" [ @ident.presTree, @exp.presTree ] | AppExp lhs.presTree = presentElementTree @lhs.focusD (Node_AppExp @self @lhs.path) @lhs.path "AppExp" [ @exp1.presTree, @exp2.presTree ] | CaseExp lhs.presTree = presentElementTree @lhs.focusD (Node_CaseExp @self @lhs.path) @lhs.path "CaseExp" [ @exp.presTree, @alts.presTree ] | LetExp lhs.presTree = presentElementTree @lhs.focusD (Node_LetExp @self @lhs.path) @lhs.path "LetExp" [ @decls.presTree, @exp.presTree ] | IdentExp lhs.presTree = presentElementTree @lhs.focusD (Node_IdentExp @self @lhs.path) @lhs.path "IdentExp" [ @ident.presTree ] | IfExp lhs.presTree = presentElementTree @lhs.focusD (Node_IfExp @self @lhs.path) @lhs.path "IfExp" [ @exp1.presTree, @exp2.presTree, @exp3.presTree ] | ParenExp lhs.presTree = presentElementTree @lhs.focusD (Node_ParenExp @self @lhs.path) @lhs.path "ParenExp" [ @exp.presTree ] | ListExp lhs.presTree = presentElementTree @lhs.focusD (Node_ListExp @self @lhs.path) @lhs.path "ListExp" [ @exps.presTree ] | ProductExp lhs.presTree = presentElementTree @lhs.focusD (Node_ProductExp @self @lhs.path) @lhs.path "ProductExp" [ @exps.presTree ] | HoleExp lhs.presTree = presHole @lhs.focusD "Exp" (Node_HoleExp @self @lhs.path) @lhs.path | ParseErrExp lhs.presTree = presParseErr (Node_ParseErrExp @self @lhs.path) @error SEM Alt | Alt lhs.presTree = presentElementTree @lhs.focusD (Node_Alt @self @lhs.path) @lhs.path "Alt" [ @ident.presTree, @exp.presTree ] | HoleAlt lhs.presTree = presHole @lhs.focusD "Alt" (Node_HoleAlt @self @lhs.path) @lhs.path | ParseErrAlt lhs.presTree = presParseErr (Node_ParseErrAlt @self @lhs.path) @error SEM Board | Board lhs.presTree = presentElementTree @lhs.focusD (Node_Board @self @lhs.path) @lhs.path "Board" [ @r1.presTree, @r2.presTree, @r3.presTree, @r4.presTree, @r5.presTree, @r6.presTree, @r7.presTree, @r8.presTree ] | HoleBoard lhs.presTree = presHole @lhs.focusD "Board" (Node_HoleBoard @self @lhs.path) @lhs.path | ParseErrBoard lhs.presTree = presParseErr (Node_ParseErrBoard @self @lhs.path) @error SEM BoardRow | BoardRow lhs.presTree = presentElementTree @lhs.focusD (Node_BoardRow @self @lhs.path) @lhs.path "BoardRow" [ @ca.presTree, @cb.presTree, @cc.presTree, @cd.presTree, @ce.presTree, @cf.presTree, @cg.presTree, @ch.presTree ] | HoleBoardRow lhs.presTree = presHole @lhs.focusD "BoardRow" (Node_HoleBoardRow @self @lhs.path) @lhs.path | ParseErrBoardRow lhs.presTree = presParseErr (Node_ParseErrBoardRow @self @lhs.path) @error SEM BoardSquare | Queen lhs.presTree = presentElementTree @lhs.focusD (Node_Queen @self @lhs.path) @lhs.path "Queen" [ presentPrimXMLBool @color ] | King lhs.presTree = presentElementTree @lhs.focusD (Node_King @self @lhs.path) @lhs.path "King" [ presentPrimXMLBool @color ] | Bishop lhs.presTree = presentElementTree @lhs.focusD (Node_Bishop @self @lhs.path) @lhs.path "Bishop" [ presentPrimXMLBool @color ] | Knight lhs.presTree = presentElementTree @lhs.focusD (Node_Knight @self @lhs.path) @lhs.path "Knight" [ presentPrimXMLBool @color ] | Rook lhs.presTree = presentElementTree @lhs.focusD (Node_Rook @self @lhs.path) @lhs.path "Rook" [ presentPrimXMLBool @color ] | Pawn lhs.presTree = presentElementTree @lhs.focusD (Node_Pawn @self @lhs.path) @lhs.path "Pawn" [ presentPrimXMLBool @color ] | Empty lhs.presTree = presentElementTree @lhs.focusD (Node_Empty @self @lhs.path) @lhs.path "Empty" [ ] | HoleBoardSquare lhs.presTree = presHole @lhs.focusD "BoardSquare" (Node_HoleBoardSquare @self @lhs.path) @lhs.path | ParseErrBoardSquare lhs.presTree = presParseErr (Node_ParseErrBoardSquare @self @lhs.path) @error SEM PPPresentation | PPPresentation lhs.presTree = presentElementTree @lhs.focusD (Node_PPPresentation @self @lhs.path) @lhs.path "PPPresentation" [ presentPrimXMLBool @viewType, @slides.presTree ] | HolePPPresentation lhs.presTree = presHole @lhs.focusD "PPPresentation" (Node_HolePPPresentation @self @lhs.path) @lhs.path | ParseErrPPPresentation lhs.presTree = presParseErr (Node_ParseErrPPPresentation @self @lhs.path) @error SEM Slide | Slide lhs.presTree = presentElementTree @lhs.focusD (Node_Slide @self @lhs.path) @lhs.path "Slide" [ presentPrimXMLString @title, @itemList.presTree ] | HoleSlide lhs.presTree = presHole @lhs.focusD "Slide" (Node_HoleSlide @self @lhs.path) @lhs.path | ParseErrSlide lhs.presTree = presParseErr (Node_ParseErrSlide @self @lhs.path) @error SEM ItemList | ItemList lhs.presTree = presentElementTree @lhs.focusD (Node_ItemList @self @lhs.path) @lhs.path "ItemList" [ @listType.presTree, @items.presTree ] | HoleItemList lhs.presTree = presHole @lhs.focusD "ItemList" (Node_HoleItemList @self @lhs.path) @lhs.path | ParseErrItemList lhs.presTree = presParseErr (Node_ParseErrItemList @self @lhs.path) @error SEM ListType | Bullet lhs.presTree = presentElementTree @lhs.focusD (Node_Bullet @self @lhs.path) @lhs.path "Bullet" [ ] | Number lhs.presTree = presentElementTree @lhs.focusD (Node_Number @self @lhs.path) @lhs.path "Number" [ ] | Alpha lhs.presTree = presentElementTree @lhs.focusD (Node_Alpha @self @lhs.path) @lhs.path "Alpha" [ ] | HoleListType lhs.presTree = presHole @lhs.focusD "ListType" (Node_HoleListType @self @lhs.path) @lhs.path | ParseErrListType lhs.presTree = presParseErr (Node_ParseErrListType @self @lhs.path) @error SEM Item | StringItem lhs.presTree = presentElementTree @lhs.focusD (Node_StringItem @self @lhs.path) @lhs.path "StringItem" [ presentPrimXMLString @string ] | HeliumItem lhs.presTree = presentElementTree @lhs.focusD (Node_HeliumItem @self @lhs.path) @lhs.path "HeliumItem" [ @exp.presTree ] | ListItem lhs.presTree = presentElementTree @lhs.focusD (Node_ListItem @self @lhs.path) @lhs.path "ListItem" [ @itemList.presTree ] | HoleItem lhs.presTree = presHole @lhs.focusD "Item" (Node_HoleItem @self @lhs.path) @lhs.path | ParseErrItem lhs.presTree = presParseErr (Node_ParseErrItem @self @lhs.path) @error SEM List_Decl | List_Decl lhs.presTree = loc (Node_List_Decl @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ col @elts.pressTree | ParseErrList_Decl lhs.presTree = loc (Node_List_Decl @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ presParseErr (Node_ParseErrList_Decl @self @lhs.path) @error | HoleList_Decl lhs.presTree = loc (Node_List_Decl @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ presHole @lhs.focusD "List_Decl" (Node_HoleList_Decl @self @lhs.path) @lhs.path SEM List_Alt | List_Alt lhs.presTree = loc (Node_List_Alt @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ col @elts.pressTree | ParseErrList_Alt lhs.presTree = loc (Node_List_Alt @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ presParseErr (Node_ParseErrList_Alt @self @lhs.path) @error | HoleList_Alt lhs.presTree = loc (Node_List_Alt @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ presHole @lhs.focusD "List_Alt" (Node_HoleList_Alt @self @lhs.path) @lhs.path SEM List_Exp | List_Exp lhs.presTree = loc (Node_List_Exp @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ col @elts.pressTree | ParseErrList_Exp lhs.presTree = loc (Node_List_Exp @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ presParseErr (Node_ParseErrList_Exp @self @lhs.path) @error | HoleList_Exp lhs.presTree = loc (Node_List_Exp @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ presHole @lhs.focusD "List_Exp" (Node_HoleList_Exp @self @lhs.path) @lhs.path SEM List_Slide | List_Slide lhs.presTree = loc (Node_List_Slide @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ col @elts.pressTree | ParseErrList_Slide lhs.presTree = loc (Node_List_Slide @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ presParseErr (Node_ParseErrList_Slide @self @lhs.path) @error | HoleList_Slide lhs.presTree = loc (Node_List_Slide @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ presHole @lhs.focusD "List_Slide" (Node_HoleList_Slide @self @lhs.path) @lhs.path SEM List_Item | List_Item lhs.presTree = loc (Node_List_Item @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ col @elts.pressTree | ParseErrList_Item lhs.presTree = loc (Node_List_Item @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ presParseErr (Node_ParseErrList_Item @self @lhs.path) @error | HoleList_Item lhs.presTree = loc (Node_List_Item @self @lhs.path) $ structural $ presentFocus @lhs.focusD @lhs.path $ presHole @lhs.focusD "List_Item" (Node_HoleList_Item @self @lhs.path) @lhs.path SEM ConsList_Decl | Cons_Decl lhs.pressTree = @head.presTree : @tail.pressTree | Nil_Decl lhs.pressTree = [] SEM ConsList_Alt | Cons_Alt lhs.pressTree = @head.presTree : @tail.pressTree | Nil_Alt lhs.pressTree = [] SEM ConsList_Exp | Cons_Exp lhs.pressTree = @head.presTree : @tail.pressTree | Nil_Exp lhs.pressTree = [] SEM ConsList_Slide | Cons_Slide lhs.pressTree = @head.presTree : @tail.pressTree | Nil_Slide lhs.pressTree = [] SEM ConsList_Item | Cons_Item lhs.pressTree = @head.presTree : @tail.pressTree | Nil_Item lhs.pressTree = []