{ "name": "ObjectScript Macros", "scopeName": "source.objectscript_macros", "patterns": [ { "include": "#include" }, { "include": "#dim" }, { "include": "#define" }, { "include": "#def1arg" }, { "include": "#ifdef" }, { "include": "#comment-line" } ], "repository": { "comment-line": { "patterns": [ { "name": "comment.line.objectscript", "match": "^///.*$" }, { "name": "comment.line.objectscript", "match": "\\s+//.*$" }, { "name": "comment.line.objectscript", "match": "\\s+;.*$" }, { "name": "comment.line.objectscript", "match": "^\\s*#;.*$" }, { "name": "comment.block.objectscript", "begin": "/\\*", "end": "\\*/", "beginCaptures": { "0": { "name": "punctuation.definition.objectscript" } }, "endCaptures": { "0": { "name": "punctuation.definition.objectscript" } } } ] }, "continue": { "patterns": [ { "name": "keyword.control.objectscript", "match": "(\\s+\\#\\#(?i)(continue)\\s*)" } ] }, "def1arg": { "patterns": [ { "name": "meta.preprocessor.objectscript", "begin": "^\\s*(\\#\\s*(?:(?i)def1arg))\\s+((?\u003cid\u003e[a-zA-Z%][a-zA-Z0-9]*))(?:(\\()(\\s*\\g\u003cid\u003e\\s*)(\\)))", "end": "(?\u003c!\\#\\#continue)\\n", "patterns": [ { "include": "#comment-line" }, { "include": "#continue" }, { "include": "#digits" }, { "include": "#macros" }, { "include": "source.objectscript" } ], "beginCaptures": { "1": { "name": "keyword.control.objectscript" }, "2": { "name": "entity.name.objectscript" }, "4": { "name": "punctuation.definition.objectscript" }, "5": { "name": "variable.parameter.objectscript" }, "6": { "name": "punctuation.definition.objectscript" } } } ] }, "define": { "patterns": [ { "name": "meta.preprocessor.objectscript", "begin": "^\\s*(\\#\\s*(?:(?i)define))\\s+((?\u003cid\u003e[a-zA-Z%][a-zA-Z0-9]*))(?:(\\()(\\s*\\g\u003cid\u003e\\s*((,)\\s*\\g\u003cid\u003e\\s*)*)(\\)))?", "end": "(?\u003c!\\#\\#continue)\\n", "patterns": [ { "include": "#comment-line" }, { "include": "#continue" }, { "include": "#macros" }, { "include": "source.objectscript" } ], "beginCaptures": { "1": { "name": "keyword.control.objectscript" }, "2": { "name": "entity.name.objectscript" }, "4": { "name": "punctuation.definition.objectscript" }, "5": { "name": "variable.parameter.objectscript" }, "7": { "name": "punctuation.definition.objectscript" } } } ] }, "dim": { "patterns": [ { "name": "meta.preprocessor.objectscript", "match": "^\\s*(\\#\\s*(?:(?i)dim))\\s+((?\u003cid\u003e[a-zA-Z%][a-zA-Z0-9]*))(?:\\s*(,)\\s*((\\g\u003cid\u003e)*))*(?:\\s+((?i)As)(?:\\s(\\g\u003cid\u003e(?:\\.\\g\u003cid\u003e)*)))?", "captures": { "1": { "name": "keyword.control.objectscript" }, "2": { "name": "variable.name" }, "4": { "name": "punctuation.definition.objectscript" }, "5": { "name": "variable.name" }, "7": { "name": "keyword.control.objectscript" }, "8": { "name": "entity.name.class.objectscript" } } } ] }, "ifdef": { "patterns": [ { "contentName": "meta.preprocessor.objectscript", "begin": "^\\s*(#\\s*(?i)(?:if|ifdef|ifndef|elif|else|undef|endif))\\b", "end": "(?=(?:;|//|/\\*))|$", "patterns": [ { "include": "#digits" }, { "include": "#comment-line" } ], "beginCaptures": { "1": { "name": "keyword.control.objectscript" } } } ] }, "include": { "patterns": [ { "begin": "^\\s*(\\#\\s*(?:(?i)include))\\s+([a-zA-Z%][a-zA-Z0-9]*)", "end": "(?=$)", "beginCaptures": { "1": { "name": "keyword.other.objectscript" }, "2": { "name": "entity.name.objectscript" } } } ] }, "macros": { "patterns": [ { "name": "support.constant", "match": "\\$\\$\\$[a-zA-Z]([a-zA-Z0-9])*" } ] } } }