Skip to content

Commit f73499e

Browse files
cedporterquentinvernot
authored andcommitted
SAS: Improved macro string functions (PrismJS#2463)
1 parent 4e01518 commit f73499e

File tree

4 files changed

+200
-208
lines changed

4 files changed

+200
-208
lines changed

components/prism-sas.js

+18-13
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,16 @@
88
alias: 'number'
99
};
1010

11+
var macroVariable = {
12+
pattern: /&[a-z_][a-z_0-9]*/i
13+
};
14+
15+
var macroKeyword = {
16+
pattern: /((?:^|\s|=|\())%(?:ABORT|BY|CMS|COPY|DISPLAY|DO|ELSE|END|EVAL|GLOBAL|GO|GOTO|IF|INC|INCLUDE|INDEX|INPUT|KTRIM|LENGTH|LET|LIST|LOCAL|PUT|QKTRIM|QSCAN|QSUBSTR|QSYSFUNC|QUPCASE|RETURN|RUN|SCAN|SUBSTR|SUPERQ|SYMDEL|SYMGLOBL|SYMLOCAL|SYMEXIST|SYSCALL|SYSEVALF|SYSEXEC|SYSFUNC|SYSGET|SYSRPUT|THEN|TO|TSO|UNQUOTE|UNTIL|UPCASE|WHILE|WINDOW)\b/i,
17+
lookbehind: true,
18+
alias: 'keyword'
19+
};
20+
1121
var step = {
1222
pattern: /(^|\s+)(?:proc\s+\w+|quit|run|data(?!\=))\b/i,
1323
alias: 'keyword',
@@ -41,10 +51,7 @@
4151
lookbehind: true
4252
},
4353
'operator': /=/,
44-
'macro-variable': {
45-
pattern: /&[^\.]*\./i,
46-
alias: 'string'
47-
},
54+
'macro-variable': macroVariable,
4855
'arg': {
4956
pattern: /[A-Z]+/i,
5057
alias: 'keyword'
@@ -237,6 +244,9 @@
237244
lookbehind: true,
238245
inside: args
239246
},
247+
/*Special keywords within macros*/
248+
'macro-keyword': macroKeyword,
249+
'macro-variable': macroVariable,
240250
'macro-string-functions': {
241251
pattern: /((?:^|\s|=))%(?:NRBQUOTE|NRQUOTE|NRSTR|BQUOTE|QUOTE|STR)\(.*?(?:[^%]\))/i,
242252
lookbehind: true,
@@ -245,19 +255,14 @@
245255
pattern: /%(?:NRBQUOTE|NRQUOTE|NRSTR|BQUOTE|QUOTE|STR)/i,
246256
alias: 'keyword'
247257
},
248-
'string': {
249-
pattern: /(\()[^)]+/,
250-
lookbehind: true
258+
'macro-keyword': macroKeyword,
259+
'macro-variable': macroVariable,
260+
'escaped-char': {
261+
pattern: /%['"()<>=¬^~;,#]/i,
251262
},
252263
'punctuation': punctuation
253264
}
254265
},
255-
/*Special keywords within macros*/
256-
'macro-keyword': {
257-
pattern: /((?:^|\s)=?)%(?:ABORT|BQUOTE|BY|CMS|COPY|DISPLAY|DO|ELSE|END|EVAL|GLOBAL|GO|GOTO|IF|INC|INCLUDE|INDEX|INPUT|KTRIM|LENGTH|LET|LIST|LOCAL|NRBQUOTE|NRQUOTE|NRSTR|PUT|QKTRIM|QSCAN|QSUBSTR|QSYSFUNC|QUOTE|QUPCASE|RETURN|RUN|SCAN|STR|SUBSTR|SUPERQ|SYMDEL|SYMGLOBL|SYMLOCAL|SYMEXIST|SYSCALL|SYSEVALF|SYSEXEC|SYSFUNC|SYSGET|SYSRPUT|THEN|TO|TSO|UNQUOTE|UNTIL|UPCASE|WHILE|WINDOW)\b/i,
258-
lookbehind: true,
259-
alias: 'keyword'
260-
},
261266
'macro-declaration': {
262267
pattern: /^%macro[^;]+(?=;)/im,
263268
inside: {

components/prism-sas.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)