From 0a080ba03c30dab12ac2c3781d95a5b548ff74ab Mon Sep 17 00:00:00 2001 From: Aaron Clark Date: Fri, 2 Dec 2022 18:49:25 -0700 Subject: [PATCH] Syntax: added support for Smalltalk (#2626) --- runtime/syntax/smalltalk.yaml | 55 +++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 runtime/syntax/smalltalk.yaml diff --git a/runtime/syntax/smalltalk.yaml b/runtime/syntax/smalltalk.yaml new file mode 100644 index 00000000..ae926c38 --- /dev/null +++ b/runtime/syntax/smalltalk.yaml @@ -0,0 +1,55 @@ +filetype: smalltalk + +detect: + filename: "\\.(st|sources|changes)$" + +rules: + - statement: "\\b(self|nil|true|false|ifTrue|ifFalse|whileTrue|whileFalse)\\b" + - constant: "(\\$|@|@@)?\\b[A-Z]+[0-9A-Z_a-z]*" + - constant.number: "(?i)\\b0x[0-9a-fA-F][0-9a-f_]*\\b" + - constant.number: "(?i)\\b0b[01][01_]*\\b" + - constant.number: "(?i)\\b[0-9][0-9_]*(['.'][0-9_]+)?(e[\\-]?[0-9_]+)?\\b" + # Ruby "Symbols" + - constant: "(i?)([ ]|^):[0-9A-Z_]+\\b" + - constant: "\\b(__FILE__|__LINE__)\\b" + - constant: "/([^/]|(\\\\/))*/[iomx]*|%r\\{([^}]|(\\\\}))*\\}[iomx]*" + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: [] + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - symbol.brackets: + start: "#\\{" + end: "\\}" + rules: + - default: ".*" + + - constant.string.exec: + start: "`" + end: "`" + skip: "\\\\." + rules: + - symbol.brackets: + start: "#\\{" + end: "\\}" + rules: + - default: ".*" + + - constant.string: "%[QW]?\\{[^}]*\\}|%[QW]?\\([^)]*\\)|%[QW]?<[^>]*>|%[QW]?\\[[^]]*\\]|%[QW]?\\$[^$]*\\$|%[QW]?\\^[^^]*\\^|%[QW]?![^!]*!" + - constant.string: "%[qw]\\{[^}]*\\}|%[qw]\\([^)]*\\)|%[qw]<[^>]*>|%[qw]\\[[^]]*\\]|%[qw]\\$[^$]*\\$|%[qw]\\^[^^]*\\^|%[qw]![^!]*!" + - constant.string.exec: "%[x]\\{[^}]*\\}|%[x]\\([^)]*\\)|%[x]<[^>]*>|%[x]\\[[^]]*\\]|%[x]\\$[^$]*\\$|%[x]\\^[^^]*\\^|%[x]![^!]*!" + - symbol.operator: "[-+/*=<>!~%&|^]|\\b:" + - symbol.brackets: "([(){}]|\\[|\\])" + - constant.macro: + start: "<<-?'?EOT'?" + end: "^EOT" + rules: [] + + - preproc.shebang: "^#!.+?( |$)"