// Highlighter rules based on Ace Editor <https://github.com/ajaxorg/ace/blob/master/lib/ace/mode/ada_highlight_rules.js>
// made by David Parreño Barbuzano <david.parreno101@alu.ulpgc.es>
{
    "name": "ada-tokenizer",
    "extension": [ ".adb", ".ads", ".ada" ],
    "check_rules": false,
    "inherit_rules": "text_tokenizer_rules",
    "states": {
        "start": [
            {
                "token": "comment",
                "regex": "--.*$"
            },
            {
                "token": "string.double",
                "regex": "\".*?\""
            },
            {
                "token": "string.single",
                "regex": "'.'"
            },
            {
                "token": "constant.numeric",
                "regex": "[+-]?[0-9]+((\\.[0-9]*)?([eE][+-]?[0-9]+)?)?\\b"
            },
            {
                "token": "support.function",
                "regex": "count|min|max|avg|sum|rank|now|coalesce|main"
            },
            {
                "token": "keyword",
                "regex": "abort|else|new|return|abs|elsif|not|reverse|abstract|end|null|accept|entry|select|access|exception|of|separate|aliased|exit|or|some|all|others|subtype|and|for|out|synchronized|array|function|overriding|at|tagged|generic|package|task|begin|goto|pragma|terminate|body|private|then|if|procedure|type|case|in|protected|constant|interface|until|is|raise|use|declare|range|delay|limited|record|when|delta|loop|rem|while|digits|renames|with|do|mod|requeue|xor"
            },
            {
                "token": "constant.language",
                "regex": "true|false|null"
            },
            {
                "token": "identifier",
                "regex": "[a-zA-Z_$][a-zA-Z0-9_$]*"
            },
            {
                "token": "keyword.operator",
                "regex": "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="
            },
            {
                "token": "paren.lparen",
                "regex": "[\\(]"
            },
            {
                "token": "paren.rparen",
                "regex": "[\\)]"
            },
            {
                "token": "text",
                "regex": "\\s+"
            }
        ]
    }
}