Skip to content

top-level Expression の型ディスパッチで裸の boolean 比較 (1>0 & 2>1) がパース失敗 #23

Description

@opaopa6969

症状

裸の boolean 比較式が top-level でパース失敗する(P4・手書き両方)。

1 > 0 & 2 > 1        -> Parse failed(2文字で停止)
$a > 0 & $b > 0      -> Parse failed
(1 > 0) & (2 > 1)    -> OK(括弧があれば通る)
if(1>0 & 2>1){...}   -> OK(if 文脈なら通る)

根本原因

Expression ::= NumberExpression | BooleanExpression | ... で NumberExpression が先に評価され、1 > 0 & 2 > 1 の先頭 1 だけを NumberExpression として消費して成功扱いになり、残り > 0 & ... が未消費のまま Formula が EOF 不到達で失敗する。文法コメントもこの順序依存を自認している。

修正案

top-level Expression の型ディスパッチを最長一致にする、または boolean 比較を含む式を正しく分岐できるようにする(要設計判断)。実害は「括弧/if 無しの裸 boolean 比較」に限定。

参照

docs/findings-2026-06-15-unlaxer-3.0.4-and-p4.md §7

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions