@@ -26,29 +26,33 @@ CodeMirror.defineMode('codeworld', (config, modeConfig) => {
26
26
'\\\\HT|\\\\LF|\\\\VT|\\\\FF|\\\\CR|\\\\SO|\\\\SI|\\\\DLE|\\\\DC1|\\\\DC2|' +
27
27
'\\\\DC3|\\\\DC4|\\\\NAK|\\\\SYN|\\\\ETB|\\\\CAN|\\\\EM|\\\\SUB|\\\\ESC|' +
28
28
'\\\\FS|\\\\GS|\\\\RS|\\\\US|\\\\SP|\\\\DEL' ;
29
- const RE_WHITESPACE = / [ \v \t \f ] + / ;
30
- const RE_STARTMETA = / { - # / ;
31
- const RE_STARTCOMMENT = / { - / ;
32
- const RE_DASHES = / - - + (? = $ | [ ^ : ! # $ % & * + . / < = > ? @ \\ ^ | ~ - ] + ) / ;
33
- const RE_QUAL = / [ A - Z ] [ A - Z a - z _ 0 - 9 ' ] * \. (? = [ A - Z a - z _ : ! # $ % & * + . / < = > ? @ \\ ^ | ~ ] | - [ ^ - ] ) / ;
34
- const RE_VARID = / [ a - z _ ] [ A - Z a - z _ 0 - 9 ' ] * / ;
35
- const RE_CONID = / [ A - Z ] [ A - Z a - z _ 0 - 9 ' ] * / ;
36
- const RE_VARSYM = / [ ! # $ % & * + . / < = > ? @ \\ ^ | ~ - ] [: ! # $ % & * + ./ < = > ? @ \\ ^ | ~ - ] * / ;
37
- const RE_CONSYM = / : [: ! # $ % & * + ./ < = > ? @ \\ ^ | ~ - ] * / ;
38
- const RE_NUMBER = / [ 0 - 9 ] + (?: \. [ 0 - 9 ] + ) ? (?: [ e E ] [ + - ] ? [ 0 - 9 ] + ) ? | 0 [ o O ] [ 0 - 7 ] + | 0 [ x X ] [ 0 - 9 a - f A - F ] + / ;
29
+ const RE_WHITESPACE = / [ \v \t \f ] + / u;
30
+ const RE_STARTMETA = / \{ - # / u;
31
+ const RE_STARTCOMMENT = / \{ - / u;
32
+ const RE_DASHES = / - - + (? = $ | [ ^ : ! # $ % & * + . / < = > ? @ \\ ^ | ~ - ] + ) / u;
33
+ const RE_QUAL =
34
+ / \p{ Lu} ( \p{ L} | [ _ 0 - 9 ' ] ) * \. (? = \p{ L} | [ _ : ! # $ % & * + . / < = > ? @ \\ ^ | ~ ] | - [ ^ - ] ) / u;
35
+ const RE_VARID = / ( \p{ Ll} | _ ) ( \p{ L} | [ _ 0 - 9 ' ] ) * / u;
36
+ const RE_CONID = / \p{ Lu} ( \p{ L} | [ _ 0 - 9 ' ] ) * / u;
37
+ const RE_VARSYM = / [ ! # $ % & * + . / < = > ? @ \\ ^ | ~ - ] [: ! # $ % & * + ./ < = > ? @ \\ ^ | ~ - ] * / u;
38
+ const RE_CONSYM = / : [: ! # $ % & * + ./ < = > ? @ \\ ^ | ~ - ] * / u;
39
+ const RE_NUMBER =
40
+ / [ 0 - 9 ] + (?: \. [ 0 - 9 ] + ) ? (?: [ e E ] [ + - ] ? [ 0 - 9 ] + ) ? | 0 [ o O ] [ 0 - 7 ] + | 0 [ x X ] [ 0 - 9 a - f A - F ] + / u;
39
41
const RE_CHAR = new RegExp (
40
42
`'(?:[^\\\\']|\\\\[abfnrtv\\\\"']|\\\\^[A-Z@[\\\\\\]^_]|${ MULTICHAR_ESCAPE_REGEX } )'`
41
43
) ;
42
44
const RE_STRING = new RegExp (
43
45
`"(?:[^\\\\"]|\\\\[abfnrtv\\\\"'&]|\\\\^[A-Z@[\\\\\\]^_]|${ MULTICHAR_ESCAPE_REGEX } )*"`
44
46
) ;
45
- const RE_OPENBRACKET = / [ ( [ { ] / ;
46
- const RE_CLOSEBRACKET = / [ ) \] } ] / ;
47
- const RE_INCOMMENT = / (?: [ ^ { - ] | - (? = $ | [ ^ } ] ) | \{ (? = $ | [ ^ - ] ) ) * / ;
48
- const RE_ENDCOMMENT = / - } / ;
49
- const RE_ELECTRIC_START = / ^ \s * (?: [: ! # $ % & * + ./ < = > ? @ ^ | ~ , ) \] } - ] + | w h e r e \b | i n \b | o f \b | t h e n \b | e l s e \b | d e r i v i n g \b ) / ;
50
- const RE_ELECTRIC_INPUT = / ^ \s * (?: [: ! # $ % & * + ./ < = > ? @ ^ | ~ , ) \] } - ] + | w h e r e | i n | o f | t h e n | e l s e | d e r i v i n g ) .? $ / ;
51
- const RE_NEGATIVE_NUM = / ^ \s * [ - ] ( $ | [ ^ ! # $ % & * + . / < = > ? @ \\ ^ | ~ - ] ) / ;
47
+ const RE_OPENBRACKET = / [ ( [ { ] / u;
48
+ const RE_CLOSEBRACKET = / [ ) \] } ] / u;
49
+ const RE_INCOMMENT = / (?: [ ^ { - ] | - (? = $ | [ ^ } ] ) | \{ (? = $ | [ ^ - ] ) ) * / u;
50
+ const RE_ENDCOMMENT = / - \} / u;
51
+ const RE_ELECTRIC_START =
52
+ / ^ \s * (?: [: ! # $ % & * + ./ < = > ? @ ^ | ~ , ) \] } - ] + | w h e r e \b | i n \b | o f \b | t h e n \b | e l s e \b | d e r i v i n g \b ) / u;
53
+ const RE_ELECTRIC_INPUT =
54
+ / ^ \s * (?: [: ! # $ % & * + ./ < = > ? @ ^ | ~ , ) \] } - ] + | w h e r e | i n | o f | t h e n | e l s e | d e r i v i n g ) .? $ / u;
55
+ const RE_NEGATIVE_NUM = / ^ \s * [ - ] ( $ | [ ^ ! # $ % & * + . / < = > ? @ \\ ^ | ~ - ] ) / u;
52
56
53
57
// The state has the following properties:
54
58
//
0 commit comments