unlaxer-dsl 3.0.2 / P4 更新後の残課題
背景
tinyexpression は unlaxer-common 3.0.2 / unlaxer-dsl 3.0.2 へ更新済みで、最新 UBNF 文法も P4 runtime / LSP / DAP に適用済みです。
今回の更新で以下は完了しています。
- dependency 更新
org.unlaxer:unlaxer-common:3.0.2
org.unlaxer:unlaxer-dsl:3.0.2
- UBNF 更新
- fully-qualified token parser
- CodeBlock
- boolean equality
- string dot method
- slice variants
isPresent(...)
inTimeRange(...) / inDayTimeRange(...)
- typed
if / ternary
- strict
match typing
- runtime / tooling 追従
P4PreferredAstMapper による preferred root 共通化
P4TypedAstEvaluator / Java emitter の source-aware 補正
TE025 の導入
_tinyP4ParserExact / _tinyP4ParserProbeMode の公開
- targeted verification
P4TypedAstEvaluatorTest
AstEvaluatorParityCorpusTest
AstEvaluatorBackendParityTest
ThreeExecutionBackendParityTest
P4BackendParityTest
TinyExpressionP4LanguageServerExtTest
mvn -q -DskipTests -Dmaven.javadoc.skip=true -Dgpg.skip=true package
残課題
1. release/install 導線が環境依存のまま
問題:
mvn package は通るが mvn install / mvn deploy は local repo / GPG / network 前提になる
- 制約付き環境では
~/.m2/repository と ~/.gnupg に書けず再現性が落ちる
やること:
- writable な
maven.repo.local と GNUPGHOME を前提にした release 手順を文書化する
- 必要なら CI 側へ
package -> verify -> deploy の staging workflow を分離する
ossrh 経路を使い続けるか、Central publishing plugin へ寄せるかを決める
受け入れ条件:
package だけでなく install / deploy の再現手順が 1 本化されている
- ローカル制約下でも
/tmp 逃がし先で dry-run できる
参考:
pom.xml
tools/tinyexpression-p4-lsp-vscode/pom.xml
docs/TINYEXPRESSION-DEPENDENCY-EXTENSION-NOTES.md
2. preferred root / compat parse が local facade のまま
問題:
P4PreferredAstMapper は generated mapper の外側で preferred-root 選択と compat parse を吸収している
ParseContext.close() cleanup 由来の例外も local workaround で抑えている
- 根本的には codegen-native な root selection と cleanup 契約が欲しい
やること:
unlaxer-dsl で最小再現を作る
preferredAstSimpleName の優先選択を generator 標準機能へ寄せる
- local facade を段階的に薄くする
受け入れ条件:
- runtime / LSP / DAP が facade なしでも同じ root を選べる
- compat parse 用の reflection / private method 呼び出しを削減できる
参考:
src/main/java/org/unlaxer/tinyexpression/p4/P4PreferredAstMapper.java
src/main/java/org/unlaxer/tinyexpression/evaluator/ast/GeneratedAstRuntimeProbe.java
src/main/java/org/unlaxer/tinyexpression/evaluator/p4/P4ParseProbe.java
docs/TINYEXPRESSION-DEPENDENCY-EXTENSION-NOTES.md
3. 旧 LSP に対する編集支援 parity がまだ足りない
問題:
- 変数カタログ補完が未移植
import sample.v1.Class#method as alias; のフル補完が未移植
- クイックフィックス群が薄い
$ trigger 補完が未移植
- ホバー上の計算値表示が未移植
やること:
- 旧
calculator-lsp の変数カタログと quick fix を棚卸しし、P4 LSP の責務へ分割する
ScopeStore と catalog resolver の境界を決める
- まずセミコロン補完、括弧補完、
$ trigger を先に戻す
受け入れ条件:
- 高頻度の編集支援が旧 LSP と同等以上になる
- P4 parser ベースの診断と quick fix が矛盾しない
参考:
docs/TINYEXPRESSION-P4-FEATURE-GAP-ANALYSIS.md
docs/TINYEXPRESSION-LSP-ADDITIONAL-FEATURES.md
tools/tinyexpression-p4-lsp-vscode/src/main/java/org/unlaxer/tinyexpression/lsp/p4/TinyExpressionP4LanguageServerExt.java
4. full-suite / CI の新基準がまだ固定されていない
問題:
- targeted suite は green だが、最新版 UBNF 適用後の smoke set が docs / CI に固定されていない
- parity corpus は増えたが、どの組み合わせを gate にするかが曖昧
やること:
- regenerate + compile + targeted smoke tests を 1 セットで固定する
- P4 / LSP / DAP の最小 acceptance matrix を作る
- 可能なら CI profile を追加する
受け入れ条件:
- docs と CI の確認手順が一致する
- regressions を再現しやすい smoke set が決まる
参考:
docs/TINYEXPRESSION-UNLAXERDSL-HANDBOOK.md
src/test/resources/parity/three-backend-parity-corpus.txt
src/test/java/org/unlaxer/tinyexpression/p4/P4BackendParityTest.java
推奨確認コマンド
scripts/generate_tinyexpression_p4_from_ubnf.sh
mvn -q -DskipTests compile
mvn -q -DskipTests -Dmaven.javadoc.skip=true -Dgpg.skip=true package
mvn -q -Dtest=org.unlaxer.tinyexpression.evaluator.ast.P4TypedAstEvaluatorTest test
mvn -q -Dtest=org.unlaxer.tinyexpression.p4.P4BackendParityTest test
cd tools/tinyexpression-p4-lsp-vscode && mvn -q -Dtest=org.unlaxer.tinyexpression.lsp.p4.TinyExpressionP4LanguageServerExtTest test
release/install 系を検証する場合の追加前提:
-Dmaven.repo.local=/tmp/m2repo
GNUPGHOME=/tmp/gnupg
- deploy 可能な network と認証情報
関連ドキュメント
docs/architecture-ja.md
docs/TINYEXPRESSION-UNLAXERDSL-HANDBOOK.md
docs/TINYEXPRESSION-P4-FEATURE-GAP-ANALYSIS.md
docs/TINYEXPRESSION-DEPENDENCY-EXTENSION-NOTES.md
docs/TINYEXPRESSION-P4-UPGRADE-FOLLOWUP-ISSUE-2026-04-24.md
unlaxer-dsl 3.0.2 / P4 更新後の残課題
背景
tinyexpressionはunlaxer-common 3.0.2/unlaxer-dsl 3.0.2へ更新済みで、最新 UBNF 文法も P4 runtime / LSP / DAP に適用済みです。今回の更新で以下は完了しています。
org.unlaxer:unlaxer-common:3.0.2org.unlaxer:unlaxer-dsl:3.0.2isPresent(...)inTimeRange(...)/inDayTimeRange(...)if/ ternarymatchtypingP4PreferredAstMapperによる preferred root 共通化P4TypedAstEvaluator/ Java emitter の source-aware 補正TE025の導入_tinyP4ParserExact/_tinyP4ParserProbeModeの公開P4TypedAstEvaluatorTestAstEvaluatorParityCorpusTestAstEvaluatorBackendParityTestThreeExecutionBackendParityTestP4BackendParityTestTinyExpressionP4LanguageServerExtTestmvn -q -DskipTests -Dmaven.javadoc.skip=true -Dgpg.skip=true package残課題
1. release/install 導線が環境依存のまま
問題:
mvn packageは通るがmvn install/mvn deployは local repo / GPG / network 前提になる~/.m2/repositoryと~/.gnupgに書けず再現性が落ちるやること:
maven.repo.localとGNUPGHOMEを前提にした release 手順を文書化するpackage -> verify -> deployの staging workflow を分離するossrh経路を使い続けるか、Central publishing plugin へ寄せるかを決める受け入れ条件:
packageだけでなくinstall/deployの再現手順が 1 本化されている/tmp逃がし先で dry-run できる参考:
pom.xmltools/tinyexpression-p4-lsp-vscode/pom.xmldocs/TINYEXPRESSION-DEPENDENCY-EXTENSION-NOTES.md2. preferred root / compat parse が local facade のまま
問題:
P4PreferredAstMapperは generated mapper の外側で preferred-root 選択と compat parse を吸収しているParseContext.close()cleanup 由来の例外も local workaround で抑えているやること:
unlaxer-dslで最小再現を作るpreferredAstSimpleNameの優先選択を generator 標準機能へ寄せる受け入れ条件:
参考:
src/main/java/org/unlaxer/tinyexpression/p4/P4PreferredAstMapper.javasrc/main/java/org/unlaxer/tinyexpression/evaluator/ast/GeneratedAstRuntimeProbe.javasrc/main/java/org/unlaxer/tinyexpression/evaluator/p4/P4ParseProbe.javadocs/TINYEXPRESSION-DEPENDENCY-EXTENSION-NOTES.md3. 旧 LSP に対する編集支援 parity がまだ足りない
問題:
import sample.v1.Class#method as alias;のフル補完が未移植$trigger 補完が未移植やること:
calculator-lspの変数カタログと quick fix を棚卸しし、P4 LSP の責務へ分割するScopeStoreと catalog resolver の境界を決める$trigger を先に戻す受け入れ条件:
参考:
docs/TINYEXPRESSION-P4-FEATURE-GAP-ANALYSIS.mddocs/TINYEXPRESSION-LSP-ADDITIONAL-FEATURES.mdtools/tinyexpression-p4-lsp-vscode/src/main/java/org/unlaxer/tinyexpression/lsp/p4/TinyExpressionP4LanguageServerExt.java4. full-suite / CI の新基準がまだ固定されていない
問題:
やること:
受け入れ条件:
参考:
docs/TINYEXPRESSION-UNLAXERDSL-HANDBOOK.mdsrc/test/resources/parity/three-backend-parity-corpus.txtsrc/test/java/org/unlaxer/tinyexpression/p4/P4BackendParityTest.java推奨確認コマンド
release/install 系を検証する場合の追加前提:
-Dmaven.repo.local=/tmp/m2repoGNUPGHOME=/tmp/gnupg関連ドキュメント
docs/architecture-ja.mddocs/TINYEXPRESSION-UNLAXERDSL-HANDBOOK.mddocs/TINYEXPRESSION-P4-FEATURE-GAP-ANALYSIS.mddocs/TINYEXPRESSION-DEPENDENCY-EXTENSION-NOTES.mddocs/TINYEXPRESSION-P4-UPGRADE-FOLLOWUP-ISSUE-2026-04-24.md