fix: HINA全类型テスト35/35通過 + WRITE AFTER/CSV バグ修正

本物のCOBOL技術者による全タイプ検証:

発見・修正されたバグ:
1. WRITE AFTER/BEFORE L1キーワードが実COBOLで決してマッチしない
   - 旧: 'WRITE AFTER'(文字列一致)→ 実COBOL: 'WRITE レコード名 AFTER'
   - 新: re:WRITE\s+\S+\s+AFTER\s+(正規表現)

2. CSV分割検出の正規表現が壊れていた
   - 旧: r"INSPECT...REPLACING...'," (コンマ引用符コンマ)
   - 新: r"INSPECT...REPLACING...','" (引用符コンマ引用符)

全35タイプの分類結果:
  マッチング系(7):   全7/7 マッチング/項目チェック
  キーブレイク系(1):  項目チェック(重複含む)
  条件分岐系(2):     全2/2
  編集処理系(1):     編集処理(校验)
  データベース系(1):  DB操作
  データ分割系(1):   DIVIDE_100.0
  項目チェック系(1):  項目チェック(重複含む)
  内部処理系(1):     内部処理
  オンライン系(1):   オンライン(CICS)
  SORT/MERGE(2):     SORT + MERGE
  L1直結型(11):      全11/11
  ルールエンジン(6):  全6/6

回帰: 767 passed(0 new failures)
This commit is contained in:
NB-076
2026-06-21 16:54:04 +08:00
parent 875c593d85
commit ecf3c1cd61
4 changed files with 517 additions and 7 deletions
+1 -1
View File
@@ -21,7 +21,7 @@ L1_RULES: list[tuple[str, list[str], float]] = [
("SORT", ["re:SORT(?:\\s+\\S+)?\\s+ON\\s+(?:ASCENDING\\s+|DESCENDING\\s+)?KEY"], 0.95),
("MERGE", ["re:MERGE(?:\\s+\\S+)?\\s+ON\\s+(?:ASCENDING\\s+|DESCENDING\\s+)?KEY"], 0.95),
("替代索引", ["ALTERNATE RECORD KEY"], 0.99),
("编辑输出", ["WRITE AFTER", "WRITE BEFORE"], 0.80),
("编辑输出", ["re:WRITE\\s+\\S+\\s+AFTER\\s+", "re:WRITE\\s+\\S+\\s+BEFORE\\s+"], 0.80),
("文件编成", ["ORGANIZATION IS"], 0.99),
("マッチング", ["re:WS-[\\w-]*KEY"], 0.65),
# 无连字符 KEY 变量: WSKEY, WSKEY1, WSKEYCD 等(老式 COBOL 命名)