親issue: opaopa6969/issue-hub#49
現状の進捗
リリース・バージョン
- Maven Central 公開中:
org.unlaxer:tinyexpression:1.4.10(Java 21+ / Maven 3.8+)
- 依存:
unlaxer-common 3.0.1、unlaxer-dsl 3.0.1(pom.xml 確認済み)
- 直近の重要 chore:
unlaxer 2.8.0 / 3.0.1 に更新、NoneChildCollectingParser 移行
対応演算子・関数(実装確認済み)
| カテゴリ |
内容 |
| 算術 |
+ - * / |
| 比較 |
== != > >= < <= |
| 論理 |
& | ^ not() |
| 三項 |
condition ? value : value |
| 制御 |
if/else、match/case/default |
| Math |
sin cos sqrt min(可変引数) max(可変引数) 他14関数 |
| 文字列 |
+(結合)、.toUpperCase() .toLowerCase() .trim() .length() .indexOf() .startsWith() .endsWith() .contains() .in()、スライス $s[0:3] |
| 変換 |
toNum(string, precision) |
| null チェック |
isPresent($var) |
| 時間 |
inTimeRange(h1,h2) inDayTimeRange(DOW1,h1,DOW2,h2) |
| 外部呼び出し |
external returning as TYPE classMethod($var) |
| 内部メソッド |
call methodName($arg) + 宣言 float methodName($p as number){...} |
| 副作用 |
@side:Class.method(args) |
バックエンド(6種)
| Backend |
クラス |
状態 |
JAVA_CODE |
JavaCodeCalculatorV3 |
本番ベースライン |
JAVA_CODE_LEGACY_ASTCREATOR |
LegacyAstCreatorJavaCodeCalculator |
凍結(比較用) |
AST_EVALUATOR |
AstEvaluatorCalculator |
DSL 代替経路 |
DSL_JAVA_CODE |
DslJavaCodeCalculator |
ネイティブエミッタ部分対応 |
P4_AST_EVALUATOR |
P4AstEvaluatorCalculator |
UBNF 生成 + AST 評価 |
P4_DSL_JAVA_CODE |
P4DslJavaCodeCalculator |
UBNF 生成 + DSL Java 生成 |
直近の主要コミット(上位10件)
chore: unlaxer 2.8.0 → 3.0.1 に更新、NoneChildCollectingParser 移行
fix: adapt SliceExpr usage to Optional<BinaryExpr> fields after P4 regeneration
refactor: P4TypedAstEvaluator is PRIMARY, fallback chain is SAFETY NET
feat: String slice — LAST FEATURE GAP CLOSED. Full parity achieved.
feat: FormulaInfo LSP Phase 2 + IncrementalParseCache LSP integration
feat: String concatenation (+) + inTimeRange/inDayTimeRange
feat: MethodInvocation + External invocations in P4TypedAstEvaluator — fallback eliminated
docs: add backend-coverage-matrix and feature-parity-diff to INDEX
docs: backend coverage matrix — identifies fallback gaps
feat: String predicates (startsWith/endsWith/contains) + isPresent
IDE 連携進捗(VS Code LSP/DAP)
- 旧拡張 (
calculator-lsp-vscode): VSIX 0.2.31 — TE001〜TE024 診断 + 18種以上クイックフィックス、変数カタログ連携(外部ファイル tinyExpression-catalog-v1 対応)
- 新 P4 拡張 (
tinyexpression-p4-lsp-vscode): VSIX 0.2.3 — P4 型安全パーサー使用、ScopeStore によるスコープ診断(未宣言・重複宣言)、go-to-definition / find-references / documentSymbol / codeLens / hover 等実装済み
- LSP Phase 2 完了:
FormulaInfo メタデータ補完、dependsOn 検証、IncrementalParseCache 統合
- LSP CodeAction:
if ↔ ternary 双方向変換クイックフィックス
- P4 機能ギャップ(
TINYEXPRESSION-P4-FEATURE-GAP-ANALYSIS.md より): 変数カタログ連携未実装、クイックフィックスは TE001 の 1 種のみ、import フル補完が欠如(P4 現行は import キーワードまで)
- DAP:
runtimeMode=token/ast/dsl-javacode をサポート、backend parity probe(全6バックエンド比較)が DAP variables に表示される
ドキュメント整備状況
docs/ に 20 件以上の設計・実装ドキュメント(BACKEND-CONTRACT、DESIGN-BACKLOG、FINAL-GAP-AUDIT 等)
specs/ に language.md / type-system.md / backends.md / open-questions.md など仕様文書
- railroad SVG 自動生成(
mvn compile 時に docs/railroad/ へ出力)
- P4 UBNF 2 種: draft(239行)/ 拡張版(321行、source of truth)
親issue: opaopa6969/issue-hub#49
現状の進捗
リリース・バージョン
org.unlaxer:tinyexpression:1.4.10(Java 21+ / Maven 3.8+)unlaxer-common 3.0.1、unlaxer-dsl 3.0.1(pom.xml 確認済み)unlaxer 2.8.0 / 3.0.1 に更新、NoneChildCollectingParser 移行対応演算子・関数(実装確認済み)
+-*/==!=>>=<<=&|^not()condition ? value : valueif/else、match/case/defaultsincossqrtmin(可変引数)max(可変引数)他14関数+(結合)、.toUpperCase().toLowerCase().trim().length().indexOf().startsWith().endsWith().contains().in()、スライス$s[0:3]toNum(string, precision)isPresent($var)inTimeRange(h1,h2)inDayTimeRange(DOW1,h1,DOW2,h2)external returning as TYPE classMethod($var)call methodName($arg)+ 宣言float methodName($p as number){...}@side:Class.method(args)バックエンド(6種)
JAVA_CODEJavaCodeCalculatorV3JAVA_CODE_LEGACY_ASTCREATORLegacyAstCreatorJavaCodeCalculatorAST_EVALUATORAstEvaluatorCalculatorDSL_JAVA_CODEDslJavaCodeCalculatorP4_AST_EVALUATORP4AstEvaluatorCalculatorP4_DSL_JAVA_CODEP4DslJavaCodeCalculator直近の主要コミット(上位10件)
chore: unlaxer 2.8.0 → 3.0.1 に更新、NoneChildCollectingParser 移行fix: adapt SliceExpr usage to Optional<BinaryExpr> fields after P4 regenerationrefactor: P4TypedAstEvaluator is PRIMARY, fallback chain is SAFETY NETfeat: String slice — LAST FEATURE GAP CLOSED. Full parity achieved.feat: FormulaInfo LSP Phase 2 + IncrementalParseCache LSP integrationfeat: String concatenation (+) + inTimeRange/inDayTimeRangefeat: MethodInvocation + External invocations in P4TypedAstEvaluator — fallback eliminateddocs: add backend-coverage-matrix and feature-parity-diff to INDEXdocs: backend coverage matrix — identifies fallback gapsfeat: String predicates (startsWith/endsWith/contains) + isPresentIDE 連携進捗(VS Code LSP/DAP)
calculator-lsp-vscode): VSIX 0.2.31 — TE001〜TE024 診断 + 18種以上クイックフィックス、変数カタログ連携(外部ファイルtinyExpression-catalog-v1対応)tinyexpression-p4-lsp-vscode): VSIX 0.2.3 — P4 型安全パーサー使用、ScopeStoreによるスコープ診断(未宣言・重複宣言)、go-to-definition / find-references / documentSymbol / codeLens / hover 等実装済みFormulaInfoメタデータ補完、dependsOn検証、IncrementalParseCache 統合if ↔ ternary双方向変換クイックフィックスTINYEXPRESSION-P4-FEATURE-GAP-ANALYSIS.mdより): 変数カタログ連携未実装、クイックフィックスは TE001 の 1 種のみ、importフル補完が欠如(P4 現行はimportキーワードまで)runtimeMode=token/ast/dsl-javacodeをサポート、backend parity probe(全6バックエンド比較)が DAP variables に表示されるドキュメント整備状況
docs/に 20 件以上の設計・実装ドキュメント(BACKEND-CONTRACT、DESIGN-BACKLOG、FINAL-GAP-AUDIT 等)specs/に language.md / type-system.md / backends.md / open-questions.md など仕様文書mvn compile時にdocs/railroad/へ出力)