prism-code-editor
Version:
Lightweight, extensible code editor component for the web using Prism
284 lines (283 loc) • 9.33 kB
JavaScript
import { a as languages, s as rest } from "../../core-8vQkh0Rd.js";
import { n as re } from "../../shared-BPLAFNn7.js";
//#region src/prism/languages/sas.js
var stringPattern = "(?:\"(?:\"\"|[^\"])*\"(?!\")|'(?:''|[^'])*'(?!'))";
var number = /\b(?:\d[a-f\d]*x|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b/i;
var numericConstant = {
pattern: RegExp(stringPattern + "[bx]"),
alias: "number"
};
var macroVariable = /&[a-z_]\w*/i;
var macroKeyword = {
pattern: /(^|[\s=(])%(?:abort|by|cms|copy|display|do|else|end|eval|global|goto|go|if|inc|include|index|input|length|let|list|local|put|q?ktrim|q?scan|q?substr|q?sysfunc|q?upcase|return|run|superq|symdel|symexist|symglobl|symlocal|syscall|sysevalf|sysexec|sysget|sysrput|then|ts?o|unquote|until|while|window)\b/i,
lookbehind: true,
alias: "keyword"
};
var step = {
pattern: /(^|\s)(?:proc\s+\w+|data(?!=)|quit|run)\b/i,
alias: "keyword",
lookbehind: true
};
var comment = {
pattern: /\/\*[^]*?\*\/|(^[ ]*|;\s*)\*[^;]*;/m,
lookbehind: true
};
var string = RegExp(stringPattern, "g");
var punctuation = /[$%@()[\]{}.,;\\]/;
var func = {
pattern: /%?\b\w+(?=\()/,
alias: "keyword"
};
var argValue = {
pattern: /(=\s*)[a-z\.]+/i,
lookbehind: true
};
var arg = {
pattern: /[a-z]+/i,
alias: "keyword"
};
var args = {
"function": func,
"arg-value": argValue,
"operator": /=/,
"macro-variable": macroVariable,
"arg": arg,
"number": number,
"numeric-constant": numericConstant,
"punctuation": punctuation,
"string": string
};
var format = {
pattern: /\b(?:format|put)\b=?[\w'$.]+/i,
inside: {
"keyword": /^(?:format|put)(?==)/i,
"equals": /=/,
"format": {
pattern: /(?:\w|\$\d)+\.\d?/,
alias: "number"
}
}
};
var altformat = {
pattern: /\b(?:format|put)\s+[\w']+(?:\s+[$.\w]+)+(?=;)/i,
inside: {
"keyword": /^(?:format|put)/i,
"format": {
pattern: /[$\w]+\.\d?/,
alias: "number"
}
}
};
var globalStatements = {
pattern: /((?:^|\s)=?)(?:catname|checkpoint execute_always|dm|endsas|filename|footnote|%include|libname|%list|lock|missing|options|page|resetline|%run|sasfile|skip|sysecho|title\d?)\b/i,
lookbehind: true,
alias: "keyword"
};
var submitStatement = {
pattern: /(^|\s)(?:submit(?:\s+(?:load|norun|parseonly))?|endsubmit)\b/i,
lookbehind: true,
alias: "keyword"
};
var actionSets = "astore|accesscontrol|aggregation|audio|autotune|bayesiannetclassifier|biomedimage|boolrule|builtins|cardinality|cdm|clustering|conditionalrandomfields|configuration|copula|countreg|datadiscovery|datapreprocess|datasciencepilot|datastep|decisiontree|deduplication|deeplearn|deepneural|deeprnn|ds2|ecm|entityres|espcluster|explainmodel|factmac|fastknn|fcmpact|fedsql|freqtab|gvarcluster|gam|gleam|graphsemisuplearn|hiddenmarkovmodel|hypergroup|[ip]ca|image|iml|kernalpca|langmodel|ldatopic|loadstreams|mbc|mixed|mltools|modelpublishing|network|neuralnet|nmf|nonparametricbayes|nonlinear|optnetwork|optimization|panel|percentile|phreg|pls|qkb|qlim|quantreg|recommend|regression|reinforcementlearn|robustpca|rulemining|sampling|sandwich|sccasl|search(?:analytics)?|sentimentanalysis|sequence|session(?:prop)?|severity|simsystem|simple|smartdata|sparkembeddedprocess|sparseml|spatialreg|spc|stabilitymonitoring|svdatadescription|svm|table|text(?:filters|frequency|mining|parse|rule(?:develop|score)|topic|util)|timedata|transpose|tsinfo|tsreconcile|unitimeseries|varreduce";
var casActions = {
pattern: re("(^|\\s)(?:action\\s+)?<0>\\.[a-z]+\\b[^;]+", [actionSets], "i"),
lookbehind: true,
inside: {
"keyword": re("<0>\\.[a-z]+\\b", [actionSets], "i"),
"action": {
pattern: /(?:action)/i,
alias: "keyword"
},
"comment": comment,
"function": func,
"arg-value": argValue,
"operator": /=/,
"argument": arg,
"number": number,
"numeric-constant": numericConstant,
"punctuation": punctuation,
"string": string
}
};
var keywords = {
pattern: /((?:^|\s)=?)(?:after|analysis|and|array|barchart|barwidth|begingraph|by|call|cas|cbarline|cfill|class|classlev|close|column|computed?|contains|continue|data(?==)|define|delete|describe|document|do\s+over|dol?|drop|dul|else|end(?:comp|source)?|entrytitle|evaluate|eval|execute|exec|exit|filename|fillattrs|fil[el]|flist|fnc|functionlist|function|global|goto|groupby|group|headline|headskip|histogram|if|infile|keep|keylabel|keyword|label|layout|leave|legendlabel|length|libname|loadactionset|merge|midpoints|_?null_|name|noobs|nowd|ods|options|or|otherwise|output|[op]ut|overlay|over|plot|print|raise|ranexp|rannor|rbreak|retain|return|select|session|sessref|set|source|statgraph|sum|summarize|table|temp|terminate|then\s+do|[tw]hen|title\d?|to|var|where|xaxisopts|y2?axisopts)\b/i,
lookbehind: true
};
languages.sas = {
"datalines": {
pattern: /^([ ]*)(?:cards|(?:data)?lines);[^]+?^[ ]*;/im,
lookbehind: true,
alias: "string",
inside: {
"keyword": /^(?:cards|(?:data)?lines)/i,
"punctuation": /;/
}
},
"proc-sql": {
pattern: /(^proc\s+(?:fed)?sql(?:\s+[\w|=]+)?;)[^]+?(?=^(?:proc\s+\w+|data|quit|run);|(?![^]))/im,
lookbehind: true,
inside: {
"sql": {
pattern: re("^[ ]*(?:select|alter\\s+table|(?:create|describe|drop)\\s+(?:index|table(?:\\s+constraints)?|view)|create\\s+unique\\s+index|insert\\s+into|update)(?:<0>|[^;\"'])+;", [stringPattern], "im"),
alias: "language-sql",
inside: "sql"
},
"global-statements": globalStatements,
"sql-statements": {
pattern: /(^|\s)(?:disconnect\s+from|begin|commit|exec(?:ute)?|reset|rollback|validate)\b/i,
lookbehind: true,
alias: "keyword"
},
"number": number,
"numeric-constant": numericConstant,
"punctuation": punctuation,
"string": string
}
},
"proc-groovy": {
pattern: /(^proc\s+groovy(?:\s+[\w|=]+)?;)[^]+?(?=^(?:proc\s+\w+|data|quit|run);|(?![^]))/im,
lookbehind: true,
inside: {
"comment": comment,
"groovy": {
pattern: re("(^[ ]*submit(?:\\s+(?:load|norun|parseonly))?)(?:<0>|[^\"'])+?(?=endsubmit;)", [stringPattern], "im"),
lookbehind: true,
alias: "language-groovy",
inside: "groovy"
},
"keyword": keywords,
"submit-statement": submitStatement,
"global-statements": globalStatements,
"number": number,
"numeric-constant": numericConstant,
"punctuation": punctuation,
"string": string
}
},
"proc-lua": {
pattern: /(^proc\s+lua(?:\s+[\w|=]+)?;)[^]+?(?=^(?:proc\s+\w+|data|quit|run);|(?![^]))/im,
lookbehind: true,
inside: {
"comment": comment,
"lua": {
pattern: re("(^[ ]*submit(?:\\s+(?:load|norun|parseonly))?)(?:<0>|[^\"'])+?(?=endsubmit;)", [stringPattern], "im"),
lookbehind: true,
alias: "language-lua",
inside: "lua"
},
"keyword": keywords,
"submit-statement": submitStatement,
"global-statements": globalStatements,
"number": number,
"numeric-constant": numericConstant,
"punctuation": punctuation,
"string": string
}
},
"proc-cas": {
pattern: /(^proc\s+cas(?:\s+[\w|=]+)?;)[^]+?(?=^(?:proc\s+\w+|quit|data);|(?![^]))/im,
lookbehind: true,
inside: {
"comment": comment,
"statement-var": {
pattern: /((?:^|\s)=?)saveresult\s[^;]+/im,
lookbehind: true,
inside: {
"statement": {
pattern: /^saveresult\s+\S+/i,
inside: { keyword: /^(?:saveresult)/i }
},
[rest]: args
}
},
"cas-actions": casActions,
"statement": {
pattern: /((?:^|\s)=?)(?:default|(?:un)?set|on|output|upload)[^;]+/im,
lookbehind: true,
inside: args
},
"step": step,
"keyword": keywords,
"function": func,
"format": format,
"altformat": altformat,
"global-statements": globalStatements,
"number": number,
"numeric-constant": numericConstant,
"punctuation": punctuation,
"string": string
}
},
"proc-args": {
pattern: re("(^proc\\s+\\w+\\s+)(?!\\s)(?:[^;\"']|<0>)+;", [stringPattern], "im"),
lookbehind: true,
inside: args
},
"macro-keyword": macroKeyword,
"macro-variable": macroVariable,
"macro-string-functions": {
pattern: /(^|\s|=)%(?:nr)?(?:b?quote|str)\(.*?(?:[^%]\))/i,
lookbehind: true,
inside: {
"function": {
pattern: /^[^(]+/,
alias: "keyword"
},
"macro-keyword": macroKeyword,
"macro-variable": macroVariable,
"escaped-char": /%["'()<>=¬^~;,#]/,
"punctuation": punctuation
}
},
"macro-declaration": {
pattern: /^%macro[^;]+(?=;)/im,
inside: { "keyword": /%macro/i }
},
"macro-end": {
pattern: /^%mend[^;]+(?=;)/im,
inside: { "keyword": /%mend/i }
},
"macro": {
pattern: /%_\w+(?=\()/,
alias: "keyword"
},
"input": {
pattern: /\binput\s[-\w\s/*.$&]+;/i,
inside: {
"input": {
alias: "keyword",
pattern: /^input/i
},
"comment": comment,
"number": number,
"numeric-constant": numericConstant
}
},
"options-args": {
pattern: /(^options)[()"'|:\\\w\s=<>/*+-]+(?=;)/im,
lookbehind: true,
inside: args
},
"cas-actions": casActions,
"comment": comment,
"function": func,
"format": format,
"altformat": altformat,
"numeric-constant": numericConstant,
"datetime": {
pattern: RegExp(stringPattern + "(?:dt?|t)"),
alias: "number"
},
"string": string,
"step": step,
"keyword": keywords,
"operator-keyword": {
pattern: /\b(?:eq|[gl][et]|in|ne|not)\b/i,
alias: "operator"
},
"number": number,
"operator": /\*\*?|\|\|?|!!?|¦¦?|<>|><|[&=/+-]|[~¬^<>]=?/,
"punctuation": punctuation
};
//#endregion
//# sourceMappingURL=sas.js.map