module Text.Highlighter.Lexers.MuPAD (lexer) where

import Text.Regex.PCRE.Light
import Text.Highlighter.Types

lexer :: Lexer
lexer = Lexer
    { lName = "\77\117\80\65\68"
    , lAliases = ["\109\117\112\97\100"]
    , lExtensions = ["\46\109\117"]
    , lMimetypes = []
    , lStart = root'
    , lFlags = [multiline]
    }

comment' :: TokenMatcher
comment' =
    [ tok "\91\94\42\47\93" (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\77\117\108\116\105\108\105\110\101")
    , tokNext "\47\92\42" (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\77\117\108\116\105\108\105\110\101") Push
    , tokNext "\92\42\47" (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\77\117\108\116\105\108\105\110\101") Pop
    , tok "\91\42\47\93" (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\77\117\108\116\105\108\105\110\101")
    ]

root' :: TokenMatcher
root' =
    [ tok "\47\47\46\42\63\36" (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\83\105\110\103\108\101")
    , tokNext "\47\92\42" (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\77\117\108\116\105\108\105\110\101") (GoTo comment')
    , tok "\34\40\63\58\91\94\34\92\92\93\124\92\92\46\41\42\34" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103")
    , tok "\92\40\124\92\41\124\92\91\124\92\93\124\92\123\124\92\125" (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110")
    , tok "\40\63\120\41\92\98\40\63\58\10\32\32\32\32\32\32\32\32\32\32\32\32\110\101\120\116\124\98\114\101\97\107\124\101\110\100\124\10\32\32\32\32\32\32\32\32\32\32\32\32\97\120\105\111\109\124\101\110\100\95\97\120\105\111\109\124\99\97\116\101\103\111\114\121\124\101\110\100\95\99\97\116\101\103\111\114\121\124\100\111\109\97\105\110\124\101\110\100\95\100\111\109\97\105\110\124\105\110\104\101\114\105\116\115\124\10\32\32\32\32\32\32\32\32\32\32\32\32\105\102\124\37\105\102\124\116\104\101\110\124\101\108\105\102\124\101\108\115\101\124\101\110\100\95\105\102\124\10\32\32\32\32\32\32\32\32\32\32\32\32\99\97\115\101\124\111\102\124\100\111\124\111\116\104\101\114\119\105\115\101\124\101\110\100\95\99\97\115\101\124\10\32\32\32\32\32\32\32\32\32\32\32\32\119\104\105\108\101\124\101\110\100\95\119\104\105\108\101\124\10\32\32\32\32\32\32\32\32\32\32\32\32\114\101\112\101\97\116\124\117\110\116\105\108\124\101\110\100\95\114\101\112\101\97\116\124\10\32\32\32\32\32\32\32\32\32\32\32\32\102\111\114\124\102\114\111\109\124\116\111\124\100\111\119\110\116\111\124\115\116\101\112\124\101\110\100\95\102\111\114\124\10\32\32\32\32\32\32\32\32\32\32\32\32\112\114\111\99\124\108\111\99\97\108\124\111\112\116\105\111\110\124\115\97\118\101\124\98\101\103\105\110\124\101\110\100\95\112\114\111\99\124\10\32\32\32\32\32\32\32\32\32\32\32\32\100\101\108\101\116\101\124\102\114\97\109\101\10\32\32\32\32\32\32\32\32\32\32\41\92\98" (Arbitrary "\75\101\121\119\111\114\100")
    , tok "\40\63\120\41\92\98\40\63\58\10\32\32\32\32\32\32\32\32\32\32\32\32\68\79\77\95\65\82\82\65\89\124\68\79\77\95\66\79\79\76\124\68\79\77\95\67\79\77\80\76\69\88\124\68\79\77\95\68\79\77\65\73\78\124\68\79\77\95\69\88\69\67\124\68\79\77\95\69\88\80\82\124\10\32\32\32\32\32\32\32\32\32\32\32\32\68\79\77\95\70\65\73\76\124\68\79\77\95\70\76\79\65\84\124\68\79\77\95\70\82\65\77\69\124\68\79\77\95\70\85\78\67\95\69\78\86\124\68\79\77\95\72\70\65\82\82\65\89\124\68\79\77\95\73\68\69\78\84\124\10\32\32\32\32\32\32\32\32\32\32\32\32\68\79\77\95\73\78\84\124\68\79\77\95\73\78\84\69\82\86\65\76\124\68\79\77\95\76\73\83\84\124\68\79\77\95\78\73\76\124\68\79\77\95\78\85\76\76\124\68\79\77\95\80\79\76\89\124\68\79\77\95\80\82\79\67\124\10\32\32\32\32\32\32\32\32\32\32\32\32\68\79\77\95\80\82\79\67\95\69\78\86\124\68\79\77\95\82\65\84\124\68\79\77\95\83\69\84\124\68\79\77\95\83\84\82\73\78\71\124\68\79\77\95\84\65\66\76\69\124\68\79\77\95\86\65\82\10\32\32\32\32\32\32\32\32\32\32\41\92\98" (Arbitrary "\78\97\109\101" :. Arbitrary "\67\108\97\115\115")
    , tok "\40\63\120\41\92\98\40\63\58\10\32\32\32\32\32\32\32\32\32\32\32\32\80\73\124\69\85\76\69\82\124\69\124\67\65\84\65\76\65\78\124\10\32\32\32\32\32\32\32\32\32\32\32\32\78\73\76\124\70\65\73\76\124\117\110\100\101\102\105\110\101\100\124\105\110\102\105\110\105\116\121\124\10\32\32\32\32\32\32\32\32\32\32\32\32\84\82\85\69\124\70\65\76\83\69\124\85\78\75\78\79\87\78\10\32\32\32\32\32\32\32\32\32\32\41\92\98" (Arbitrary "\78\97\109\101" :. Arbitrary "\67\111\110\115\116\97\110\116")
    , tok "\92\98\40\63\58\100\111\109\124\112\114\111\99\110\97\109\101\41\92\98" (Arbitrary "\78\97\109\101" :. Arbitrary "\66\117\105\108\116\105\110" :. Arbitrary "\80\115\101\117\100\111")
    , tok "\92\46\124\44\124\58\124\59\124\61\124\92\43\124\45\124\92\42\124\47\124\92\94\124\64\124\62\124\60\124\92\36\124\92\124\124\33\124\92\39\124\37\124\126\61" (Arbitrary "\79\112\101\114\97\116\111\114")
    , tok "\40\63\120\41\92\98\40\63\58\10\32\32\32\32\32\32\32\32\32\32\32\32\97\110\100\124\111\114\124\110\111\116\124\120\111\114\124\10\32\32\32\32\32\32\32\32\32\32\32\32\97\115\115\117\109\105\110\103\124\10\32\32\32\32\32\32\32\32\32\32\32\32\100\105\118\124\109\111\100\124\10\32\32\32\32\32\32\32\32\32\32\32\32\117\110\105\111\110\124\109\105\110\117\115\124\105\110\116\101\114\115\101\99\116\124\105\110\124\115\117\98\115\101\116\10\32\32\32\32\32\32\32\32\32\32\41\92\98" (Arbitrary "\79\112\101\114\97\116\111\114" :. Arbitrary "\87\111\114\100")
    , tok "\92\98\40\63\58\73\124\82\68\78\95\73\78\70\124\82\68\95\78\73\78\70\124\82\68\95\78\65\78\41\92\98" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\78\117\109\98\101\114")
    , tok "\40\63\120\41\10\32\32\32\32\32\32\32\32\32\32\40\40\63\58\91\97\45\122\65\45\90\95\35\93\91\97\45\122\65\45\90\95\35\48\45\57\93\42\124\96\91\94\96\93\42\96\41\10\32\32\32\32\32\32\32\32\32\32\40\63\58\58\58\91\97\45\122\65\45\90\95\35\93\91\97\45\122\65\45\90\95\35\48\45\57\93\42\124\96\91\94\96\93\42\96\41\42\41\92\115\42\40\91\40\93\41" (ByGroups [(Arbitrary "\78\97\109\101" :. Arbitrary "\70\117\110\99\116\105\111\110"), (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110")])
    , tok "\40\63\120\41\10\32\32\32\32\32\32\32\32\32\32\40\63\58\91\97\45\122\65\45\90\95\35\93\91\97\45\122\65\45\90\95\35\48\45\57\93\42\124\96\91\94\96\93\42\96\41\10\32\32\32\32\32\32\32\32\32\32\40\63\58\58\58\91\97\45\122\65\45\90\95\35\93\91\97\45\122\65\45\90\95\35\48\45\57\93\42\124\96\91\94\96\93\42\96\41\42" (Arbitrary "\78\97\109\101" :. Arbitrary "\86\97\114\105\97\98\108\101")
    , tok "\91\48\45\57\93\43\40\63\58\92\46\91\48\45\57\93\42\41\63\40\63\58\101\91\48\45\57\93\43\41\63" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\78\117\109\98\101\114")
    , tok "\92\46\91\48\45\57\93\43\40\63\58\101\91\48\45\57\93\43\41\63" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\78\117\109\98\101\114")
    , tok "\46" (Arbitrary "\84\101\120\116")
    ]