ocaml: phase 5.1 bracket_match.ml baseline (5/9 balanced strings)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 26s

Stack-based multi-bracket parenthesis matching for ( [ { ) ] }.
Non-bracket chars are skipped (treated as content).

Tests:
  ()           yes
  [{()}]       yes
  ({[}])       no  (mismatched closer)
  ""           yes
  ((           no  (unclosed)
  ()[](){}     yes
  (a(b)c)      yes  (a/b/c skipped)
  (()          no
  ])           no
                 5 balanced

Body uses begin/end-wrapped match inside while:

  else if c = ')' || c = ']' || c = '}' then begin
    match !stack with
    | [] -> ok := false
    | top :: rest ->
      let pair =
        (c = ')' && top = '(') ||
        (c = ']' && top = '[') ||
        (c = '}' && top = '{')
      in
      if pair then stack := rest else ok := false
  end

Tests side-effecting match arms inside while body, ref-of-list as
stack, multi-char pairing dispatch.

174 baseline programs total.
This commit is contained in:
2026-05-11 01:02:59 +00:00
parent 6c77dec495
commit b771ea306c
3 changed files with 42 additions and 0 deletions

View File

@@ -407,6 +407,15 @@ _Newest first._
binary search tree (`type 'a tree = Leaf | Node of 'a * 'a tree *
'a tree`) with insert + in-order traversal. Tests parametric ADT,
recursive match, List.append, List.fold_left.
- 2026-05-11 Phase 5.1 — bracket_match.ml baseline (multi-bracket
parenthesis matching over 9 test strings, 5 balanced). Stack-
based scan: push openers `( [ {`, pop and pair-check closers.
Sequence: `() [{()}] ({[}]) "" (( ()[](){} (a(b)c) (() ])` →
yes/yes/no/yes/no/yes/yes/no/no = 5.
Tests `begin … match !stack with [] -> … | top :: rest -> … end`
with side-effecting match arms inside a `while` body, ref-of-list
used as a stack, three-way char dispatch via short-circuited
comparisons. 174 baseline programs total.
- 2026-05-11 Phase 5.1 — wildcard_match.ml baseline (recursive `*`
/`?` wildcard matcher; over 3×6 = 18 (pattern, text) combos,
6 match). Cases: