@@ -40,6 +40,7 @@ var _ = 0
40
40
, DISCARD = _ ++
41
41
, DOWHILELOOP = _ ++
42
42
, PLACEHOLDER = _ ++
43
+ , QUANTIFIER = _ ++
43
44
44
45
var DECL_ALLOW_ASSIGN = 0x1
45
46
, DECL_ALLOW_COMMA = 0x2
@@ -88,7 +89,8 @@ var stmt_type = _ = [
88
89
, 'continue'
89
90
, 'discard'
90
91
, 'do-while'
91
- , '(placeholder)'
92
+ , 'placeholder'
93
+ , 'quantifier'
92
94
]
93
95
94
96
function parser ( ) {
@@ -105,6 +107,7 @@ function parser() {
105
107
, whilestmt = n ( WHILELOOP )
106
108
, returnstmt = n ( RETURN )
107
109
, dowhilestmt = n ( DOWHILELOOP )
110
+ , quantifier = n ( QUANTIFIER )
108
111
109
112
var parse_struct
110
113
, parse_precision
@@ -114,6 +117,7 @@ function parser() {
114
117
, parse_function
115
118
, parse_function_args
116
119
, parse_dowhileloop
120
+ , parse_quantifier
117
121
118
122
setup_stative_parsers ( )
119
123
@@ -191,6 +195,7 @@ function parser() {
191
195
case DOWHILELOOP : parse_dowhileloop ( ) ; break
192
196
case RETURN : parse_return ( ) ; break
193
197
case IF : parse_if ( ) ; break
198
+ case QUANTIFIER : parse_quantifier ( ) ; break
194
199
}
195
200
}
196
201
@@ -452,6 +457,12 @@ function parser() {
452
457
return state . shift ( )
453
458
}
454
459
460
+ if ( token . data === '[' ) {
461
+ // oh lord.
462
+ state . unshift ( quantifier ( ) )
463
+ return
464
+ }
465
+
455
466
if ( token . data === ')' ) return state . shift ( )
456
467
457
468
if ( token . data === ';' ) {
@@ -514,6 +525,9 @@ function parser() {
514
525
515
526
state . unshift ( expr ( ',' , ';' ) )
516
527
return
528
+ } else if ( token . data === '[' ) {
529
+ state . unshift ( quantifier ( ) )
530
+ return
517
531
}
518
532
}
519
533
return state . shift ( )
@@ -778,6 +792,14 @@ function parser() {
778
792
, function ( ) { return state . shift ( ) }
779
793
)
780
794
795
+ parse_quantifier =
796
+ stative (
797
+ advance ( '[' )
798
+ , advance_expr ( ']' )
799
+ , advance ( ']' )
800
+ , function ( ) { return state . shift ( ) }
801
+ )
802
+
781
803
parse_forloop =
782
804
stative (
783
805
advance ( 'for' , 'keyword' )
0 commit comments