summaryrefslogtreecommitdiff
path: root/context/data/scite/context/lexers/scite-context-lexer-sas.lua
diff options
context:
space:
mode:
Diffstat (limited to 'context/data/scite/context/lexers/scite-context-lexer-sas.lua')
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-sas.lua59
1 files changed, 26 insertions, 33 deletions
diff --git a/context/data/scite/context/lexers/scite-context-lexer-sas.lua b/context/data/scite/context/lexers/scite-context-lexer-sas.lua
index e36569911..051918bbf 100644
--- a/context/data/scite/context/lexers/scite-context-lexer-sas.lua
+++ b/context/data/scite/context/lexers/scite-context-lexer-sas.lua
@@ -10,28 +10,27 @@ local info = {
local P, R, S = lpeg.P, lpeg.R, lpeg.S
-local lexer = require("scite-context-lexer")
-local context = lexer.context
-local patterns = context.patterns
+local lexers = require("scite-context-lexer")
-local token = lexer.token
-local exact_match = lexer.exact_match
+local patterns = lexers.patterns
+local token = lexers.token
-local saslexer = lexer.new("sas","scite-context-lexer-sAs")
-local whitespace = saslexer.whitespace
+local saslexer = lexers.new("sas","scite-context-lexer-sAs")
+local saswhitespace = saslexer.whitespace
local keywords_standard = {
- "anova" , "data", "run", "proc",
+ "anova", "data", "run", "proc",
}
local keywords_dialects = {
- "class" , "do", "end" , "int" , "for" , "model" , "rannor" , "to" , "output"
+ "class", "do", "end", "int", "for", "model", "rannor", "to", "output",
}
local space = patterns.space -- S(" \n\r\t\f\v")
local any = patterns.any
local restofline = patterns.restofline
local startofline = patterns.startofline
+local exactmatch = patterns.exactmatch
local squote = P("'")
local dquote = P('"')
@@ -45,48 +44,42 @@ local decimal = patterns.decimal
local float = patterns.float
local integer = P("-")^-1 * decimal
-local spacing = token(whitespace, space^1)
+local spacing = token(saswhitespace, space^1)
+
local rest = token("default", any)
local shortcomment = token("comment", (P("#") + P("--")) * restofline^0)
local longcomment = token("comment", begincomment * (1-endcomment)^0 * endcomment^-1)
-local identifier = token("default",lexer.helpers.utfidentifier)
+local identifier = token("default", lexer.helpers.utfidentifier)
-local shortstring = token("quote", dquote) -- can be shared
+local shortstring = token("quote", dquote) -- can be shared
* token("string", (escaped + (1-dquote))^0)
- * token("quote", dquote)
- + token("quote", squote)
+ * token("quote", dquote)
+ + token("quote", squote)
* token("string", (escaped + (1-squote))^0)
- * token("quote", squote)
- + token("quote", bquote)
+ * token("quote", squote)
+ + token("quote", bquote)
* token("string", (escaped + (1-bquote))^0)
- * token("quote", bquote)
+ * token("quote", bquote)
+
+local p_keywords_s = exactmatch(keywords_standard,true)
+local p_keywords_d = exactmatch(keywords_dialects,true)
-local p_keywords_s = exact_match(keywords_standard,nil,true)
-local p_keywords_d = exact_match(keywords_dialects,nil,true)
local keyword_s = token("keyword", p_keywords_s)
local keyword_d = token("command", p_keywords_d)
local number = token("number", float + integer)
local operator = token("special", S("+-*/%^!=<>;:{}[]().&|?~"))
-saslexer._tokenstyles = context.styleset
-
-saslexer._foldpattern = P("/*") + P("*/") + S("{}") -- separate entry else interference
-
-saslexer._foldsymbols = {
- _patterns = {
- "/%*",
- "%*/",
- },
- ["comment"] = {
- ["/*"] = 1,
- ["*/"] = -1,
- }
+saslexer.folding = {
+ ["/*"] = { ["comment"] = 1 },
+ ["*/"] = { ["comment"] = -1 },
+ -- ["{"] = { ["operator"] = 1 },
+ -- ["}"] = { ["operator"] = -1 },
}
-saslexer._rules = {
+saslexer.rules = {
{ "whitespace", spacing },
{ "keyword-s", keyword_s },
{ "keyword-d", keyword_d },