diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/language_tal.lua | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/plugins/language_tal.lua b/plugins/language_tal.lua new file mode 100644 index 0000000..aef83cd --- /dev/null +++ b/plugins/language_tal.lua @@ -0,0 +1,70 @@ +--mod-version:3 +local syntax = require 'core.syntax' + +local label, sublabel = "function", "keyword2" + +syntax.add { + name = "Uxntal", + files = { "%.tal$" }, + block_comment = { '(', ')' }, + patterns = { + { pattern = {'%(', '%)'}, type = "comment" }, + { pattern = "@%S*%s+%f[[]", type = label }, + { pattern = "@%S+", type = "string" }, + { pattern = "%u+()[2kr]*", type = { "symbol", "keyword" } }, + { pattern = "%%%S+", type = "keyword" }, + { pattern = "&%S+", type = sublabel }, + { pattern = "\"%S+", type = "string" }, + { pattern = "%.%S+()/%S*", type = { label, sublabel } }, + { pattern = "%.%S+", type = label }, + { pattern = "|%x+", type = "string" }, + { pattern = "[.,;_=-]%S+", type = sublabel }, + { pattern = "%$%d+", type = "number" }, + { pattern = "#?%x%x%x%x%f[%X]", type = "number" }, + { pattern = "#?%x%x%f[%X]", type = "number" }, + { pattern = "[!?]()[^%[%]{}%s]+", type = { "operator", "function" } }, + { pattern = "[^%[%]{}%s]+", type = "function" }, + }, + symbols = { + -- no mode keywords + ["JCI"] = "keyword", + ["JMI"] = "keyword", + ["JSI"] = "keyword", + ["BRK"] = "keyword", + + -- lit only has 4 modes + ["LIT"] = "keyword", + + -- the rest + ["EQU"] = "keyword", + ["LDZ"] = "keyword", + ["ADD"] = "keyword", + ["INC"] = "keyword", + ["NEQ"] = "keyword", + ["STZ"] = "keyword", + ["SUB"] = "keyword", + ["POP"] = "keyword", + ["GTH"] = "keyword", + ["LDR"] = "keyword", + ["MUL"] = "keyword", + ["NIP"] = "keyword", + ["LTH"] = "keyword", + ["STR"] = "keyword", + ["DIV"] = "keyword", + ["SWP"] = "keyword", + ["JMP"] = "keyword", + ["LDA"] = "keyword", + ["AND"] = "keyword", + ["ROT"] = "keyword", + ["JCN"] = "keyword", + ["STA"] = "keyword", + ["ORA"] = "keyword", + ["DUP"] = "keyword", + ["JSR"] = "keyword", + ["DEI"] = "keyword", + ["EOR"] = "keyword", + ["OVR"] = "keyword", + ["STH"] = "keyword", + ["DEO"] = "keyword", + ["SFT"] = "keyword", + }} |