目标合并分支: master
问题
批量语法探针确认当前 parser 仍会接受以下 Python 3 非法语法,并返回编译成功:
- 默认参数后出现必选参数:
def f(a=1, b): ...
- 重复形参:
def f(a, a): ...
- keyword 实参后出现位置实参:
f(a=1, 2)
- 同一次调用重复 keyword:
f(a=1, a=2)
- 字典键值缺少冒号:
x = {'a' 1}
期望
- 编译阶段稳定返回
PIKA_RES_ERR_SYNTAX_ERROR。
- 不进入 VM,不触发断言、越界或崩溃。
- 不扩大 PikaPython 支持的语法范围,不改变 parser/VM 大架构。
实施边界
- 先用表驱动测试固定以上 5 项及对应合法反例。
- 正确性阶段允许有界、量化的临时 RAM/Flash 增量。
- 性能与资源占用在独立阶段回收,不因当轮尺寸门槛撤销正确性修复。
- default/minimal 分别记录
text/data/bss,网络、LVGL 和其他非语法依赖可隔离。
R13 后续修复与验证
本地分支 fix/syntax-compat-issues 已完成 R13,提交为 ed6948738:
- 修复
//、% 除零崩溃和负数 Python 3 语义。
- 修复前导一元负号与非幂运算符优先级。
- 混合位置参数与关键字参数同名时返回
TypeError,覆盖默认参数、必选参数、对象方法和多位置参数后的栈恢复。
- 对当前子集不支持的比较链和
finally 在 parser 阶段稳定返回语法错误,避免运行期错误执行或静默跳过。
- Linux default 定向回归 36/36,minimal 全量回归 225/225。
- 相对 R12 基线,default/minimal 的 text 分别增加 1168/1160 B,data/bss 不变;
FunctionArgsInfo 保持 88 B,runtime A/B 未发现可信退化。
该提交尚未合并到 master,因此本 issue 保持打开。
目标合并分支: master
问题
批量语法探针确认当前 parser 仍会接受以下 Python 3 非法语法,并返回编译成功:
def f(a=1, b): ...def f(a, a): ...f(a=1, 2)f(a=1, a=2)x = {'a' 1}期望
PIKA_RES_ERR_SYNTAX_ERROR。实施边界
text/data/bss,网络、LVGL 和其他非语法依赖可隔离。R13 后续修复与验证
本地分支
fix/syntax-compat-issues已完成 R13,提交为ed6948738://、%除零崩溃和负数 Python 3 语义。TypeError,覆盖默认参数、必选参数、对象方法和多位置参数后的栈恢复。finally在 parser 阶段稳定返回语法错误,避免运行期错误执行或静默跳过。FunctionArgsInfo保持 88 B,runtime A/B 未发现可信退化。该提交尚未合并到
master,因此本 issue 保持打开。