Skip to content

P4: resolve result families in the grammar and remove root retries #256

Closed

Description

@opaopa6969

親 opaopa6969/unlaxer-parser#187 / opaopa6969/unlaxer-parser#197 / opaopa6969/unlaxer-parser#111。基準Tiny master f8a0909。

通常Choiceのfirst-successは維持する一方、P4 Expressionの短いnumber/boolean prefixによりFormulaがEOFで失敗し、Java/Rust frontendが結果familyを別rootで再解析しています。既存の明示@longestChoiceを文法側で用い、同長時の宣言順とtyped ASTを維持できることを検証してresult-family retryを撤去します。

受け入れ条件:

  • 同一P4文法をJava/Rustの既存ubnfc生成経路とClassic生成経路へ反映し、pin/manifest/再生成の整合性を確認する。手編集generated codeで代替しない。
  • 1<2、$a+$b、文字列/object/明示type/Unicode/不正末尾を含む共通入力でFormulaの一度の認識と期待AST・CP位置・評価結果/診断を比較する。
  • Java parseRootToken・Rust parse_alternate_root等のresult-family再試行を撤去し、既存正常系・953式等の公開corpusを退行させない。明示caller entryと失敗時診断詳細化の再解析は別契約として区別する。
  • scope/capture/rollback・選択優先順位の契約を維持する。親combinatorの通常Choice意味は変更しない。
  • fraud/deadlineとcomplex等の同じ入力で性能影響を記録し、単純なretry除去だけでproduction品質合格を宣言しない。
  • 必要な回帰、docs、commit/push/PR/CI/mergeとissue closeを完了する。

最小案はExpressionだけの明示longest choiceです。失敗や性能悪化が出た場合は生データを残して原因を修正し、対応形を削って成功扱いにしません。

Activity

  1. opaopa6969 commented on Oct 16, 2026

    @opaopa6969
    OwnerAuthor

    固定基準f8a09097のExpressionへ@longestChoiceを追加し、既存pin f54d6b9からJava/Rustを再生成しました(generated codeの手編集なし)。まだfrontendの再試行ループは変更していません。

    Rust parser_cli 21 testsは成功しましたが、Java共有root fixture 3 tests中1 failure(bare 1<2の公開semantic rootがBooleanOrExpr→FormulaExpr)。Rustの953式/12,609観測は60差分でREDです。数値prefix比較をfloat/string結果として要求した場合、従来ParseException@createだったものが新Formula wrapperを介してboolean評価へ進みます。goldenを書き換えて成功扱いにはせず、公開frontendのAST投影・候補選択を維持する必要があります。元のログを保存しています。

    さらに、失敗後alternate-rootループに加えて、成功後の明示結果型によるfamily再解析がJava/Rust双方に残ることを確認しました。alternateループだけの削除を「result-family retry 0」とは扱いません。受理/失敗stage・型・原文CPと実評価を揃えて継続します。

  2. opaopa6969 commented on Oct 17, 2026

    @opaopa6969
    OwnerAuthor

    PR #260 を 935d75a へ更新しました。CIで見つかった派生文法の固定ハッシュの更新漏れと、&&/||の2文字目で失敗した際のTE023分類を修正しています。

    診断は失敗位置に接する2文字だけで判定する最小の修正を選びました。原文全体の検索による引用文字列の誤分類を避け、parserのCP・期待値・表示位置を保つためです。Java実LSPとRust実Wasmを共通29入力(18positive/11negative)で検証しました。PR単位のrevertで戻せます。

    新依存de53a229でLSP59件、旧CI依存fc75fe1e/3.3.0-SNAPSHOTで診断/Catalog12件がfailure/error/skip 0。CatalogのWasm build、953式11,409行parity、check/build/roundtrip、VSIX梱包も成功しました。snapshot修正1087ff24の独立fresh buildでは、実CIと同じ旧依存で後続15 class(321pass/既存8skip)、350式parity、Java/Rust30実観測collectorを通過しています。

    共有hostのため性能判定はmeasurement_eligible=falseです。新HEADのCIとmergeは引き続き未完了として扱います。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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