{ "name": "Shen", "scopeName": "source.shen", "patterns": [ { "include": "#expressions" } ], "repository": { "atoms": { "patterns": [ { "name": "string.quoted.double", "begin": "(\\\")", "end": "(\\\")", "patterns": [ { "name": "constant.character.escape", "match": "(~A|~R|~S|~%|c#\\d+;)" }, { "name": "invalid.illegal", "match": "(c#[^;]*;)" } ] }, { "name": "constant.numeric", "match": "(?\u003c=^|[\\s()\\[\\]])[+-]*\\d+\\.?\\d*(?=$|[\\s;()\\[\\]])" }, { "name": "invalid.illegal", "match": "(?\u003c=^|[\\s()\\[\\]])[+-]*\\d+\\.?\\d*[^\\s;()\\[\\]]+(?=$|[\\s;()\\[\\]])" }, { "name": "keyword.control", "match": "(?\u003c=\\()(and|or|if|do|lambda|freeze|let|cond|cases|trap-error|where|package|defun|/.|define|defmacro|defcc|defprolog|datatype)(?=$|[\\s;()\\[\\]{}])" }, { "name": "keyword.control", "match": "(?\u003c=^|[\\s()\\[\\]{}])(-\u003e|\u003c-|--\u003e|\u003c--|==\u003e|\u003c==|:=|__+)(?=$|[\\s;()\\[\\]{}])" }, { "name": "keyword.operator", "match": "(?\u003c=^|[\\s()\\[\\]{}])(=|==|\u003c|\u003e|\u003c=|\u003e=|\\+|-|\\*|/)(?=$|[\\s;()\\[\\]{}])" }, { "name": "entity.name.function", "match": "(?\u003c=\\(define\\s)([^\\s()\\[\\]{}]*)(?=$|[\\s;()\\[\\]{}])" }, { "name": "entity.name.function", "match": "(?\u003c=\\(defmacro\\s)([^\\s()\\[\\]{}]*)(?=$|[\\s;()\\[\\]{}])" }, { "name": "entity.name.function", "match": "(?\u003c=\\(defprolog\\s)([^\\s()\\[\\]{}]*)(?=$|[\\s;()\\[\\]{}])" }, { "name": "entity.name.section", "match": "(?\u003c=\\(package\\s)([^\\s()\\[\\]{}]*)(?=$|[\\s;()\\[\\]{}])" }, { "name": "entity.name.type", "match": "(?\u003c=\\(datatype\\s)([^\\s()\\[\\]{}]*)(?=$|[\\s;()\\[\\]{}])" }, { "name": "variable.language", "match": "(?\u003c=^|[\\s()\\[\\]{}])([A-Z][^\\s()\\[\\];{}]*)(?=$|[\\s;()\\[\\]{}])" }, { "name": "entity.name.tag", "match": "(?\u003c=^|[\\s()\\[\\]])(\u003c[^\\s()\\[\\]]*\u003e)(?=$|[\\s;()\\[\\]])" }, { "name": "constant.language", "match": "(?\u003c=^|[\\s)\\[\\]{}])([^A-Z\\s()\\[\\]:;\\|{}][^\\s()\\[\\];{}]*)(?=$|[\\s;()\\[\\]{}])" }, { "name": "constant.language", "match": "(\\(\\)|\\[\\])" } ] }, "comments": { "patterns": [ { "name": "comment.line", "match": "(\\\\\\\\.*$)" }, { "name": "comment.block", "begin": "(\\\\\\*)", "end": "(\\*\\\\)" } ] }, "expressions": { "patterns": [ { "include": "#comments" }, { "include": "#atoms" }, { "include": "#parens" }, { "include": "#squares" } ] }, "parens": { "patterns": [ { "name": "meta.group", "begin": "(\\()", "end": "(\\))", "patterns": [ { "include": "#expressions" } ] } ] }, "squares": { "patterns": [ { "name": "meta.group", "begin": "(\\[)", "end": "(\\])", "patterns": [ { "include": "#expressions" } ] } ] } } }