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

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

lexer :: Lexer
lexer = Lexer
    { lName = "\65\100\97"
    , lAliases = ["\97\100\97", "\97\100\97\57\53\97\100\97\50\48\48\53"]
    , lExtensions = ["\46\97\100\98", "\46\97\100\115", "\46\97\100\97"]
    , lMimetypes = ["\116\101\120\116\47\120\45\97\100\97"]
    , lStart = root'
    , lFlags = [caseless, multiline]
    }

package_instantiation' :: TokenMatcher
package_instantiation' =
    [ tok "\40\34\91\94\34\93\43\34\124\91\97\45\122\48\45\57\95\93\43\41\40\92\115\43\41\40\61\62\41" (ByGroups [(Arbitrary "\78\97\109\101" :. Arbitrary "\86\97\114\105\97\98\108\101"), (Arbitrary "\84\101\120\116"), (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110")])
    , tok "\91\97\45\122\48\45\57\46\95\92\39\34\93" (Arbitrary "\84\101\120\116")
    , tokNext "\92\41" (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110") Pop
    , anyOf root'
    ]

formal_part' :: TokenMatcher
formal_part' =
    [ tokNext "\92\41" (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110") Pop
    , tok "\40\91\97\45\122\48\45\57\95\93\43\41\40\92\115\42\41\40\44\124\58\91\94\61\93\41" (ByGroups [(Arbitrary "\78\97\109\101" :. Arbitrary "\86\97\114\105\97\98\108\101"), (Arbitrary "\84\101\120\116"), (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110")])
    , tok "\40\105\110\124\110\111\116\124\110\117\108\108\124\111\117\116\124\97\99\99\101\115\115\41\92\98" (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\82\101\115\101\114\118\101\100")
    , anyOf root'
    ]

attribute' :: TokenMatcher
attribute' =
    [ tok "\40\39\41\40\91\97\45\122\65\45\90\48\45\57\95\93\43\41" (ByGroups [(Arbitrary "\80\117\110\99\116\117\97\116\105\111\110"), (Arbitrary "\78\97\109\101" :. Arbitrary "\65\116\116\114\105\98\117\116\101")])
    ]

subprogram' :: TokenMatcher
subprogram' =
    [ tokNext "\92\40" (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110") (DoAll [Pop, (GoTo formal_part')])
    , tokNext "\59" (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110") Pop
    , tokNext "\105\115\92\98" (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\82\101\115\101\114\118\101\100") Pop
    , tok "\34\91\94\34\93\43\34\124\91\97\45\122\48\45\57\95\93\43" (Arbitrary "\78\97\109\101" :. Arbitrary "\70\117\110\99\116\105\111\110")
    , anyOf root'
    ]

numbers' :: TokenMatcher
numbers' =
    [ tok "\91\48\45\57\95\93\43\35\91\48\45\57\97\45\102\93\43\35" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\78\117\109\98\101\114" :. Arbitrary "\72\101\120")
    , tok "\91\48\45\57\95\93\43\92\46\91\48\45\57\95\93\42" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\78\117\109\98\101\114" :. Arbitrary "\70\108\111\97\116")
    , tok "\91\48\45\57\95\93\43" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\78\117\109\98\101\114" :. Arbitrary "\73\110\116\101\103\101\114")
    ]

type_def' :: TokenMatcher
type_def' =
    [ tokNext "\59" (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110") Pop
    , tokNext "\92\40" (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110") (GoTo formal_part')
    , tok "\119\105\116\104\124\97\110\100\124\117\115\101" (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\82\101\115\101\114\118\101\100")
    , tokNext "\97\114\114\97\121\92\98" (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\82\101\115\101\114\118\101\100") (DoAll [Pop, (GoTo array_def')])
    , tokNext "\114\101\99\111\114\100\92\98" (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\82\101\115\101\114\118\101\100") (GoTo formal_part')
    , anyOf root'
    ]

end' :: TokenMatcher
end' =
    [ tok "\40\105\102\124\99\97\115\101\124\114\101\99\111\114\100\124\108\111\111\112\124\115\101\108\101\99\116\41" (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\82\101\115\101\114\118\101\100")
    , tok "\34\91\94\34\93\43\34\124\91\97\45\122\65\45\90\48\45\57\95\93\43" (Arbitrary "\78\97\109\101" :. Arbitrary "\70\117\110\99\116\105\111\110")
    , tok "\91\10\92\115\93\43" (Arbitrary "\84\101\120\116")
    , tokNext "\59" (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110") Pop
    ]

array_def' :: TokenMatcher
array_def' =
    [ tokNext "\59" (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110") Pop
    , tok "\40\91\97\45\122\48\45\57\95\93\43\41\40\92\115\43\41\40\114\97\110\103\101\41" (ByGroups [(Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\84\121\112\101"), (Arbitrary "\84\101\120\116"), (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\82\101\115\101\114\118\101\100")])
    , anyOf root'
    ]

package' :: TokenMatcher
package' =
    [ tok "\98\111\100\121" (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\68\101\99\108\97\114\97\116\105\111\110")
    , tok "\105\115\92\115\43\110\101\119\124\114\101\110\97\109\101\115" (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\82\101\115\101\114\118\101\100")
    , tokNext "\105\115" (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\82\101\115\101\114\118\101\100") Pop
    , tokNext "\59" (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110") Pop
    , tokNext "\92\40" (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110") (GoTo package_instantiation')
    , tok "\40\91\97\45\122\65\45\90\48\45\57\95\46\93\43\41" (Arbitrary "\78\97\109\101" :. Arbitrary "\67\108\97\115\115")
    , anyOf root'
    ]

import' :: TokenMatcher
import' =
    [ tokNext "\91\97\45\122\48\45\57\95\46\93\43" (Arbitrary "\78\97\109\101" :. Arbitrary "\78\97\109\101\115\112\97\99\101") Pop
    ]

root' :: TokenMatcher
root' =
    [ tok "\91\94\92\83\92\110\93\43" (Arbitrary "\84\101\120\116")
    , tok "\45\45\46\42\63\92\110" (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\83\105\110\103\108\101")
    , tok "\91\94\92\83\92\110\93\43" (Arbitrary "\84\101\120\116")
    , tokNext "\102\117\110\99\116\105\111\110\124\112\114\111\99\101\100\117\114\101\124\101\110\116\114\121" (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\68\101\99\108\97\114\97\116\105\111\110") (GoTo subprogram')
    , tokNext "\40\115\117\98\116\121\112\101\124\116\121\112\101\41\40\92\115\43\41\40\91\97\45\122\48\45\57\95\93\43\41" (ByGroups [(Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\68\101\99\108\97\114\97\116\105\111\110"), (Arbitrary "\84\101\120\116"), (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\84\121\112\101")]) (GoTo type_def')
    , tok "\116\97\115\107\124\112\114\111\116\101\99\116\101\100" (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\68\101\99\108\97\114\97\116\105\111\110")
    , tok "\40\115\117\98\116\121\112\101\41\40\92\115\43\41" (ByGroups [(Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\68\101\99\108\97\114\97\116\105\111\110"), (Arbitrary "\84\101\120\116")])
    , tokNext "\40\101\110\100\41\40\92\115\43\41" (ByGroups [(Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\82\101\115\101\114\118\101\100"), (Arbitrary "\84\101\120\116")]) (GoTo end')
    , tok "\40\112\114\97\103\109\97\41\40\92\115\43\41\40\91\97\45\122\65\45\90\48\45\57\95\93\43\41" (ByGroups [(Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\82\101\115\101\114\118\101\100"), (Arbitrary "\84\101\120\116"), (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\80\114\101\112\114\111\99")])
    , tok "\40\116\114\117\101\124\102\97\108\115\101\124\110\117\108\108\41\92\98" (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\67\111\110\115\116\97\110\116")
    , tok "\40\66\121\116\101\124\67\104\97\114\97\99\116\101\114\124\70\108\111\97\116\124\73\110\116\101\103\101\114\124\76\111\110\103\95\70\108\111\97\116\124\76\111\110\103\95\73\110\116\101\103\101\114\124\76\111\110\103\95\76\111\110\103\95\70\108\111\97\116\124\76\111\110\103\95\76\111\110\103\95\73\110\116\101\103\101\114\124\78\97\116\117\114\97\108\124\80\111\115\105\116\105\118\101\124\83\104\111\114\116\95\70\108\111\97\116\124\83\104\111\114\116\95\73\110\116\101\103\101\114\124\83\104\111\114\116\95\83\104\111\114\116\95\70\108\111\97\116\124\83\104\111\114\116\95\83\104\111\114\116\95\73\110\116\101\103\101\114\124\83\116\114\105\110\103\124\87\105\100\101\95\83\116\114\105\110\103\124\68\117\114\97\116\105\111\110\41\92\98" (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\84\121\112\101")
    , tok "\40\97\110\100\40\92\115\43\116\104\101\110\41\63\124\105\110\124\109\111\100\124\110\111\116\124\111\114\40\92\115\43\101\108\115\101\41\124\114\101\109\41\92\98" (Arbitrary "\79\112\101\114\97\116\111\114" :. Arbitrary "\87\111\114\100")
    , tok "\103\101\110\101\114\105\99\124\112\114\105\118\97\116\101" (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\68\101\99\108\97\114\97\116\105\111\110")
    , tokNext "\112\97\99\107\97\103\101" (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\68\101\99\108\97\114\97\116\105\111\110") (GoTo package')
    , tokNext "\97\114\114\97\121\92\98" (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\82\101\115\101\114\118\101\100") (GoTo array_def')
    , tokNext "\40\119\105\116\104\124\117\115\101\41\40\92\115\43\41" (ByGroups [(Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\78\97\109\101\115\112\97\99\101"), (Arbitrary "\84\101\120\116")]) (GoTo import')
    , tok "\40\91\97\45\122\48\45\57\95\93\43\41\40\92\115\42\41\40\58\41\40\92\115\42\41\40\99\111\110\115\116\97\110\116\41" (ByGroups [(Arbitrary "\78\97\109\101" :. Arbitrary "\67\111\110\115\116\97\110\116"), (Arbitrary "\84\101\120\116"), (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110"), (Arbitrary "\84\101\120\116"), (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\82\101\115\101\114\118\101\100")])
    , tok "\60\60\91\97\45\122\48\45\57\95\93\43\62\62" (Arbitrary "\78\97\109\101" :. Arbitrary "\76\97\98\101\108")
    , tok "\40\91\97\45\122\48\45\57\95\93\43\41\40\92\115\42\41\40\58\41\40\92\115\42\41\40\100\101\99\108\97\114\101\124\98\101\103\105\110\124\108\111\111\112\124\102\111\114\124\119\104\105\108\101\41" (ByGroups [(Arbitrary "\78\97\109\101" :. Arbitrary "\76\97\98\101\108"), (Arbitrary "\84\101\120\116"), (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110"), (Arbitrary "\84\101\120\116"), (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\82\101\115\101\114\118\101\100")])
    , tok "\92\98\40\97\98\111\114\116\124\97\98\115\124\97\98\115\116\114\97\99\116\124\97\99\99\101\112\116\124\97\99\99\101\115\115\124\97\108\105\97\115\101\100\124\97\108\108\124\97\114\114\97\121\124\97\116\124\98\101\103\105\110\124\98\111\100\121\124\99\97\115\101\124\99\111\110\115\116\97\110\116\124\100\101\99\108\97\114\101\124\100\101\108\97\121\124\100\101\108\116\97\124\100\105\103\105\116\115\124\100\111\124\101\108\115\101\124\101\108\115\105\102\124\101\110\100\124\101\110\116\114\121\124\101\120\99\101\112\116\105\111\110\124\101\120\105\116\124\105\110\116\101\114\102\97\99\101\124\102\111\114\124\103\111\116\111\124\105\102\124\105\115\124\108\105\109\105\116\101\100\124\108\111\111\112\124\110\101\119\124\110\117\108\108\124\111\102\124\111\114\124\111\116\104\101\114\115\124\111\117\116\124\111\118\101\114\114\105\100\105\110\103\124\112\114\97\103\109\97\124\112\114\111\116\101\99\116\101\100\124\114\97\105\115\101\124\114\97\110\103\101\124\114\101\99\111\114\100\124\114\101\110\97\109\101\115\124\114\101\113\117\101\117\101\124\114\101\116\117\114\110\124\114\101\118\101\114\115\101\124\115\101\108\101\99\116\124\115\101\112\97\114\97\116\101\124\115\117\98\116\121\112\101\124\115\121\110\99\104\114\111\110\105\122\101\100\124\116\97\115\107\124\116\97\103\103\101\100\124\116\101\114\109\105\110\97\116\101\124\116\104\101\110\124\116\121\112\101\124\117\110\116\105\108\124\119\104\101\110\124\119\104\105\108\101\124\120\111\114\41\92\98" (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\82\101\115\101\114\118\101\100")
    , tok "\34\91\94\34\93\42\34" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103")
    , anyOf attribute'
    , anyOf numbers'
    , tok "\39\91\94\39\93\39" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103" :. Arbitrary "\67\104\97\114\97\99\116\101\114")
    , tok "\40\91\97\45\122\48\45\57\95\93\43\41\40\92\115\42\124\91\40\44\93\41" (ByGroups [(Arbitrary "\78\97\109\101"), (Using lexer)])
    , tok "\40\60\62\124\61\62\124\58\61\124\91\92\40\92\41\92\124\58\59\44\46\39\93\41" (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110")
    , tok "\91\42\60\62\43\61\47\38\45\93" (Arbitrary "\79\112\101\114\97\116\111\114")
    , tok "\92\110\43" (Arbitrary "\84\101\120\116")
    ]