症状
裸の 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
症状
裸の boolean 比較式が top-level でパース失敗する(P4・手書き両方)。
根本原因
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