This commit is contained in:
Shunsuke Shibayama 2022-12-22 07:59:06 +09:00
parent f7e9481bad
commit f677d23294

View file

@ -1328,6 +1328,28 @@ impl Parser {
} }
} }
} }
Some(t) if t.is(LSqBr) => {
let Some(ExprOrOp::Expr(obj)) = stack.pop() else {
self.level -= 1;
let err = self.skip_and_throw_syntax_err(caused_by!());
self.errs.push(err);
return Err(());
};
self.skip();
let index = self
.try_reduce_expr(false, false, in_brace, false)
.map_err(|_| self.stack_dec())?;
let r_sqbr = self.lpop();
if !r_sqbr.is(RSqBr) {
self.restore(r_sqbr);
self.level -= 1;
let err = self.skip_and_throw_syntax_err(caused_by!());
self.errs.push(err);
return Err(());
}
let acc = Accessor::subscr(obj, index, r_sqbr);
stack.push(ExprOrOp::Expr(Expr::Accessor(acc)));
}
Some(t) if t.is(Comma) && winding => { Some(t) if t.is(Comma) && winding => {
let first_elem = PosOrKwArg::Pos(PosArg::new( let first_elem = PosOrKwArg::Pos(PosArg::new(
enum_unwrap!(stack.pop(), Some:(ExprOrOp::Expr:(_))), enum_unwrap!(stack.pop(), Some:(ExprOrOp::Expr:(_))),