úÎ ZüDy      The class  combines two aspects. /Field of an aspect. It associates a production prd with a rule rule.  The class Def) is defined by induction over the record vals $ containing the new definitions.  The function / inserts each definition into the attribution  of the corresponding child.  The type ? states that a rule takes as input the synthesized attributes  of the children sc, and the inherited attributes of the parent ip and returns Z a function from the output constructed thus far (inherited attributes of the children 1 |ic| and synthesized attributes of the parent sp) to the extended output. 6Field of the record of attributions for the children.  A Family   contains a single attribution p for the parent and  a collection of attributions c for the children. Field of an attribution.  The function  1 adds the definition of a synthesized attribute.  It takes a label att. representing the name of the new attribute,  a value valC to be assigned to this attribute, and it builds a function which , updates the output constructed thus far.  The function  + introduces a new inherited attribute for " a collection of non-terminals. & It takes the following parameters:  att(: the attribute which is being defined,  ntsG: the non-terminals with which this attribute is being associated, and  vals=: a record labelled with child names and containing values, M describing how to compute the attribute being defined at each 2 of the applicable child positions. I It builds a function which updates the output constructed thus far.|| Composition of two rules.  Semantic function of a terminal  The function . takes the combined rules for a node and the 4 semantic functions of the children, and builds a ? function from the inherited attributes of the parent to its  synthesized attributes. A copyI rule copies an inherited attribute from the parent to all its children.  The function  takes the name of an attribute att and * an heterogeneous list of non-terminals nts, for which the attribute has to be defined, ' and generates a copy rule for this. A useA rule declares a synthesized attribute that collects information  from some of the children.  The function > takes the following arguments: the attribute to be defined, A the list of non-terminals for which the attribute is defined, = a monoidal operator which combines the attribute values, = and a unit value to be used in those cases where none of ( the children has such an attribute. In the chainB rule a value is threaded in a depth-first way through the tree, J being updated every now and then. For this we have chained attributes R (both inherited and synthesized). If a definition for a synthesized attribute T of the parent with this name is missing we look for the right-most child with a O synthesized attribute of this name. If we are missing a definition for one K of the children, we look for the right-most of its left siblings which > can provide such a value, and if we cannot find it there, 8 we look at the inherited attributes of the father.  The function ( defines an inherited attribute aspect. 4 It takes as arguments: the name of the attribute att,  the list nts2 of non-terminals where the attribute is defined,  the list cpys8 of productions where the copy rule has to be applied,  and a record ; containing the explicit definitions for some productions.  The function * defines a synthesized attribute aspect. =A chained attribute definition introduces both an inherited [ and a synthesized attribute. In this case the pattern to be applied is the chain rule. ˙ľ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šş     ť       !" !# !$ !% &' !( !) *+ *, *- *. */ *0 *1 *2 &3 45678 !9 *: *; *< *= *> *? *@ AB AC AD AE FG FH FI FJ 4K 4L 4M 4N 4O 4P 4Q 4R 4S 4T 4U 4V 4W 4X 4Y 4Z 4[ 4\ 4] 4^ 4_ 4` 4a 4b 4c 4d 4e 4f 4g 4h 4i jk jl jm jn jo jp jq *r *s *t *u *v *w *x *y *z *{ *| *} *~ * *€ * *‚ *ƒ *„ *… *† *‡ *ˆ *‰ *Š ‹Œ ‹ ‹Ž  ‘’“”•“”–“”—“”˜“”™“š›“šœ“š“šž“Ÿ “ŸĄ“Ÿ˘“ŸŁ“Ÿ¤“ŸĽ“ڧ“¨Š“¨Ş“ŤŹ“Ť­“ŤŽ“ŤŽ“ŤŻ“Ť°“”ą“”˛“”ł“”´“”ľ“”ś“ˇ¸“ˇš“ˇş“ˇť“ˇź“ˇ˝“ˇž“ˇż“ˇŔ“ˇÁ“ˇÂ“ˇӷēˇœˇĆ“ˇǓˇČ“ˇɓˇĘ“ˇ˓ˇ̓ˇÍ“ˇΓˇĎ“ˇГˇŃ“ˇғˇÓ“ˇԓšŐ“šÖ“š×“šŘ“šŮ“šÚ“šŰ“šÜ“šÝ“šŢ“šߓšߓšŕ“šŕ“šᓚⓚ㓚䓚哚哚據瓚蓚铚ꓚ듚쓚퓚đ“šń“šň“šó“šô“šő“šö“š÷“šř“šů“šú“šű“šü“šý“šţ“š˙“š“š“š“š“š“““““ “ “ “ “ “Ÿ “Ÿ“Ÿ“Ÿ“Ÿ“Ÿ“Ÿ“Ÿ““““““““““““ !“ "“ #“ $“ %“ &“ '“ (“ )“ *“ +“ ,“ -“ .“ /“ 0“ 1“ 2“ 3“Ś4“Ś5“Ś6“Ś7“Ś8“Ś9“Ś:“Ś;“Ś<“Ś=“Ś>“Ś?“Ś@“ŚA“ŚB“ŚC“ŚD“ŚE“ŚF“ŚG“ŚH“ŚI“ŚJ“ŚK“LM“LN“LO“LP“LQ“RS“RT“RU“RV“RW“RX“RY“RZ“R[“R\“R]“R^“R_“R`“Ra“Rb“Rb“Rc“Rc“Rd“Re“Rf“Rg“Rh“Ri“Rj“Rk“Rl“Rm“Rn“Ro“Rp“Rq“Rr“Rs“Rt“Ru“Rv“Rw“Rw“Rx“Ry“Rz“R{“R|“R}“R~“R~“R“R“R€“R€“R“R“R‚“Rƒ“R„“R…“R†“R‡“Rˆ“R‰“RŠ“R‹“RŒ“R“RŽ“R“R“R‘“R’“R““R”“R•“R–“R—“R˜“R˜“R™“R™“Rš“R›“œ“œž“œŸ“œ “œĄ“œ˘“œŁ“œ¤“œĽ“œŚ“œ§“œ¨“œŠ“œŞ“œŤ“œŹ“œ­“œŽ“œŻ“œ°“œą“œ˛“œł“œ´“œľ“œś“œˇ“œ¸“œš“œş“œş“œť“œť“œź“œ˝“œž“œż“œŔ“œÁ“œ“œÓœēœĹĆAspectAG-0.1.2 Data.AspectAGData.AspectAG.DeriveAtat defAspect attAspect.+.PrdRuleChiFamAttsyndefinhdefextsem_Litknitcopyusechain inhAspect synAspect chnAspectlhsdefattLabel attLabelsderiveAGComDefsdefsbaseGHC.Basefail>>=>>returnControl.Monad.FixmfixMonadFunctor Data.TypeableTypeable Typeable1 Typeable2 Typeable3 Typeable4 Typeable5 Typeable6 Typeable7MonadFix Control.Monad MonadPlusghc-primGHC.Prim RealWorldfmapcast showsTypeRep mkTyConAppmkTyContypeOfTyConTypeRepGHC.STSTunsafeInterleaveSTfixSTrunST GHC.STRefSTRefnewSTRef readSTRef writeSTRefmzeromplus=<<sequence sequence_mapMmapM_guardfilterMforMforM_msum>=><=<foreverjoin mapAndUnzipMzipWithM zipWithM_foldMfoldM_ replicateM replicateM_whenunlessliftMliftM2liftM3liftM4liftM5ap GHC.IOBaseIORefstToIO unsafeIOToST unsafeSTToIOnewIORef readIORef writeIOReftypeOf7typeOf6typeOf5typeOf4typeOf3typeOf2typeOf1 typeRepKeymkFunTy splitTyConApp funResultTymkAppTy typeRepTyCon typeRepArgs tyConString typeOfDefaulttypeOf1DefaulttypeOf2DefaulttypeOf3DefaulttypeOf4DefaulttypeOf5DefaulttypeOf6Defaultgcastgcast1gcast2 Data.IORef mkWeakIORef modifyIORefatomicModifyIORef Data.Functionfix Data.STRef modifySTRef HList-0.2Data.HList.GhcSyntax.<++..<..^..@..-.Data.HList.RecordhTPupdateAtLabel hRenameLabelhProjectByLabels2hDeleteAtLabelData.HList.TIP tipySplit tipyProject tipyUpdate tipyDeleteonTIPhExtend'Data.HList.HArray hSplitByHNats Data.HListconcrete#Data.HList.Variant unVariant mkVariantVarianthMaybiedHMaybied.!..=..*.:*::=::+:Data.HList.GhcRecord proxyTcName hFieldTcName recordTcName hConsTcName hNilTcNamenilLub hasNoProxies hUnproxyLabel ProxyFound HasNoProxiesnarrowMNarrowMnarrowM'NarrowM' narrowM'' NarrowM''narrowNarrow lubNarrow LubNarrowNilLubconsLubConsLubhLubHLubequivR RecordEquivequivR' RecordEquiv' hRearrangehProjectByLabels recordValues recordLabels recordLabels' emptyRecordmkRecord newLVPair labelLVPair valueLVPairLVPairRecord HRLabelSet HRLabelSet' HLabelSet HLabelSet'DuplicatedLabel RecordLabels recordValues' RecordValuesshowComponentsShowComponents showLabel ShowLabelhLookupByLabelHasFieldhLookupByLabel' HasField'h2projectByLabelsH2ProjectByLabelsh2projectByLabels'H2ProjectByLabels' hLeftUnion HLeftUnionhLeftUnionBoolHLeftUnionBoolunionSR UnionSymRecunionSR' UnionSymRec' hRearrange2 HRearrange hRearrange2' HRearrange' ExtraField FieldNotFoundData.HList.HZip HZippablehUnziphZipHZipData.HList.TICunTICmkTICTIC HTypeProxiedoneTruetupleemptyTIPunTIPmkTIPTIP HTypeIndexedData.HList.HTypeIndexedhSplitByProxieshProjectByProxies hUpdateAtTypehDeleteAtProxy hType2HNathDeleteManyCaseHDeleteManyCase HType2HNatHType2HNatCase hTypes2HNats HTypes2HNatsData.HList.HOccurs hOccursMany HOccursMany hOccursMany1 HOccursMany1 hOccursFst HOccursFsthOccursHOccurs TypeNotFoundhOccurs'HOccurs' hOccursBool HOccursBool hOccursOpt HOccursOpt TypeFound HOccursNothProjectHProjecthSinglehLength hLookupByHNat HLookupByHNat hDeleteAtHNat HDeleteAtHNat hUpdateAtHNat HUpdateAtHNathSplitByHNats'HSplitByHNats'hProjectByHNatsHProjectByHNatshProjectAwayByHNatsHProjectAwayByHNatshBetweenHBetweenhDiffHDiff hOrdMember HOrdMemberHLength HMaxLength HMinLength HSingletonData.HList.GhcExperimentsfunType hDeleteMany HDeleteManyIsTC1IsTC2Data.HList.HListPreludehFlaghRmTaghAddTaghTMemberhMemberhMap'hAppend'append'hMapM_hMapMhBuildhEndappendhConshNilHNilHConsHListhHeadHHeadhTailHTailhExtendHExtendhAppendHAppendhReverseHReverse hReverse' HReverse' naiveHReverse NaiveHReversehBuild'HBuild'applyApplyIdhFoldrHFoldrhMapHMaphMapOutHMapOut ApplyHConsHMap'HShowHSeq hStagedEq' HStagedEq'HNatsHSethFindHFindhFind'HFind'HMemberHMemberM HMemberM'HTMember hTIntersect HTIntersecthTIntersectBoolHTIntersectBool hList2List HList2ListtoHJustToHJust fromHJust FromHJustHAddTagHRmTaghSplitHSplitData.HList.FakePreludesubType typeEqFalse typeEqTrueunProxytoProxyproxyproxyEqtypeEqhLthEqhPredhSucchZerohFalsehTrueHTrueHFalseHBoolhAndHAndhOrHOrhCondHCondHZeroHSuccHNat hNat2Integral HNat2IntegralHNothingHJustHEq hStagedEq HStagedEqHLtTypeEqProxy TypeEqTrue TypeEqFalseSubTypeFail