{
    "scopeName": "source.noja",
    "fileTypes": ["noja"],
    "patterns" : [
        {
            "name" : "keyword.control.noja",
            "match": "\\b(return|if|else|while|do|break|continue)\\b"
        },
        {
            "match": "\\b(fun)\\b[ \\t\\n]*([a-zA-Z_][a-zA-Z0-9_]*)?\\b",
            "captures": {
                "1": {"name": "storage.type.function.noja"},
                "2": {"name": "entity.name.function"}
            }
        },
        {
            "name": "keyword.operator.noja",
            "match": "(\\+|-|\\*|\\/|=|==|!=|\\>|\\<|\\>=|\\<=|\\|)"
        },
        {
            "name": "keyword.operator.logical.noja",
            "match": "\\b(and|or|not)\\b"
        },
        {
            "name": "constant.language.noja",
            "match": "\\b(none|any|true|false)\\b"
        },
        {
            "name" : "string.quoted.double.noja",
            "begin": "\"",
            "end"  : "\"",
            "patterns": [
                {
                    "name" : "constant.character.escape.noja",
                    "match": "\\."
                }
            ]
        },
        {
            "name" : "string.quoted.single.noja",
            "begin": "'",
            "end"  : "'",
            "patterns": [
                {
                    "name" : "constant.character.escape.noja",
                    "match": "\\."
                }
            ]
        },
        {
            "name": "constant.numeric.float.noja",
            "match": "[0-9]+\\.[0-9]+"
        },
        {
            "name": "constant.numeric.integer.noja",
            "match": "[0-9]+"
        },
        {
            "name": "support.type.noja",
            "match": "\\b(int|float|bool|[_A-Z][A-Za-z0-9_]*)\\b"
        },
        {
            "name": "support.function.builtin.noja",
            "match": "\\b(import|type|istypeof|print|input|count|error|assert|keysof)\\b"
        },
        {
            "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)[ \\t\\n]*\\(",
            "captures": {
                "1": {"name": "variable.other.function"}
            }
        },
        {
            "name": "variable.other.noja",
            "match": "\\b[a-zA-Z_][a-zA-Z0-9_]*\\b"
        },
        {
            "name": "comment.line.number-sign",
            "match": "#.*$"
        },
        {
            "name": "punctuation.separator.noja",
            "match": "(,|:)"
        },
        {
            "name": "punctuation.accessor.dot.noja",
            "match": "\\."
        },
        {
            "name": "punctuation.terminator.noja",
            "match": ";"
        }
    ]
}