summaryrefslogtreecommitdiff
path: root/tests/lexers/clean
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lexers/clean')
-rw-r--r--tests/lexers/clean/example.txt2145
1 files changed, 2145 insertions, 0 deletions
diff --git a/tests/lexers/clean/example.txt b/tests/lexers/clean/example.txt
new file mode 100644
index 00000000..fc26e7a0
--- /dev/null
+++ b/tests/lexers/clean/example.txt
@@ -0,0 +1,2145 @@
+---input---
+implementation module StdGeneric
+
+/**
+ * NOTE: this is a collection of different tricky parts of Clean modules (even
+ * though the file is simply called StdGeneric.icl). The code is taken from:
+ *
+ * - StdGeneric (StdEnv)
+ * - Graphics.Scalable.Image (Platform)
+ */
+
+import StdInt, StdMisc, StdClass, StdFunc
+
+generic bimap a b :: Bimap .a .b
+
+bimapId :: Bimap .a .a
+bimapId = { map_to = id, map_from = id }
+
+bimap{|c|} = { map_to = id, map_from = id }
+
+bimap{|PAIR|} bx by = { map_to= map_to, map_from=map_from }
+where
+ map_to (PAIR x y) = PAIR (bx.map_to x) (by.map_to y)
+ map_from (PAIR x y) = PAIR (bx.map_from x) (by.map_from y)
+bimap{|EITHER|} bl br = { map_to= map_to, map_from=map_from }
+where
+ map_to (LEFT x) = LEFT (bl.map_to x)
+ map_to (RIGHT x) = RIGHT (br.map_to x)
+ map_from (LEFT x) = LEFT (bl.map_from x)
+ map_from (RIGHT x) = RIGHT (br.map_from x)
+
+bimap{|(->)|} barg bres = { map_to = map_to, map_from = map_from }
+where
+ map_to f = comp3 bres.map_to f barg.map_from
+ map_from f = comp3 bres.map_from f barg.map_to
+
+bimap{|CONS|} barg = { map_to= map_to, map_from=map_from }
+where
+ map_to (CONS x) = CONS (barg.map_to x)
+ map_from (CONS x) = CONS (barg.map_from x)
+
+bimap{|FIELD|} barg = { map_to= map_to, map_from=map_from }
+where
+ map_to (FIELD x) = FIELD (barg.map_to x)
+ map_from (FIELD x) = FIELD (barg.map_from x)
+
+bimap{|OBJECT|} barg = { map_to= map_to, map_from=map_from }
+where
+ map_to (OBJECT x) = OBJECT (barg.map_to x)
+ map_from (OBJECT x) = OBJECT (barg.map_from x)
+
+bimap{|Bimap|} x y = {map_to = map_to, map_from = map_from}
+where
+ map_to {map_to, map_from} =
+ { map_to = comp3 y.map_to map_to x.map_from
+ , map_from = comp3 x.map_to map_from y.map_from
+ }
+ map_from {map_to, map_from} =
+ { map_to = comp3 y.map_from map_to x.map_to
+ , map_from = comp3 x.map_from map_from y.map_to
+ }
+
+comp3 :: !(.a -> .b) u:(.c -> .a) !(.d -> .c) -> u:(.d -> .b)
+comp3 f g h
+ | is_id f
+ | is_id h
+ = cast g
+ = cast (\x -> g (h x))
+ | is_id h
+ = cast (\x -> f (g x))
+ = \x -> f (g (h x))
+where
+ is_id :: !.(.a -> .b) -> Bool
+ is_id f = code inline
+ {
+ eq_desc e_StdFunc_did 0 0
+ pop_a 1
+ }
+
+ cast :: !u:a -> u:b
+ cast f = code inline
+ {
+ pop_a 0
+ }
+
+getConsPath :: !GenericConsDescriptor -> [ConsPos]
+getConsPath {gcd_index, gcd_type_def={gtd_num_conses}}
+ = doit gcd_index gtd_num_conses
+where
+ doit i n
+ | n == 0
+ = abort "getConsPath: zero conses\n"
+ | i >= n
+ = abort "getConsPath: cons index >= number of conses"
+ | n == 1
+ = []
+ | i < (n/2)
+ = [ ConsLeft : doit i (n/2) ]
+ | otherwise
+ = [ ConsRight : doit (i - (n/2)) (n - (n/2)) ]
+
+:: NoAttr m = NoAttr
+:: DashAttr m = { dash :: ![Int] }
+:: FillAttr m = { fill :: !SVGColor }
+:: LineEndMarker m = { endmarker :: !Image m }
+:: LineMidMarker m = { midmarker :: !Image m }
+:: LineStartMarker m = { startmarker :: !Image m }
+:: MaskAttr m = { mask :: !Image m }
+:: OpacityAttr m = { opacity :: !Real }
+:: StrokeAttr m = { stroke :: !SVGColor }
+:: StrokeWidthAttr m = { strokewidth :: !Span }
+:: XRadiusAttr m = { xradius :: !Span }
+:: YRadiusAttr m = { yradius :: !Span }
+
+
+instance tuneImage NoAttr where tuneImage image _ = image
+instance tuneImage DashAttr where tuneImage image attr = Attr` (BasicImageAttr` (BasicImgDashAttr attr.DashAttr.dash)) image
+instance tuneImage FillAttr where tuneImage image attr = Attr` (BasicImageAttr` (BasicImgFillAttr attr.FillAttr.fill)) image
+instance tuneImage LineEndMarker where tuneImage image attr = Attr` (LineMarkerAttr` {LineMarkerAttr | markerImg = attr.LineEndMarker.endmarker, markerPos = LineMarkerEnd}) image
+instance tuneImage LineMidMarker where tuneImage image attr = Attr` (LineMarkerAttr` {LineMarkerAttr | markerImg = attr.LineMidMarker.midmarker, markerPos = LineMarkerMid}) image
+instance tuneImage LineStartMarker where tuneImage image attr = Attr` (LineMarkerAttr` {LineMarkerAttr | markerImg = attr.LineStartMarker.startmarker, markerPos = LineMarkerStart}) image
+instance tuneImage MaskAttr where tuneImage image attr = Attr` (MaskAttr` attr.MaskAttr.mask) image
+instance tuneImage OpacityAttr where tuneImage image attr = Attr` (BasicImageAttr` (BasicImgFillOpacityAttr attr.OpacityAttr.opacity)) image
+instance tuneImage StrokeAttr where tuneImage image attr = Attr` (BasicImageAttr` (BasicImgStrokeAttr attr.StrokeAttr.stroke)) image
+instance tuneImage StrokeWidthAttr where tuneImage image attr = Attr` (BasicImageAttr` (BasicImgStrokeWidthAttr attr.StrokeWidthAttr.strokewidth)) image
+instance tuneImage XRadiusAttr where tuneImage image attr = Attr` (BasicImageAttr` (BasicImgXRadiusAttr attr.XRadiusAttr.xradius)) image
+instance tuneImage YRadiusAttr where tuneImage image attr = Attr` (BasicImageAttr` (BasicImgYRadiusAttr attr.YRadiusAttr.yradius)) image
+
+instance tuneImage DraggableAttr where tuneImage image attr = Attr` (HandlerAttr` (ImgEventhandlerDraggableAttr attr)) image
+instance tuneImage OnClickAttr where tuneImage image attr = Attr` (HandlerAttr` (ImgEventhandlerOnClickAttr attr)) image
+instance tuneImage OnMouseDownAttr where tuneImage image attr = Attr` (HandlerAttr` (ImgEventhandlerOnMouseDownAttr attr)) image
+instance tuneImage OnMouseMoveAttr where tuneImage image attr = Attr` (HandlerAttr` (ImgEventhandlerOnMouseMoveAttr attr)) image
+instance tuneImage OnMouseOutAttr where tuneImage image attr = Attr` (HandlerAttr` (ImgEventhandlerOnMouseOutAttr attr)) image
+instance tuneImage OnMouseOverAttr where tuneImage image attr = Attr` (HandlerAttr` (ImgEventhandlerOnMouseOverAttr attr)) image
+instance tuneImage OnMouseUpAttr where tuneImage image attr = Attr` (HandlerAttr` (ImgEventhandlerOnMouseUpAttr attr)) image
+
+---tokens---
+'implementation' Keyword.Namespace
+' ' Text.Whitespace
+'module' Keyword.Namespace
+' ' Text.Whitespace
+'StdGeneric' Name.Class
+'\n\n' Text.Whitespace
+
+'/*' Comment.Multi
+'*' Comment.Multi
+'\n ' Comment.Multi
+'*' Comment.Multi
+' NOTE: this is a collection of different tricky parts of Clean modules (even\n ' Comment.Multi
+'*' Comment.Multi
+' though the file is simply called StdGeneric.icl). The code is taken from:\n ' Comment.Multi
+'*' Comment.Multi
+'\n ' Comment.Multi
+'*' Comment.Multi
+' - StdGeneric (StdEnv)\n ' Comment.Multi
+'*' Comment.Multi
+' - Graphics.Scalable.Image (Platform)\n ' Comment.Multi
+'*/' Comment.Multi
+'\n\n' Text.Whitespace
+
+'import' Keyword
+' ' Text.Whitespace
+'StdInt' Name.Class
+',' Punctuation
+' ' Text.Whitespace
+'StdMisc' Name.Class
+',' Punctuation
+' ' Text.Whitespace
+'StdClass' Name.Class
+',' Punctuation
+' ' Text.Whitespace
+'StdFunc' Name.Class
+'\n\n' Text.Whitespace
+
+'generic' Name.Class
+' ' Text.Whitespace
+'bimap' Name.Class
+' ' Text.Whitespace
+'a' Name
+' ' Text.Whitespace
+'b' Name
+' ' Text.Whitespace
+'::' Operator
+' ' Text.Whitespace
+'Bimap' Name.Class
+' ' Text.Whitespace
+'.' Operator
+'a' Name
+' ' Text.Whitespace
+'.' Operator
+'b' Name
+'\n\n' Text.Whitespace
+
+'bimapId' Name
+' ' Text.Whitespace
+'::' Operator
+' ' Text.Whitespace
+'Bimap' Name.Class
+' ' Text.Whitespace
+'.' Operator
+'a' Name
+' ' Text.Whitespace
+'.' Operator
+'a' Name
+'\n' Text.Whitespace
+
+'bimapId' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'map_to' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'id' Name
+',' Punctuation
+' ' Text.Whitespace
+'map_from' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'id' Name
+' ' Text.Whitespace
+'}' Punctuation
+'\n\n' Text.Whitespace
+
+'bimap' Name
+'{' Punctuation
+'|' Operator
+'c' Name
+'|' Operator
+'}' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'map_to' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'id' Name
+',' Punctuation
+' ' Text.Whitespace
+'map_from' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'id' Name
+' ' Text.Whitespace
+'}' Punctuation
+'\n\n' Text.Whitespace
+
+'bimap' Name
+'{' Punctuation
+'|' Operator
+'PAIR' Name.Class
+'|' Operator
+'}' Punctuation
+' ' Text.Whitespace
+'bx' Name
+' ' Text.Whitespace
+'by' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'map_to' Name
+'=' Operator
+' ' Text.Whitespace
+'map_to' Name
+',' Punctuation
+' ' Text.Whitespace
+'map_from' Name
+'=' Operator
+'map_from' Name
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'where' Keyword
+'\n\t' Text.Whitespace
+'map_to' Name
+' ' Text.Whitespace
+'(' Punctuation
+'PAIR' Name.Class
+' ' Text.Whitespace
+'x' Name
+' ' Text.Whitespace
+'y' Name
+')' Punctuation
+' \t' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'PAIR' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'bx' Name
+'.' Operator
+'map_to' Name
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+' ' Text.Whitespace
+'(' Punctuation
+'by' Name
+'.' Operator
+'map_to' Name
+' ' Text.Whitespace
+'y' Name
+')' Punctuation
+'\n\t' Text.Whitespace
+'map_from' Name
+' ' Text.Whitespace
+'(' Punctuation
+'PAIR' Name.Class
+' ' Text.Whitespace
+'x' Name
+' ' Text.Whitespace
+'y' Name
+')' Punctuation
+' \t' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'PAIR' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'bx' Name
+'.' Operator
+'map_from' Name
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+' ' Text.Whitespace
+'(' Punctuation
+'by' Name
+'.' Operator
+'map_from' Name
+' ' Text.Whitespace
+'y' Name
+')' Punctuation
+'\n' Text.Whitespace
+
+'bimap' Name
+'{' Punctuation
+'|' Operator
+'EITHER' Name.Class
+'|' Operator
+'}' Punctuation
+' ' Text.Whitespace
+'bl' Name
+' ' Text.Whitespace
+'br' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'map_to' Name
+'=' Operator
+' ' Text.Whitespace
+'map_to' Name
+',' Punctuation
+' ' Text.Whitespace
+'map_from' Name
+'=' Operator
+'map_from' Name
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'where' Keyword
+'\t\n\t' Text.Whitespace
+'map_to' Name
+' ' Text.Whitespace
+'(' Punctuation
+'LEFT' Name.Class
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+' \t' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'LEFT' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'bl' Name
+'.' Operator
+'map_to' Name
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+'\n\t' Text.Whitespace
+'map_to' Name
+' ' Text.Whitespace
+'(' Punctuation
+'RIGHT' Name.Class
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+'\t' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'RIGHT' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'br' Name
+'.' Operator
+'map_to' Name
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+'\n\t' Text.Whitespace
+'map_from' Name
+' ' Text.Whitespace
+'(' Punctuation
+'LEFT' Name.Class
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+' \t' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'LEFT' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'bl' Name
+'.' Operator
+'map_from' Name
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+'\n\t' Text.Whitespace
+'map_from' Name
+' ' Text.Whitespace
+'(' Punctuation
+'RIGHT' Name.Class
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+' \t' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'RIGHT' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'br' Name
+'.' Operator
+'map_from' Name
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+'\n\n' Text.Whitespace
+
+'bimap' Name
+'{' Punctuation
+'|' Operator
+'(' Punctuation
+'->' Operator
+')' Punctuation
+'|' Operator
+'}' Punctuation
+' ' Text.Whitespace
+'barg' Name
+' ' Text.Whitespace
+'bres' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'map_to' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'map_to' Name
+',' Punctuation
+' ' Text.Whitespace
+'map_from' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'map_from' Name
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'where' Keyword
+'\n\t' Text.Whitespace
+'map_to' Name
+' ' Text.Whitespace
+'f' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'comp3' Name
+' ' Text.Whitespace
+'bres' Name
+'.' Operator
+'map_to' Name
+' ' Text.Whitespace
+'f' Name
+' ' Text.Whitespace
+'barg' Name
+'.' Operator
+'map_from' Name
+'\n\t' Text.Whitespace
+'map_from' Name
+' ' Text.Whitespace
+'f' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'comp3' Name
+' ' Text.Whitespace
+'bres' Name
+'.' Operator
+'map_from' Name
+' ' Text.Whitespace
+'f' Name
+' ' Text.Whitespace
+'barg' Name
+'.' Operator
+'map_to' Name
+'\n\n' Text.Whitespace
+
+'bimap' Name
+'{' Punctuation
+'|' Operator
+'CONS' Name.Class
+'|' Operator
+'}' Punctuation
+' ' Text.Whitespace
+'barg' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'map_to' Name
+'=' Operator
+' ' Text.Whitespace
+'map_to' Name
+',' Punctuation
+' ' Text.Whitespace
+'map_from' Name
+'=' Operator
+'map_from' Name
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'where' Keyword
+'\n\t' Text.Whitespace
+'map_to' Name
+' ' Text.Whitespace
+'(' Punctuation
+'CONS' Name.Class
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'CONS' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'barg' Name
+'.' Operator
+'map_to' Name
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+'\n\t' Text.Whitespace
+'map_from' Name
+' ' Text.Whitespace
+'(' Punctuation
+'CONS' Name.Class
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'CONS' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'barg' Name
+'.' Operator
+'map_from' Name
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+'\n\n' Text.Whitespace
+
+'bimap' Name
+'{' Punctuation
+'|' Operator
+'FIELD' Name.Class
+'|' Operator
+'}' Punctuation
+' ' Text.Whitespace
+'barg' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'map_to' Name
+'=' Operator
+' ' Text.Whitespace
+'map_to' Name
+',' Punctuation
+' ' Text.Whitespace
+'map_from' Name
+'=' Operator
+'map_from' Name
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'where' Keyword
+'\n\t' Text.Whitespace
+'map_to' Name
+' ' Text.Whitespace
+'(' Punctuation
+'FIELD' Name.Class
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'FIELD' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'barg' Name
+'.' Operator
+'map_to' Name
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+'\n\t' Text.Whitespace
+'map_from' Name
+' ' Text.Whitespace
+'(' Punctuation
+'FIELD' Name.Class
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'FIELD' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'barg' Name
+'.' Operator
+'map_from' Name
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+'\n\n' Text.Whitespace
+
+'bimap' Name
+'{' Punctuation
+'|' Operator
+'OBJECT' Name.Class
+'|' Operator
+'}' Punctuation
+' ' Text.Whitespace
+'barg' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'map_to' Name
+'=' Operator
+' ' Text.Whitespace
+'map_to' Name
+',' Punctuation
+' ' Text.Whitespace
+'map_from' Name
+'=' Operator
+'map_from' Name
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'where' Keyword
+'\n\t' Text.Whitespace
+'map_to' Name
+' ' Text.Whitespace
+'(' Punctuation
+'OBJECT' Name.Class
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'OBJECT' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'barg' Name
+'.' Operator
+'map_to' Name
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+'\n\t' Text.Whitespace
+'map_from' Name
+' ' Text.Whitespace
+'(' Punctuation
+'OBJECT' Name.Class
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'OBJECT' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'barg' Name
+'.' Operator
+'map_from' Name
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+'\n\n' Text.Whitespace
+
+'bimap' Name
+'{' Punctuation
+'|' Operator
+'Bimap' Name.Class
+'|' Operator
+'}' Punctuation
+' ' Text.Whitespace
+'x' Name
+' ' Text.Whitespace
+'y' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'{' Punctuation
+'map_to' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'map_to' Name
+',' Punctuation
+' ' Text.Whitespace
+'map_from' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'map_from' Name
+'}' Punctuation
+'\n' Text.Whitespace
+
+'where' Keyword
+'\n\t' Text.Whitespace
+'map_to' Name
+' \t' Text.Whitespace
+'{' Punctuation
+'map_to' Name
+',' Punctuation
+' ' Text.Whitespace
+'map_from' Name
+'}' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' \n\t\t' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'map_to' Name
+' \t' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'comp3' Name
+' ' Text.Whitespace
+'y' Name
+'.' Operator
+'map_to' Name
+' ' Text.Whitespace
+'map_to' Name
+' ' Text.Whitespace
+'x' Name
+'.' Operator
+'map_from' Name
+'\n\t\t' Text.Whitespace
+',' Punctuation
+' ' Text.Whitespace
+'map_from' Name
+' \t' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'comp3' Name
+' ' Text.Whitespace
+'x' Name
+'.' Operator
+'map_to' Name
+' ' Text.Whitespace
+'map_from' Name
+' ' Text.Whitespace
+'y' Name
+'.' Operator
+'map_from' Name
+'\n\t\t' Text.Whitespace
+'}' Punctuation
+'\n\t' Text.Whitespace
+'map_from' Name
+' ' Text.Whitespace
+'{' Punctuation
+'map_to' Name
+',' Punctuation
+' ' Text.Whitespace
+'map_from' Name
+'}' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' \n\t\t' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'map_to' Name
+' \t' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'comp3' Name
+' ' Text.Whitespace
+'y' Name
+'.' Operator
+'map_from' Name
+' ' Text.Whitespace
+'map_to' Name
+' ' Text.Whitespace
+'x' Name
+'.' Operator
+'map_to' Name
+'\n\t\t' Text.Whitespace
+',' Punctuation
+' ' Text.Whitespace
+'map_from' Name
+' \t' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'comp3' Name
+' ' Text.Whitespace
+'x' Name
+'.' Operator
+'map_from' Name
+' ' Text.Whitespace
+'map_from' Name
+' ' Text.Whitespace
+'y' Name
+'.' Operator
+'map_to' Name
+'\n\t\t' Text.Whitespace
+'}' Punctuation
+'\n\n' Text.Whitespace
+
+'comp3' Name
+' ' Text.Whitespace
+'::' Operator
+' ' Text.Whitespace
+'!' Operator
+'(' Punctuation
+'.' Operator
+'a' Name
+' ' Text.Whitespace
+'->' Operator
+' ' Text.Whitespace
+'.' Operator
+'b' Name
+')' Punctuation
+' ' Text.Whitespace
+'u' Name
+':' Operator
+'(' Punctuation
+'.' Operator
+'c' Name
+' ' Text.Whitespace
+'->' Operator
+' ' Text.Whitespace
+'.' Operator
+'a' Name
+')' Punctuation
+' ' Text.Whitespace
+'!' Operator
+'(' Punctuation
+'.' Operator
+'d' Name
+' ' Text.Whitespace
+'->' Operator
+' ' Text.Whitespace
+'.' Operator
+'c' Name
+')' Punctuation
+' ' Text.Whitespace
+'->' Operator
+' ' Text.Whitespace
+'u' Name
+':' Operator
+'(' Punctuation
+'.' Operator
+'d' Name
+' ' Text.Whitespace
+'->' Operator
+' ' Text.Whitespace
+'.' Operator
+'b' Name
+')' Punctuation
+'\n' Text.Whitespace
+
+'comp3' Name
+' ' Text.Whitespace
+'f' Name
+' ' Text.Whitespace
+'g' Name
+' ' Text.Whitespace
+'h' Name
+'\n\t' Text.Whitespace
+'|' Operator
+' ' Text.Whitespace
+'is_id' Name
+' ' Text.Whitespace
+'f' Name
+'\n\t\t' Text.Whitespace
+'|' Operator
+' ' Text.Whitespace
+'is_id' Name
+' ' Text.Whitespace
+'h' Name
+'\n\t\t\t' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'cast' Name
+' ' Text.Whitespace
+'g' Name
+'\n\t\t\t' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'cast' Name
+' ' Text.Whitespace
+'(' Punctuation
+'\\' Operator
+'x' Name
+' ' Text.Whitespace
+'->' Operator
+' ' Text.Whitespace
+'g' Name
+' ' Text.Whitespace
+'(' Punctuation
+'h' Name
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+')' Punctuation
+'\n\t\t' Text.Whitespace
+'|' Operator
+' ' Text.Whitespace
+'is_id' Name
+' ' Text.Whitespace
+'h' Name
+'\n\t\t\t' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'cast' Name
+' ' Text.Whitespace
+'(' Punctuation
+'\\' Operator
+'x' Name
+' ' Text.Whitespace
+'->' Operator
+' ' Text.Whitespace
+'f' Name
+' ' Text.Whitespace
+'(' Punctuation
+'g' Name
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+')' Punctuation
+'\n\t\t\t' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'\\' Operator
+'x' Name
+' ' Text.Whitespace
+'->' Operator
+' ' Text.Whitespace
+'f' Name
+' ' Text.Whitespace
+'(' Punctuation
+'g' Name
+' ' Text.Whitespace
+'(' Punctuation
+'h' Name
+' ' Text.Whitespace
+'x' Name
+')' Punctuation
+')' Punctuation
+'\n' Text.Whitespace
+
+'where' Keyword
+'\n\t' Text.Whitespace
+'is_id' Name
+' ' Text.Whitespace
+'::' Operator
+' ' Text.Whitespace
+'!.' Operator
+'(' Punctuation
+'.' Operator
+'a' Name
+' ' Text.Whitespace
+'->' Operator
+' ' Text.Whitespace
+'.' Operator
+'b' Name
+')' Punctuation
+' ' Text.Whitespace
+'->' Operator
+' ' Text.Whitespace
+'Bool' Name.Class
+'\n\t' Text.Whitespace
+'is_id' Name
+' ' Text.Whitespace
+'f' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'code inline' Keyword
+'\n\t' Text.Whitespace
+'{' Punctuation
+'\n\t\t' Text.Whitespace
+'eq_desc' Name
+' ' Text.Whitespace
+'e_StdFunc_did' Name
+' ' Text.Whitespace
+'0' Literal.Number.Integer
+' ' Text.Whitespace
+'0' Literal.Number.Integer
+'\n\t\t' Text.Whitespace
+'pop_a' Name
+' ' Text.Whitespace
+'1' Literal.Number.Integer
+'\n\t' Text.Whitespace
+'}' Punctuation
+'\n\t\n\t' Text.Whitespace
+'cast' Name
+' ' Text.Whitespace
+'::' Operator
+' ' Text.Whitespace
+'!' Operator
+'u' Name
+':' Operator
+'a' Name
+' ' Text.Whitespace
+'->' Operator
+' ' Text.Whitespace
+'u' Name
+':' Operator
+'b' Name
+'\n\t' Text.Whitespace
+'cast' Name
+' ' Text.Whitespace
+'f' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'code inline' Keyword
+'\n\t' Text.Whitespace
+'{' Punctuation
+'\n\t\t' Text.Whitespace
+'pop_a' Name
+' ' Text.Whitespace
+'0' Literal.Number.Integer
+'\n\t' Text.Whitespace
+'}' Punctuation
+'\n\n' Text.Whitespace
+
+'getConsPath' Name
+' ' Text.Whitespace
+'::' Operator
+' ' Text.Whitespace
+'!' Operator
+'GenericConsDescriptor' Name.Class
+' ' Text.Whitespace
+'->' Operator
+' ' Text.Whitespace
+'[' Punctuation
+'ConsPos' Name.Class
+']' Punctuation
+'\n' Text.Whitespace
+
+'getConsPath' Name
+' ' Text.Whitespace
+'{' Punctuation
+'gcd_index' Name
+',' Punctuation
+' ' Text.Whitespace
+'gcd_type_def' Name
+'=' Operator
+'{' Punctuation
+'gtd_num_conses' Name
+'}' Punctuation
+'}' Punctuation
+'\n\t' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'doit' Name
+' ' Text.Whitespace
+'gcd_index' Name
+' ' Text.Whitespace
+'gtd_num_conses' Name
+'\n' Text.Whitespace
+
+'where' Keyword
+'\n\t' Text.Whitespace
+'doit' Name
+' ' Text.Whitespace
+'i' Name
+' ' Text.Whitespace
+'n' Name
+'\n\t\t' Text.Whitespace
+'|' Operator
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'==' Operator
+' ' Text.Whitespace
+'0' Literal.Number.Integer
+' \t\n\t\t\t' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'abort' Name
+' ' Text.Whitespace
+'"' Literal.String.Double
+'getConsPath: zero conses' Literal.String.Double
+'\\n' Literal.String.Double
+'"' Literal.String.Double
+'\n\t\t' Text.Whitespace
+'|' Operator
+' ' Text.Whitespace
+'i' Name
+' ' Text.Whitespace
+'>=' Operator
+' ' Text.Whitespace
+'n' Name
+'\t\n\t\t\t' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'abort' Name
+' ' Text.Whitespace
+'"' Literal.String.Double
+'getConsPath: cons index >= number of conses' Literal.String.Double
+'"' Literal.String.Double
+'\n\t\t' Text.Whitespace
+'|' Operator
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'==' Operator
+' ' Text.Whitespace
+'1' Literal.Number.Integer
+'\n\t\t\t' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'[' Punctuation
+']' Punctuation
+'\n\t\t' Text.Whitespace
+'|' Operator
+' ' Text.Whitespace
+'i' Name
+' ' Text.Whitespace
+'<' Operator
+' ' Text.Whitespace
+'(' Punctuation
+'n' Name
+'/' Operator
+'2' Literal.Number.Integer
+')' Punctuation
+'\n\t\t\t' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'[' Punctuation
+' ' Text.Whitespace
+'ConsLeft' Name.Class
+' ' Text.Whitespace
+':' Operator
+' ' Text.Whitespace
+'doit' Name
+' ' Text.Whitespace
+'i' Name
+' ' Text.Whitespace
+'(' Punctuation
+'n' Name
+'/' Operator
+'2' Literal.Number.Integer
+')' Punctuation
+' ' Text.Whitespace
+']' Punctuation
+'\n\t\t' Text.Whitespace
+'|' Operator
+' ' Text.Whitespace
+'otherwise' Keyword
+'\n\t\t\t' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'[' Punctuation
+' ' Text.Whitespace
+'ConsRight' Name.Class
+' ' Text.Whitespace
+':' Operator
+' ' Text.Whitespace
+'doit' Name
+' ' Text.Whitespace
+'(' Punctuation
+'i' Name
+' ' Text.Whitespace
+'-' Operator
+' ' Text.Whitespace
+'(' Punctuation
+'n' Name
+'/' Operator
+'2' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'(' Punctuation
+'n' Name
+' ' Text.Whitespace
+'-' Operator
+' ' Text.Whitespace
+'(' Punctuation
+'n' Name
+'/' Operator
+'2' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+']' Punctuation
+'\n\t\t\t \t \t\t\t\t\t\t\t \t\n' Text.Whitespace
+
+'::' Operator
+' ' Text.Whitespace
+'NoAttr' Name.Class
+' ' Text.Whitespace
+'m' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'NoAttr' Name.Class
+'\n' Text.Whitespace
+
+'::' Operator
+' ' Text.Whitespace
+'DashAttr' Name.Class
+' ' Text.Whitespace
+'m' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'dash' Name
+' ' Text.Whitespace
+'::' Operator
+' ' Text.Whitespace
+'!' Operator
+'[' Punctuation
+'Int' Name.Class
+']' Punctuation
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'::' Operator
+' ' Text.Whitespace
+'FillAttr' Name.Class
+' ' Text.Whitespace
+'m' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'fill' Name
+' ' Text.Whitespace
+'::' Operator
+' ' Text.Whitespace
+'!' Operator
+'SVGColor' Name.Class
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'::' Operator
+' ' Text.Whitespace
+'LineEndMarker' Name.Class
+' ' Text.Whitespace
+'m' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'endmarker' Name
+' ' Text.Whitespace
+'::' Operator
+' ' Text.Whitespace
+'!' Operator
+'Image' Name.Class
+' ' Text.Whitespace
+'m' Name
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'::' Operator
+' ' Text.Whitespace
+'LineMidMarker' Name.Class
+' ' Text.Whitespace
+'m' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'midmarker' Name
+' ' Text.Whitespace
+'::' Operator
+' ' Text.Whitespace
+'!' Operator
+'Image' Name.Class
+' ' Text.Whitespace
+'m' Name
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'::' Operator
+' ' Text.Whitespace
+'LineStartMarker' Name.Class
+' ' Text.Whitespace
+'m' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'startmarker' Name
+' ' Text.Whitespace
+'::' Operator
+' ' Text.Whitespace
+'!' Operator
+'Image' Name.Class
+' ' Text.Whitespace
+'m' Name
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'::' Operator
+' ' Text.Whitespace
+'MaskAttr' Name.Class
+' ' Text.Whitespace
+'m' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'mask' Name
+' ' Text.Whitespace
+'::' Operator
+' ' Text.Whitespace
+'!' Operator
+'Image' Name.Class
+' ' Text.Whitespace
+'m' Name
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'::' Operator
+' ' Text.Whitespace
+'OpacityAttr' Name.Class
+' ' Text.Whitespace
+'m' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'opacity' Name
+' ' Text.Whitespace
+'::' Operator
+' ' Text.Whitespace
+'!' Operator
+'Real' Name.Class
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'::' Operator
+' ' Text.Whitespace
+'StrokeAttr' Name.Class
+' ' Text.Whitespace
+'m' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'stroke' Name
+' ' Text.Whitespace
+'::' Operator
+' ' Text.Whitespace
+'!' Operator
+'SVGColor' Name.Class
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'::' Operator
+' ' Text.Whitespace
+'StrokeWidthAttr' Name.Class
+' ' Text.Whitespace
+'m' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'strokewidth' Name
+' ' Text.Whitespace
+'::' Operator
+' ' Text.Whitespace
+'!' Operator
+'Span' Name.Class
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'::' Operator
+' ' Text.Whitespace
+'XRadiusAttr' Name.Class
+' ' Text.Whitespace
+'m' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'xradius' Name
+' ' Text.Whitespace
+'::' Operator
+' ' Text.Whitespace
+'!' Operator
+'Span' Name.Class
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'::' Operator
+' ' Text.Whitespace
+'YRadiusAttr' Name.Class
+' ' Text.Whitespace
+'m' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'yradius' Name
+' ' Text.Whitespace
+'::' Operator
+' ' Text.Whitespace
+'!' Operator
+'Span' Name.Class
+' ' Text.Whitespace
+'}' Punctuation
+'\n\n\n' Text.Whitespace
+
+'instance' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'NoAttr' Name.Class
+' ' Text.Whitespace
+'where' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'image' Name
+' ' Text.Whitespace
+'_' Operator
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'image' Name
+'\n' Text.Whitespace
+
+'instance' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'DashAttr' Name.Class
+' ' Text.Whitespace
+'where' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'image' Name
+' ' Text.Whitespace
+'attr' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Attr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'BasicImageAttr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'BasicImgDashAttr' Name.Class
+' ' Text.Whitespace
+'attr' Name
+'.' Operator
+'DashAttr' Name.Class
+'.' Operator
+'dash' Name
+')' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'image' Name
+'\n' Text.Whitespace
+
+'instance' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'FillAttr' Name.Class
+' ' Text.Whitespace
+'where' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'image' Name
+' ' Text.Whitespace
+'attr' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Attr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'BasicImageAttr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'BasicImgFillAttr' Name.Class
+' ' Text.Whitespace
+'attr' Name
+'.' Operator
+'FillAttr' Name.Class
+'.' Operator
+'fill' Name
+')' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'image' Name
+'\n' Text.Whitespace
+
+'instance' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'LineEndMarker' Name.Class
+' ' Text.Whitespace
+'where' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'image' Name
+' ' Text.Whitespace
+'attr' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Attr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'LineMarkerAttr`' Name.Class
+' ' Text.Whitespace
+'{' Punctuation
+'LineMarkerAttr' Name.Class
+' ' Text.Whitespace
+'|' Operator
+' ' Text.Whitespace
+'markerImg' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'attr' Name
+'.' Operator
+'LineEndMarker' Name.Class
+'.' Operator
+'endmarker' Name
+',' Punctuation
+' ' Text.Whitespace
+'markerPos' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'LineMarkerEnd' Name.Class
+'}' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'image' Name
+'\n' Text.Whitespace
+
+'instance' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'LineMidMarker' Name.Class
+' ' Text.Whitespace
+'where' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'image' Name
+' ' Text.Whitespace
+'attr' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Attr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'LineMarkerAttr`' Name.Class
+' ' Text.Whitespace
+'{' Punctuation
+'LineMarkerAttr' Name.Class
+' ' Text.Whitespace
+'|' Operator
+' ' Text.Whitespace
+'markerImg' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'attr' Name
+'.' Operator
+'LineMidMarker' Name.Class
+'.' Operator
+'midmarker' Name
+',' Punctuation
+' ' Text.Whitespace
+'markerPos' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'LineMarkerMid' Name.Class
+'}' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'image' Name
+'\n' Text.Whitespace
+
+'instance' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'LineStartMarker' Name.Class
+' ' Text.Whitespace
+'where' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'image' Name
+' ' Text.Whitespace
+'attr' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Attr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'LineMarkerAttr`' Name.Class
+' ' Text.Whitespace
+'{' Punctuation
+'LineMarkerAttr' Name.Class
+' ' Text.Whitespace
+'|' Operator
+' ' Text.Whitespace
+'markerImg' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'attr' Name
+'.' Operator
+'LineStartMarker' Name.Class
+'.' Operator
+'startmarker' Name
+',' Punctuation
+' ' Text.Whitespace
+'markerPos' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'LineMarkerStart' Name.Class
+'}' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'image' Name
+'\n' Text.Whitespace
+
+'instance' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'MaskAttr' Name.Class
+' ' Text.Whitespace
+'where' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'image' Name
+' ' Text.Whitespace
+'attr' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Attr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'MaskAttr`' Name.Class
+' ' Text.Whitespace
+'attr' Name
+'.' Operator
+'MaskAttr' Name.Class
+'.' Operator
+'mask' Name
+')' Punctuation
+' ' Text.Whitespace
+'image' Name
+'\n' Text.Whitespace
+
+'instance' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'OpacityAttr' Name.Class
+' ' Text.Whitespace
+'where' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'image' Name
+' ' Text.Whitespace
+'attr' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Attr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'BasicImageAttr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'BasicImgFillOpacityAttr' Name.Class
+' ' Text.Whitespace
+'attr' Name
+'.' Operator
+'OpacityAttr' Name.Class
+'.' Operator
+'opacity' Name
+')' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'image' Name
+'\n' Text.Whitespace
+
+'instance' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'StrokeAttr' Name.Class
+' ' Text.Whitespace
+'where' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'image' Name
+' ' Text.Whitespace
+'attr' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Attr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'BasicImageAttr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'BasicImgStrokeAttr' Name.Class
+' ' Text.Whitespace
+'attr' Name
+'.' Operator
+'StrokeAttr' Name.Class
+'.' Operator
+'stroke' Name
+')' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'image' Name
+'\n' Text.Whitespace
+
+'instance' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'StrokeWidthAttr' Name.Class
+' ' Text.Whitespace
+'where' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'image' Name
+' ' Text.Whitespace
+'attr' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Attr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'BasicImageAttr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'BasicImgStrokeWidthAttr' Name.Class
+' ' Text.Whitespace
+'attr' Name
+'.' Operator
+'StrokeWidthAttr' Name.Class
+'.' Operator
+'strokewidth' Name
+')' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'image' Name
+'\n' Text.Whitespace
+
+'instance' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'XRadiusAttr' Name.Class
+' ' Text.Whitespace
+'where' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'image' Name
+' ' Text.Whitespace
+'attr' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Attr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'BasicImageAttr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'BasicImgXRadiusAttr' Name.Class
+' ' Text.Whitespace
+'attr' Name
+'.' Operator
+'XRadiusAttr' Name.Class
+'.' Operator
+'xradius' Name
+')' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'image' Name
+'\n' Text.Whitespace
+
+'instance' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'YRadiusAttr' Name.Class
+' ' Text.Whitespace
+'where' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'image' Name
+' ' Text.Whitespace
+'attr' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Attr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'BasicImageAttr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'BasicImgYRadiusAttr' Name.Class
+' ' Text.Whitespace
+'attr' Name
+'.' Operator
+'YRadiusAttr' Name.Class
+'.' Operator
+'yradius' Name
+')' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'image' Name
+'\n\n' Text.Whitespace
+
+'instance' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'DraggableAttr' Name.Class
+' ' Text.Whitespace
+'where' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'image' Name
+' ' Text.Whitespace
+'attr' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Attr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'HandlerAttr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'ImgEventhandlerDraggableAttr' Name.Class
+' ' Text.Whitespace
+'attr' Name
+')' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'image' Name
+'\n' Text.Whitespace
+
+'instance' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'OnClickAttr' Name.Class
+' ' Text.Whitespace
+'where' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'image' Name
+' ' Text.Whitespace
+'attr' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Attr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'HandlerAttr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'ImgEventhandlerOnClickAttr' Name.Class
+' ' Text.Whitespace
+'attr' Name
+')' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'image' Name
+'\n' Text.Whitespace
+
+'instance' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'OnMouseDownAttr' Name.Class
+' ' Text.Whitespace
+'where' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'image' Name
+' ' Text.Whitespace
+'attr' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Attr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'HandlerAttr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'ImgEventhandlerOnMouseDownAttr' Name.Class
+' ' Text.Whitespace
+'attr' Name
+')' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'image' Name
+'\n' Text.Whitespace
+
+'instance' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'OnMouseMoveAttr' Name.Class
+' ' Text.Whitespace
+'where' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'image' Name
+' ' Text.Whitespace
+'attr' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Attr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'HandlerAttr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'ImgEventhandlerOnMouseMoveAttr' Name.Class
+' ' Text.Whitespace
+'attr' Name
+')' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'image' Name
+'\n' Text.Whitespace
+
+'instance' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'OnMouseOutAttr' Name.Class
+' ' Text.Whitespace
+'where' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'image' Name
+' ' Text.Whitespace
+'attr' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Attr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'HandlerAttr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'ImgEventhandlerOnMouseOutAttr' Name.Class
+' ' Text.Whitespace
+'attr' Name
+')' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'image' Name
+'\n' Text.Whitespace
+
+'instance' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'OnMouseOverAttr' Name.Class
+' ' Text.Whitespace
+'where' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'image' Name
+' ' Text.Whitespace
+'attr' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Attr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'HandlerAttr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'ImgEventhandlerOnMouseOverAttr' Name.Class
+' ' Text.Whitespace
+'attr' Name
+')' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'image' Name
+'\n' Text.Whitespace
+
+'instance' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'OnMouseUpAttr' Name.Class
+' ' Text.Whitespace
+'where' Keyword
+' ' Text.Whitespace
+'tuneImage' Name
+' ' Text.Whitespace
+'image' Name
+' ' Text.Whitespace
+'attr' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Attr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'HandlerAttr`' Name.Class
+' ' Text.Whitespace
+'(' Punctuation
+'ImgEventhandlerOnMouseUpAttr' Name.Class
+' ' Text.Whitespace
+'attr' Name
+')' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'image' Name
+'\n' Text.Whitespace