aboutsummaryrefslogtreecommitdiff
path: root/plugins/language_tal.lua
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/language_tal.lua')
-rw-r--r--plugins/language_tal.lua70
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",
+ }}