2727 = 1 * (TokenSquareBracketOpen TokenSquareBracketClose )
2828
2929
30+ ; ---------------------------------------------------------------------------- ;
31+ ; ConstantExpr ;
32+ ; ---------------------------------------------------------------------------- ;
33+
34+ ConstantExpr
35+ = ConstantFloat * ByteHorizontalWs
36+ / ConstantInt * ByteHorizontalWs
37+ / ConstantTrue * ByteHorizontalWs
38+ / ConstantFalse * ByteHorizontalWs
39+ / ConstantNull * ByteHorizontalWs
40+ / ConstantString * ByteHorizontalWs
41+ / ConstantArray * ByteHorizontalWs
42+ / ConstantFetch * ByteHorizontalWs
43+
44+ ConstantFloat
45+ = [" -" ] 1 * ByteDecDigit " ." * ByteDecDigit [ConstantFloatExp ]
46+ / [" -" ] 1 * ByteDecDigit ConstantFloatExp
47+ / [" -" ] " ." 1 * ByteDecDigit [ConstantFloatExp ]
48+
49+ ConstantFloatExp
50+ = " e" [" -" ] 1 * ByteDecDigit
51+
52+ ConstantInt
53+ = [" -" ] " 0b" 1 * ByteBinDigit
54+ / [" -" ] " 0o" 1 * ByteOctDigit
55+ / [" -" ] " 0x" 1 * ByteHexDigit
56+ / [" -" ] 1 * ByteDecDigit
57+
58+ ConstantTrue
59+ = " true"
60+
61+ ConstantFalse
62+ = " false"
63+
64+ ConstantNull
65+ = " null"
66+
67+ ConstantString
68+ = ByteSingleQuote * (ByteBackslash ByteNotEol / ByteNotEolAndNotBackslashAndNotSingleQuote ) ByteSingleQuote
69+ / ByteDoubleQuote * (ByteBackslash ByteNotEol / ByteNotEolAndNotBackslashAndNotDoubleQuote ) ByteDoubleQuote
70+
71+ ConstantArray
72+ = TokenSquareBracketOpen [ConstantArrayItems ] TokenSquareBracketClose
73+ / " array" TokenParenthesesOpen [ConstantArrayItems ] TokenParenthesesClose
74+
75+ ConstantArrayItems
76+ = ConstantArrayItem * (TokenComma ConstantArrayItem ) [TokenComma ]
77+
78+ ConstantArrayItem
79+ = ConstantExpr [TokenDoubleArrow ConstantExpr ]
80+
81+ ConstantFetch
82+ = TokenIdentifier [TokenDoubleColon ByteIdentifierFirst * ByteIdentifierSecond * ByteHorizontalWs ]
83+
84+
3085; ---------------------------------------------------------------------------- ;
3186; Tokens ;
3287; ---------------------------------------------------------------------------- ;
@@ -61,6 +116,12 @@ TokenSquareBracketClose
61116TokenComma
62117 = " ," * ByteHorizontalWs
63118
119+ TokenDoubleArrow
120+ = " =>" * ByteHorizontalWs
121+
122+ TokenDoubleColon
123+ = " ::" * ByteHorizontalWs
124+
64125TokenThisVariable
65126 = %x 24 . 74 . 68 . 69 . 73 * ByteHorizontalWs
66127
@@ -76,6 +137,19 @@ ByteHorizontalWs
76137 = %x 09 ; horizontal tab
77138 / %x 20 ; space
78139
140+ ByteBinDigit
141+ = %x 30 -31 ; 0-1
142+
143+ ByteOctDigit
144+ = %x 30 -37 ; 0-7
145+
146+ ByteDecDigit
147+ = %x 30 -39 ; 0-9
148+
149+ ByteHexDigit
150+ = %x 30 -39 ; 0-9
151+ / %x 41 -46 ; A-F
152+ / %x 61 -66 ; a-f
79153
80154ByteIdentifierFirst
81155 = %x 41 -5A ; A-Z
@@ -90,6 +164,30 @@ ByteIdentifierSecond
90164 / %x 61 -7A ; a-z
91165 / %x 80 -FF
92166
167+ ByteSingleQuote
168+ = %x 27 ; '
169+
170+ ByteDoubleQuote
171+ = %x 22 ; "
93172
94173ByteBackslash
95174 = %x 5C ; \
175+
176+ ByteNotEol
177+ = %x 00 -09 ; skip LF
178+ / %x 0B -0C ; skip CR
179+ / %x 0E -FF
180+
181+ ByteNotEolAndNotBackslashAndNotSingleQuote
182+ = %x 00 -09 ; skip LF
183+ / %x 0B -0C ; skip CR
184+ / %x 0E -26 ; skip single quote
185+ / %x 28 -5B ; skip backslash
186+ / %x 5D -FF
187+
188+ ByteNotEolAndNotBackslashAndNotDoubleQuote
189+ = %x 00 -09 ; skip LF
190+ / %x 0B -0C ; skip CR
191+ / %x 0E -21 ; skip double quote
192+ / %x 23 -5B ; skip backslash
193+ / %x 5D -FF
0 commit comments