feat(parser): 支持空下标 T[](无签名函数指针 t.Callable[])
_parse_slice 在 '[' 后紧跟 ']' 时不再调 _parse_expr(原本报 意外的 token ]),slice 置 None 交类型解析侧按空参数表处理。其余切片/元组/单表达式形态不变。
This commit is contained in:
1 parent
c392390e0d
commit
a6fe460bce
1 file changed
+4
-1
+4
-1
@@ -1668,7 +1668,10 @@ def _parse_subscript(ps: rawptr[Parser], value: rawptr[AST]) -> rawptr[AST]:
|
||||
def _parse_slice(ps: rawptr[Parser]) -> rawptr[AST]:
|
||||
"""Parse slice: [expr] ':' [expr] [':' [expr]] | expr | expr, expr, ..."""
|
||||
lower: rawptr[AST] = None
|
||||
if not _match_op(ps, TokOp.Colon):
|
||||
# 空下标(`T[]`,类型注解位置的无签名函数指针 t.Callable[]):`[` 后直接 `]`
|
||||
# ⇒ slice 为 None(由类型解析侧按"空参数表"处理),不能调 _parse_expr,
|
||||
# 否则报"意外的 token ']'"。
|
||||
if not _match_op(ps, TokOp.Colon) and not _match_op(ps, TokOp.Rsqb):
|
||||
lower = _parse_expr(ps)
|
||||
|
||||
# Check if there’s a comma (tuple syntax: a[x, y, ...])
|
||||
|
||||
Reference in new issue
Block a user