Scheme: Added missing special keywords (#2304)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
diff --git a/components/prism-scheme.js b/components/prism-scheme.js
index ad5d000..878383f 100644
--- a/components/prism-scheme.js
+++ b/components/prism-scheme.js
@@ -18,7 +18,7 @@ Prism.languages.scheme = {
lookbehind: true
},
'keyword': {
- pattern: /(\()(?:define(?:-syntax|-library|-values)?|(?:case-)?lambda|let(?:\*|rec)?(?:-values)?|else|if|cond|begin|delay(?:-force)?|parameterize|guard|set!|(?:quasi-)?quote|syntax-rules)(?=[()\s])/,
+ pattern: /(\()(?:define(?:-library|-macro|-syntax|-values)?|defmacro|(?:case-)?lambda|let(?:(?:\*|rec)?(?:-values)?|-syntax|rec-syntax)|else|if|cond|begin|delay(?:-force)?|parameterize|guard|set!|(?:quasi-)?quote|syntax-(?:case|rules))(?=[()\s])/,
lookbehind: true
},
'builtin': {
diff --git a/components/prism-scheme.min.js b/components/prism-scheme.min.js
index 4a2d1fa..b1a8826 100644
--- a/components/prism-scheme.min.js
+++ b/components/prism-scheme.min.js
@@ -1 +1 @@
-Prism.languages.scheme={comment:/;.*/,string:{pattern:/"(?:[^"\\]|\\.)*"/,greedy:!0},symbol:{pattern:/'[^()#'\s]+/,greedy:!0},character:{pattern:/#\\(?:[ux][a-fA-F\d]+|[-a-zA-Z]+|\S)/,greedy:!0,alias:"string"},"lambda-parameter":{pattern:/(\(lambda\s+\()[^()'\s]+/,lookbehind:!0},keyword:{pattern:/(\()(?:define(?:-syntax|-library|-values)?|(?:case-)?lambda|let(?:\*|rec)?(?:-values)?|else|if|cond|begin|delay(?:-force)?|parameterize|guard|set!|(?:quasi-)?quote|syntax-rules)(?=[()\s])/,lookbehind:!0},builtin:{pattern:/(\()(?:(?:cons|car|cdr|list|call-with-current-continuation|call\/cc|append|abs|apply|eval)\b|null\?|pair\?|boolean\?|eof-object\?|char\?|procedure\?|number\?|port\?|string\?|vector\?|symbol\?|bytevector\?)(?=[()\s])/,lookbehind:!0},number:{pattern:/([\s()])(?:(?:#d(?:#[ei])?|#[ei](?:#d)?)?[+-]?(?:(?:\d*\.?\d+(?:[eE][+-]?\d+)?|\d+\/\d+)(?:[+-](?:\d*\.?\d+(?:[eE][+-]?\d+)?|\d+\/\d+)i)?|(?:\d*\.?\d+(?:[eE][+-]?\d+)?|\d+\/\d+)i)|(?:#[box](?:#[ei])?|#[ei](?:#[box])?)[+-]?(?:[\da-fA-F]+(?:\/[\da-fA-F]+)?(?:[+-][\da-fA-F]+(?:\/[\da-fA-F]+)?i)?|[\da-fA-F]+(?:\/[\da-fA-F]+)?i))(?=[\s()]|$)/,lookbehind:!0},boolean:/#[tf]/,operator:{pattern:/(\()(?:[-+*%\/]|[<>]=?|=>?)(?=\s|$)/,lookbehind:!0},function:{pattern:/(\()[^()'\s]+(?=[()\s]|$)/,lookbehind:!0},punctuation:/[()']/};
\ No newline at end of file
+Prism.languages.scheme={comment:/;.*/,string:{pattern:/"(?:[^"\\]|\\.)*"/,greedy:!0},symbol:{pattern:/'[^()#'\s]+/,greedy:!0},character:{pattern:/#\\(?:[ux][a-fA-F\d]+|[-a-zA-Z]+|\S)/,greedy:!0,alias:"string"},"lambda-parameter":{pattern:/(\(lambda\s+\()[^()'\s]+/,lookbehind:!0},keyword:{pattern:/(\()(?:define(?:-library|-macro|-syntax|-values)?|defmacro|(?:case-)?lambda|let(?:(?:\*|rec)?(?:-values)?|-syntax|rec-syntax)|else|if|cond|begin|delay(?:-force)?|parameterize|guard|set!|(?:quasi-)?quote|syntax-(?:case|rules))(?=[()\s])/,lookbehind:!0},builtin:{pattern:/(\()(?:(?:cons|car|cdr|list|call-with-current-continuation|call\/cc|append|abs|apply|eval)\b|null\?|pair\?|boolean\?|eof-object\?|char\?|procedure\?|number\?|port\?|string\?|vector\?|symbol\?|bytevector\?)(?=[()\s])/,lookbehind:!0},number:{pattern:/([\s()])(?:(?:#d(?:#[ei])?|#[ei](?:#d)?)?[+-]?(?:(?:\d*\.?\d+(?:[eE][+-]?\d+)?|\d+\/\d+)(?:[+-](?:\d*\.?\d+(?:[eE][+-]?\d+)?|\d+\/\d+)i)?|(?:\d*\.?\d+(?:[eE][+-]?\d+)?|\d+\/\d+)i)|(?:#[box](?:#[ei])?|#[ei](?:#[box])?)[+-]?(?:[\da-fA-F]+(?:\/[\da-fA-F]+)?(?:[+-][\da-fA-F]+(?:\/[\da-fA-F]+)?i)?|[\da-fA-F]+(?:\/[\da-fA-F]+)?i))(?=[\s()]|$)/,lookbehind:!0},boolean:/#[tf]/,operator:{pattern:/(\()(?:[-+*%\/]|[<>]=?|=>?)(?=\s|$)/,lookbehind:!0},function:{pattern:/(\()[^()'\s]+(?=[()\s]|$)/,lookbehind:!0},punctuation:/[()']/};
\ No newline at end of file
diff --git a/tests/languages/scheme/keyword_feature.test b/tests/languages/scheme/keyword_feature.test
index 1abc828..53085d5 100644
--- a/tests/languages/scheme/keyword_feature.test
+++ b/tests/languages/scheme/keyword_feature.test
@@ -1,7 +1,9 @@
(define)
-(define-syntax)
(define-library)
+(define-macro)
+(define-syntax)
(define-values)
+(defmacro)
(case-lambda)
(lambda)
(let)
@@ -22,14 +24,19 @@
(quasi-quote)
(quote)
(syntax-rules)
+(syntax-case)
+(letrec-syntax)
+(let-syntax)
----------------------------------------------------
[
["punctuation", "("], ["keyword", "define"], ["punctuation", ")"],
- ["punctuation", "("], ["keyword", "define-syntax"], ["punctuation", ")"],
["punctuation", "("], ["keyword", "define-library"], ["punctuation", ")"],
+ ["punctuation", "("], ["keyword", "define-macro"], ["punctuation", ")"],
+ ["punctuation", "("], ["keyword", "define-syntax"], ["punctuation", ")"],
["punctuation", "("], ["keyword", "define-values"], ["punctuation", ")"],
+ ["punctuation", "("], ["keyword", "defmacro"], ["punctuation", ")"],
["punctuation", "("], ["keyword", "case-lambda"], ["punctuation", ")"],
["punctuation", "("], ["keyword", "lambda"], ["punctuation", ")"],
["punctuation", "("], ["keyword", "let"], ["punctuation", ")"],
@@ -49,7 +56,10 @@
["punctuation", "("], ["keyword", "set!"], ["punctuation", ")"],
["punctuation", "("], ["keyword", "quasi-quote"], ["punctuation", ")"],
["punctuation", "("], ["keyword", "quote"], ["punctuation", ")"],
- ["punctuation", "("], ["keyword", "syntax-rules"], ["punctuation", ")"]
+ ["punctuation", "("], ["keyword", "syntax-rules"], ["punctuation", ")"],
+ ["punctuation", "("], ["keyword", "syntax-case"], ["punctuation", ")"],
+ ["punctuation", "("], ["keyword", "letrec-syntax"], ["punctuation", ")"],
+ ["punctuation", "("], ["keyword", "let-syntax"], ["punctuation", ")"]
]
----------------------------------------------------