{ "name": "REBOL", "scopeName": "source.rebol", "patterns": [ { "include": "#comments" }, { "include": "#type-literal" }, { "include": "#strings" }, { "include": "#values" }, { "include": "#words" } ], "repository": { "binary-base-sixteen": { "name": "binary.base16.rebol", "begin": "(16)?#\\{", "end": "\\}", "patterns": [ { "name": "string.binary.base16.rebol", "match": "[0-9a-fA-F]{2,2}" }, { "name": "invalid.illegal.rebol", "match": "." } ], "beginCaptures": { "0": { "name": "string.binary.prefix" } }, "endCaptures": { "0": { "name": "string.binary.prefix" } } }, "binary-base-sixtyfour": { "name": "binary.base64.rebol", "begin": "64#\\{", "end": "\\}", "patterns": [ { "name": "string.binary.base64.rebol", "match": "[0-9a-zA-Z+/=\\s]*" }, { "name": "invalid.illegal.rebol", "match": "." } ], "beginCaptures": { "0": { "name": "string.binary.prefix" } }, "endCaptures": { "0": { "name": "string.binary.prefix" } } }, "binary-base-two": { "name": "binary.base2.rebol", "begin": "2#\\{", "end": "\\}", "patterns": [ { "name": "string.binary.base2.rebol", "match": "([01]\\s*){8}" }, { "name": "invalid.illegal.rebol", "match": "." } ], "beginCaptures": { "0": { "name": "string.binary.prefix" } }, "endCaptures": { "0": { "name": "string.binary.prefix" } } }, "character": { "name": "string.character.rebol", "match": "#\"(\\^(\\(([0-9a-fA-F]+|del)\\)|.)|[^\\^\\\"])\"" }, "character-html": { "name": "constant.character.entity.html", "match": "(\u0026)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)", "captures": { "0": { "name": "punctuation.definition.entity.html" }, "2": { "name": "punctuation.definition.entity.html" } } }, "character-inline": { "name": "string.escaped.rebol", "match": "\\^(\\(([0-9a-fA-F]+|del)\\)|.)" }, "comment-docline": { "name": "comment.docline.rebol", "match": ";-.*?(?=\\%\u003e|$)" }, "comment-line": { "name": "comment.line.rebol", "match": ";.*?(?=\\%\u003e|$)" }, "comment-multiline-block": { "name": "comment.multiline.rebol", "begin": "comment\\s*\\[", "end": "\\]", "patterns": [ { "include": "#comment-multiline-block-string" }, { "include": "#comment-multiline-string-nested" }, { "include": "#comment-multiline-block-nested" } ] }, "comment-multiline-block-nested": { "name": "comment.multiline.rebol", "begin": "\\[", "end": "\\]", "patterns": [ { "include": "#comment-multiline-block-string" }, { "include": "#comment-multiline-string-nested" }, { "include": "#comment-multiline-block-nested" } ] }, "comment-multiline-block-string": { "name": "comment.multiline.rebol", "begin": "\"", "end": "\"", "patterns": [ { "match": "\\^." } ] }, "comment-multiline-string": { "name": "comment.multiline.rebol", "begin": "comment\\s*\\{", "end": "\\}", "patterns": [ { "match": "\\^." }, { "include": "#comment-multiline-string-nested" } ] }, "comment-multiline-string-nested": { "name": "comment.multiline.rebol", "begin": "\\{", "end": "\\}", "patterns": [ { "match": "\\^." }, { "include": "#comment-multiline-string-nested" } ] }, "comment-todo": { "name": "comment.todo.rebol", "match": ";@@.*?(?=\\%\u003e|$)" }, "comments": { "patterns": [ { "include": "#comment-docline" }, { "include": "#comment-todo" }, { "include": "#comment-line" }, { "include": "#comment-multiline-string" }, { "include": "#comment-multiline-block" } ] }, "doublequotedString": { "name": "string.quoted.double.xml", "begin": "\"", "end": "\"" }, "function-definition": { "name": "function.definition", "begin": "([A-Za-z=\\!\\?\\*_\\+][A-Za-z0-9=_\\-\\!\\?\\*\\+\\.]*):\\s+(?i)(function|func|funct|routine|has)\\s*(\\[)", "end": "]", "patterns": [ { "include": "#function-definition-block" }, { "include": "#comments" }, { "include": "#strings" }, { "include": "#word-setword" }, { "include": "#word-datatype" }, { "include": "#word-refinement" } ], "beginCaptures": { "1": { "name": "support.variable.function.rebol" }, "2": { "name": "keyword.function" }, "3": { "name": "support.strong" } }, "endCaptures": { "0": { "name": "support.strong" } } }, "function-definition-block": { "name": "function.definition.block", "begin": "\\[", "end": "]", "patterns": [ { "include": "#comments" }, { "include": "#word-datatype" } ] }, "function-definition-does": { "name": "function.definition.does", "match": "([A-Za-z=\\!\\?\\*_\\+][A-Za-z0-9=_\\-\\!\\?\\*\\+\\.]*):\\s+(?i)(does|context)(?=\\s*|\\[)", "captures": { "1": { "name": "support.variable.function.rebol" }, "2": { "name": "keyword.function" } } }, "parens": { "name": "keyword.operator.comparison", "match": "(\\[|\\]|\\(|\\))" }, "rsp-tag": { "name": "source.rebol", "begin": "\u003c%=", "end": "%\u003e", "patterns": [ { "include": "source.rebol" } ] }, "singlequotedString": { "name": "string.quoted.single.xml", "begin": "'", "end": "'" }, "string-email": { "name": "string.email.rebol", "match": "[^\\s\\n:/\\[\\]\\(\\)]+@[^\\s\\n:/\\[\\]\\(\\)]+" }, "string-file": { "name": "string.file.rebol", "match": "%[^\\s\\n\\[\\]\\(\\)]+" }, "string-file-quoted": { "name": "string.file.quoted.rebol", "begin": "%\"", "end": "\"", "patterns": [ { "name": "string.escape.ssraw", "match": "%[A-Fa-f0-9]{2}" } ], "beginCaptures": { "0": { "name": "string.file.quoted.rebol" } }, "endCaptures": { "0": { "name": "string.file.quoted.rebol" } } }, "string-issue": { "name": "string.issue.rebol", "match": "#[^\\s\\n\\[\\]\\(\\)\\/]*" }, "string-multiline": { "name": "string.multiline.rebol", "begin": "\\{", "end": "\\}", "patterns": [ { "include": "#rsp-tag" }, { "include": "#character-inline" }, { "include": "#character-html" }, { "include": "#string-nested-multiline" } ] }, "string-nested-multiline": { "name": "string.multiline.rebol", "begin": "\\{", "end": "\\}", "patterns": [ { "include": "#string-nested-multiline" } ] }, "string-quoted": { "name": "string.rebol", "begin": "\"", "end": "\"", "patterns": [ { "include": "#rsp-tag" }, { "include": "#character-inline" }, { "include": "#character-html" } ] }, "string-tag": { "name": "entity.tag.rebol", "begin": "\u003c(?:\\/|%\\=?\\ )?(?:([-_a-zA-Z0-9]+):)?([-_a-zA-Z0-9:]+)", "end": "(?:\\s/|\\ %)?\u003e", "patterns": [ { "match": " (?:([-_a-zA-Z0-9]+):)?([_a-zA-Z-]+)", "captures": { "0": { "name": "entity.other.namespace.xml" }, "1": { "name": "entity.other.attribute-name.xml" } } }, { "include": "#singlequotedString" }, { "include": "#doublequotedString" } ], "beginCaptures": { "0": { "name": "entity.other.namespace.xml" }, "1": { "name": "entity.name.tag.xml" } } }, "string-url": { "name": "string.url.rebol", "match": "[A-Za-z][\\w]{1,9}:(/{0,3}[^\\s\\n\\[\\]\\(\\)]+|//)" }, "strings": { "patterns": [ { "include": "#character" }, { "include": "#string-quoted" }, { "include": "#string-multiline" }, { "include": "#string-tag" }, { "include": "#string-file-quoted" }, { "include": "#string-file" }, { "include": "#string-url" }, { "include": "#string-email" }, { "include": "#binary-base-two" }, { "include": "#binary-base-sixtyfour" }, { "include": "#binary-base-sixteen" }, { "include": "#string-issue" } ] }, "type-literal": { "name": "series.literal.rebol", "begin": "#\\[(?:(\\w+!)|(true|false|none))", "end": "]", "patterns": [ { "include": "$self" } ], "beginCaptures": { "0": { "name": "native.datatype.rebol" }, "1": { "name": "logic.rebol" } } }, "value-date": { "name": "date.rebol", "match": "\\d{1,2}\\-([A-Za-z]{3}|January|Febuary|March|April|May|June|July|August|September|October|November|December)\\-\\d{4}(/\\d{1,2}[:]\\d{1,2}([:]\\d{1,2}(\\.\\d{1,5})?)?([+-]\\d{1,2}[:]\\d{1,2})?)?", "captures": { "1": { "name": "time.rebol" } } }, "value-money": { "name": "number.money.rebol", "match": "(?\u003c!\\w)-?[a-zA-Z]*\\$\\d+(\\.\\d*)?" }, "value-number": { "name": "constant.numeric.rebol", "match": "(?\u003c!\\w|\\.)([-+]?((\\d+\\.?\\d*)|(\\.\\d+))((e|E)(\\+|-)?\\d+)?)(?=\\W)" }, "value-number-hex": { "name": "number.rebol", "match": "(?\u003c=^|\\s|\\[|\\]|\\)|\\()([0-9A-F]+)h(?=\\s|\\)|\\]|/|;|\\\"|{\\[|\\()", "captures": { "1": { "name": "constant.numeric.rebol" } } }, "value-pair": { "name": "constant.pair.rebol", "match": "(?\u003c!\\w)[-+]?[[:digit:]]+[x][[:digit:]]+" }, "value-time": { "name": "time.rebol", "match": "([-+]?[:]\\d{1,2}([aApP][mM])?)|([-+]?[:]\\d{1,2}[.]\\d{0,9})|([-+]?\\d{1,2}[:]\\d{1,2}([aApP][mM])?)|([-+]?\\d{1,2}[:]\\d{1,2}[.]\\d{0,9})|([-+]?\\d{1,2}[:]\\d{1,2}[:]\\d{1,2}([.]\\d{0,9})?([aApP][mM])?)(?!\\w)" }, "value-tuple": { "name": "tuple.rebol", "match": "([[:digit:]]{0,3}[.][[:digit:]]{0,3}[.][[:digit:]]{0,3}([.][[:digit:]]{0,3}){0,7})" }, "values": { "patterns": [ { "include": "#value-tuple" }, { "include": "#value-number" }, { "include": "#value-pair" }, { "include": "#value-money" }, { "include": "#value-number-hex" }, { "include": "#value-date" }, { "include": "#value-time" } ] }, "word": { "name": "word.rebol", "match": "(?\u003c=^|\\s|\\[|\\]|\\)|\\()[A-Za-z_\\*\\?=_-]+[A-Za-z_0-9=_\\-\\!\\?\\*\\+\\.~:']*(?=\\s|\\)|\\]|/|;|\\\"|{)" }, "word-datatype": { "name": "support.type.rebol", "match": "(?\u003c=^|\\s|\\[|\\]|\\)|\\()([A-Za-z_0-9=_\\-\\?\\*\\+\\.~:']+\\!|as|to)(?=\\s|\\)|\\])" }, "word-getword": { "name": "support.variable.getword.rebol", "match": "(?\u003c=^|\\s|\\[|\\]|\\)|\\():[A-Za-z_0-9=_\\-\\!\\?\\*\\+\\.~:']+(?=\\s|\\)|\\])" }, "word-group1": { "name": "support.function.rebol", "match": "(?\u003c=^|\\s|\\[|\\]|\\)|\\()(?i)(native|alias|all|any|as-string|as-binary|bind|bound\\?|case|catch|checksum|comment|debase|dehex|exclude|difference|disarm|enbase|form|free|get|get-env|in|intersect|minimum-of|maximum-of|mold|new-line|new-line\\?|not|now|prin|print|reduce|compose|construct|reverse|save|script\\?|set|shift|throw|to-hex|trace|try|type\\?|union|charset|unique|unprotect|unset|use|value\\?|compress|decompress|secure|open|close|read|read-io|write-io|write|update|query|wait|input\\?|exp|log-10|log-2|log-e|square-root|cosine|sine|tangent|arccosine|arcsine|arctangent|protect|lowercase|uppercase|entab|detab|connected\\?|browse|launch|stats|get-modes|set-modes|to-local-file|to-rebol-file|encloak|decloak|create-link|do-browser|bind\\?|hide|draw|show|size-text|textinfo|offset-to-caret|caret-to-offset|local-request-file|rgb-to-hsv|hsv-to-rgb|crypt-strength\\?|dh-make-key|dh-generate-key|dh-compute-key|dsa-make-key|dsa-generate-key|dsa-make-signature|dsa-verify-signature|rsa-make-key|rsa-generate-key|rsa-encrypt)(?=\\s|\\(|\\[|/|;|\\\"|{)" }, "word-group2": { "name": "support.function.group2.rebol", "match": "(?\u003c=^|\\s|\\[|\\]|\\)|\\()(?i)(if|either|unless|else|for|foreach|forall|remove-each|until|while|case|loop|repeat|switch)(?=\\s|\\(|\\[|/|;|\\\"|{)" }, "word-group3": { "name": "keyword.series.rebol", "match": "(?\u003c=^|\\s|\\[|\\]|\\)|\\()(?i)(at|insert|append|tail|head|back|repend|next)(?=\\s|\\(|\\[|\\)|\\]|/|;|\\\"|{)" }, "word-group4": { "name": "logic.rebol", "match": "(?\u003c=^|\\s|\\[|\\]|\\)|\\()(?i)(off|false|none|on|true|yes|no|null)(?=\\s|\\(|\\[|\\)|\\]|;|\\\"|{)" }, "word-group5": { "name": "keyword.breaks.rebol", "match": "(?\u003c=^|\\s|\\[|\\]|\\)|\\()(?i)(halt|quit|exit|return|break|quit)(?=\\s|\\(|\\[|/|;|\\\"|{)" }, "word-litword": { "name": "keyword.litword.rebol", "match": "(?\u003c=^|\\s|\\[|\\]|\\)|\\()'[A-Za-z_0-9=_\\-\\!\\?\\*\\+\\.~:']+(?=\\s|\\)|\\])" }, "word-operator": { "name": "keyword.operator.comparison", "match": "(==|!=|\u003c=|\u003e=|\u003c\u003e|\u003c|\u003e|\u003e\u003e|\u003e\u003e\u003e|\u003c\u003c|\\+|-|=|\\*|%|/|\\b(and|or|xor))(?=\\s|\\(|\\[|\\)|\\]|/|;|\\\"|{)" }, "word-refinement": { "name": "keyword.refinement.rebol", "match": "/[^\\s\\n\\[\\]\\(\\)]*" }, "word-setword": { "name": "support.variable.setword.rebol", "match": "[^:\\s\\n\\[\\]\\(\\)]*:" }, "words": { "name": "word.rebol", "patterns": [ { "include": "#function-definition" }, { "include": "#function-definition-does" }, { "include": "#word-refinement" }, { "include": "#word-operator" }, { "include": "#word-getword" }, { "include": "#word-setword" }, { "include": "#word-refinement" }, { "include": "#word-datatype" }, { "include": "#word-group4" }, { "include": "#word-group1" }, { "include": "#word-group2" }, { "include": "#word-group3" }, { "include": "#word-group5" }, { "include": "#word" } ] } } }