{
    "aliases": [
        "ls",
        "lassoscript"
    ],
    "case_insensitive": true,
    "lexemes": "[a-zA-Z_][\\w.]*|&[lg]t;",
    "keywords": {
        "literal": "true false none minimal full all void and or not bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft",
        "built_in": "array date decimal duration integer map pair string tag xml null boolean bytes keyword list locale queue set stack staticarray local var variable global data self inherited currentcapture givenblock",
        "keyword": "cache database_names database_schemanames database_tablenames define_tag define_type email_batch encode_set html_comment handle handle_error header if inline iterate ljax_target link link_currentaction link_currentgroup link_currentrecord link_detail link_firstgroup link_firstrecord link_lastgroup link_lastrecord link_nextgroup link_nextrecord link_prevgroup link_prevrecord log loop namespace_using output_none portal private protect records referer referrer repeating resultset rows search_args search_arguments select sort_args sort_arguments thread_atomic value_list while abort case else fail_if fail_ifnot fail if_empty if_false if_null if_true loop_abort loop_continue loop_count params params_up return return_value run_children soap_definetag soap_lastrequest soap_lastresponse tag_name ascending average by define descending do equals frozen group handle_failure import in into join let match max min on order parent protected provide public require returnhome skip split_thread sum take thread to trait type where with yield yieldhome"
    },
    "contains": [
        {
            "className": "meta",
            "begin": "\\]|\\?>",
            "relevance": 0,
            "starts": {
                "end": "\\[|<\\?(lasso(script)?|=)",
                "returnEnd": true,
                "relevance": 0,
                "contains": [
                    {
                        "className": "comment",
                        "begin": "<!--",
                        "end": "-->",
                        "contains": [
                            {
                                "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b"
                            },
                            {
                                "className": "doctag",
                                "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
                                "relevance": 0
                            }
                        ],
                        "relevance": 0
                    }
                ]
            }
        },
        {
            "className": "meta",
            "begin": "\\[noprocess\\]",
            "starts": {
                "end": "\\[\/noprocess\\]",
                "returnEnd": true,
                "contains": [
                    {
                        "$ref": "#contains.0.starts.contains.0"
                    }
                ]
            }
        },
        {
            "className": "meta",
            "begin": "\\[\/noprocess|<\\?(lasso(script)?|=)"
        },
        {
            "className": "meta",
            "begin": "\\[no_square_brackets",
            "starts": {
                "end": "\\[\/no_square_brackets\\]",
                "lexemes": "[a-zA-Z_][\\w.]*|&[lg]t;",
                "keywords": {
                    "$ref": "#keywords"
                },
                "contains": [
                    {
                        "className": "meta",
                        "begin": "\\]|\\?>",
                        "relevance": 0,
                        "starts": {
                            "end": "\\[noprocess\\]|<\\?(lasso(script)?|=)",
                            "returnEnd": true,
                            "contains": [
                                {
                                    "$ref": "#contains.0.starts.contains.0"
                                }
                            ]
                        }
                    },
                    {
                        "$ref": "#contains.1"
                    },
                    {
                        "$ref": "#contains.2"
                    },
                    {
                        "className": "comment",
                        "begin": "\/\/",
                        "end": "$",
                        "contains": [
                            {
                                "$ref": "#contains.0.starts.contains.0.contains.0"
                            },
                            {
                                "className": "doctag",
                                "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
                                "relevance": 0
                            }
                        ]
                    },
                    {
                        "className": "comment",
                        "begin": "\/\\*",
                        "end": "\\*\/",
                        "contains": [
                            {
                                "$ref": "#contains.0.starts.contains.0.contains.0"
                            },
                            {
                                "className": "doctag",
                                "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
                                "relevance": 0
                            }
                        ]
                    },
                    {
                        "className": "number",
                        "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)|(-?infinity|NaN)\\b",
                        "relevance": 0
                    },
                    {
                        "className": "string",
                        "begin": "'",
                        "end": "'",
                        "illegal": null,
                        "contains": [
                            {
                                "begin": "\\\\[\\s\\S]",
                                "relevance": 0
                            }
                        ]
                    },
                    {
                        "className": "string",
                        "begin": "\"",
                        "end": "\"",
                        "illegal": null,
                        "contains": [
                            {
                                "$ref": "#contains.3.starts.contains.6.contains.0"
                            }
                        ]
                    },
                    {
                        "className": "string",
                        "begin": "`",
                        "end": "`"
                    },
                    {
                        "variants": [
                            {
                                "begin": "[#$][a-zA-Z_][\\w.]*"
                            },
                            {
                                "begin": "#",
                                "end": "\\d+",
                                "illegal": "\\W"
                            }
                        ]
                    },
                    {
                        "className": "type",
                        "begin": "::\\s*",
                        "end": "[a-zA-Z_][\\w.]*",
                        "illegal": "\\W"
                    },
                    {
                        "className": "params",
                        "variants": [
                            {
                                "begin": "-(?!infinity)[a-zA-Z_][\\w.]*",
                                "relevance": 0
                            },
                            {
                                "begin": "(\\.\\.\\.)"
                            }
                        ]
                    },
                    {
                        "begin": "(->|\\.)\\s*",
                        "relevance": 0,
                        "contains": [
                            {
                                "className": "symbol",
                                "begin": "'[a-zA-Z_][\\w.]*'"
                            }
                        ]
                    },
                    {
                        "className": "class",
                        "beginKeywords": "define",
                        "returnEnd": true,
                        "end": "\\(|=>",
                        "contains": [
                            {
                                "className": "title",
                                "begin": "[a-zA-Z_][\\w.]*(=(?!>))?|[-+*\/%](?!>)",
                                "relevance": 0
                            }
                        ]
                    }
                ]
            }
        },
        {
            "className": "meta",
            "begin": "\\[",
            "relevance": 0
        },
        {
            "className": "meta",
            "begin": "^#!",
            "end": "lasso9$",
            "relevance": 10
        },
        {
            "$ref": "#contains.3.starts.contains.3"
        },
        {
            "$ref": "#contains.3.starts.contains.4"
        },
        {
            "$ref": "#contains.3.starts.contains.5"
        },
        {
            "$ref": "#contains.3.starts.contains.6"
        },
        {
            "$ref": "#contains.3.starts.contains.7"
        },
        {
            "$ref": "#contains.3.starts.contains.8"
        },
        {
            "$ref": "#contains.3.starts.contains.9"
        },
        {
            "$ref": "#contains.3.starts.contains.10"
        },
        {
            "$ref": "#contains.3.starts.contains.11"
        },
        {
            "$ref": "#contains.3.starts.contains.12"
        },
        {
            "$ref": "#contains.3.starts.contains.13"
        }
    ]
}
