Skip to content

Commit 3675379

Browse files
feat(lexicon): add get_vocab and relevant tests.
1 parent b612d9a commit 3675379

8 files changed

Lines changed: 676 additions & 17 deletions

File tree

src/dylan/action/atomic/effect_factory.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,23 @@ def clear_macro_templates(cls) -> None:
6464
cls._macro_templates.clear()
6565

6666
@classmethod
67-
def init_macro_templates(cls, cleaned_lines: list[str | None]) -> None:
68-
"""Load ``lexical-macros.txt`` (already block-comment-stripped like Java)."""
67+
def init_macro_templates(
68+
cls,
69+
cleaned_lines: list[str | None],
70+
) -> tuple[int, int, tuple[str, ...]]:
71+
"""Load ``lexical-macros.txt`` (already block-comment-stripped like Java).
72+
73+
Returns ``(macros_loaded, macros_failed, failed_macro_names)`` where *macros_failed*
74+
counts macro headers that never received a non-empty body (including at EOF),
75+
and *failed_macro_names* lists those macro base names in parse order.
76+
"""
6977
cls.clear_macro_templates()
7078
name: str | None = None
7179
metavars: list[str] = []
7280
body: list[str] = []
81+
loaded = 0
82+
failed = 0
83+
failed_names: list[str] = []
7384
for raw in cleaned_lines:
7485
if raw is None:
7586
continue
@@ -78,6 +89,7 @@ def init_macro_templates(cls, cleaned_lines: list[str | None]) -> None:
7889
continue
7990
if not line and body and name is not None:
8091
cls._macro_templates[name] = (list(metavars), list(body))
92+
loaded += 1
8193
name, metavars, body = None, [], []
8294
continue
8395
if name is None:
@@ -86,6 +98,11 @@ def init_macro_templates(cls, cleaned_lines: list[str | None]) -> None:
8698
body.append(line)
8799
if name is not None and body:
88100
cls._macro_templates[name] = (list(metavars), list(body))
101+
loaded += 1
102+
elif name is not None:
103+
failed += 1
104+
failed_names.append(name)
105+
return loaded, failed, tuple(failed_names)
89106

90107
@classmethod
91108
def _expand_macro_body(cls, name: str, metavals: list[str]) -> list[str]:

0 commit comments

Comments
 (0)