diff options
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.lua | 59 |
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 }, |