From 1edef2bae298639a25c7ce15b2e4cad75a587564 Mon Sep 17 00:00:00 2001 From: Steve Waldo Date: Wed, 3 Apr 2024 15:04:17 -0600 Subject: [PATCH 1/2] Add syntax highlighting for The Icon Programming Language --- runtime/syntax/icon.yaml | 41 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100755 runtime/syntax/icon.yaml diff --git a/runtime/syntax/icon.yaml b/runtime/syntax/icon.yaml new file mode 100755 index 000000000..5b74eaa68 --- /dev/null +++ b/runtime/syntax/icon.yaml @@ -0,0 +1,41 @@ +#The Icon Programming Language https://www2.cs.arizona.edu/icon +filetype: Icon + +detect: + filename: "\\.icn$" + +rules: + - identifier: "\\b[A-Za-z_][0-9A-Za-z_]*\\b" + - preproc: "^[[:space:]]*\\$(include|define|undef|line|ifdef|ifndef|else|endif)" + - statement: "\\b(break|by|case|create|default|do|else|end|every|fail|global|if|initial|invocable|link|local|next|not|of|procedure|record|repeat|return|static|suspend|then|to|until|while)\\b" + - symbol.operator: "([.:;,+*|=!\\%@\\^\\?]|<|>|/|-|&)" + - symbol.brackets: "[(){}]|\\[|\\]" + - constant.number: "(\\b([1-9][0-9]*)\\b)" + - constant.number: "(\\b([1-9][0-9]?(r|R)[0-9a-zA-Z]+)\\b)" + - constant.number: "(\\b(([0-9]*[.][0-9]+|[0-9]+[.][0-9]*)([Ee][+-]?[0-9]+)?|[0-9]+[Ee][+-]?[0-9]+)\\b)" + - special: "\\B\\&(allocated|ascii|clock|collections|cset|current|date|dateline|digits|dump|e|error|errornumber|errortext|errorvalue|errout|fail|features|file|host|input|lcase|letters|level|line|main|null|output|phi|pi|pos|progname|random|regions|source|storage|subject|time|trace|ucase|version)\\b" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\[bdeflnrtv'\\\"\\\\]" + - constant.specialChar: "\\\\[0-7]{3}" + - constant.specialChar: "\\\\x[0-9a-fA_F]{2}" + - constant.specialChar: "\\\\\\^." + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\[bdeflnrtv'\\\"\\\\]" + - constant.specialChar: "\\\\[0-7]{3}" + - constant.specialChar: "\\\\x[0-9a-fA_F]{2}" + - constant.specialChar: "\\\\\\^." + + - comment: + start: "#" + end: "$" + rules: [] From 20b285ebac5b5e92ed571c7735ea4556289b593c Mon Sep 17 00:00:00 2001 From: Steve Waldo Date: Thu, 4 Apr 2024 09:46:52 -0600 Subject: [PATCH 2/2] Per code review, removed unnecessary parens and corrected regex typo --- runtime/syntax/icon.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) mode change 100755 => 100644 runtime/syntax/icon.yaml diff --git a/runtime/syntax/icon.yaml b/runtime/syntax/icon.yaml old mode 100755 new mode 100644 index 5b74eaa68..f089e5690 --- a/runtime/syntax/icon.yaml +++ b/runtime/syntax/icon.yaml @@ -8,11 +8,11 @@ rules: - identifier: "\\b[A-Za-z_][0-9A-Za-z_]*\\b" - preproc: "^[[:space:]]*\\$(include|define|undef|line|ifdef|ifndef|else|endif)" - statement: "\\b(break|by|case|create|default|do|else|end|every|fail|global|if|initial|invocable|link|local|next|not|of|procedure|record|repeat|return|static|suspend|then|to|until|while)\\b" - - symbol.operator: "([.:;,+*|=!\\%@\\^\\?]|<|>|/|-|&)" - - symbol.brackets: "[(){}]|\\[|\\]" - - constant.number: "(\\b([1-9][0-9]*)\\b)" - - constant.number: "(\\b([1-9][0-9]?(r|R)[0-9a-zA-Z]+)\\b)" - - constant.number: "(\\b(([0-9]*[.][0-9]+|[0-9]+[.][0-9]*)([Ee][+-]?[0-9]+)?|[0-9]+[Ee][+-]?[0-9]+)\\b)" + - symbol.operator: "[.:;,+*|=!\\%@\\^\\?]|<|>|/|-|&" + - symbol.brackets: "[(){}\\[\\]]" + - constant.number: "\\b[1-9][0-9]*\\b" + - constant.number: "\\b[1-9][0-9]?(r|R)[0-9a-zA-Z]+\\b" + - constant.number: "\\b(([0-9]*[.][0-9]+|[0-9]+[.][0-9]*)([Ee][+-]?[0-9]+)?|[0-9]+[Ee][+-]?[0-9]+)\\b" - special: "\\B\\&(allocated|ascii|clock|collections|cset|current|date|dateline|digits|dump|e|error|errornumber|errortext|errorvalue|errout|fail|features|file|host|input|lcase|letters|level|line|main|null|output|phi|pi|pos|progname|random|regions|source|storage|subject|time|trace|ucase|version)\\b" - constant.string: @@ -32,7 +32,7 @@ rules: rules: - constant.specialChar: "\\\\[bdeflnrtv'\\\"\\\\]" - constant.specialChar: "\\\\[0-7]{3}" - - constant.specialChar: "\\\\x[0-9a-fA_F]{2}" + - constant.specialChar: "\\\\x[0-9a-fA-F]{2}" - constant.specialChar: "\\\\\\^." - comment: