Metadata-Version: 2.4
Name: tiferet-ly
Version: 1.0.0
Summary: A Lex/Yacc wrapper built with Tiferet.
Author-email: "Andrew Shatz, Great Strength Systems" <andrew@greatstrength.me>
License: MIT
Project-URL: Homepage, https://github.com/greatstrength/tiferet-ly
Project-URL: Repository, https://github.com/greatstrength/tiferet-ly
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: tiferet
Requires-Dist: pydantic>=2.6
Requires-Dist: ply>=3.11
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: PyYAML; extra == "test"
Dynamic: license-file

# tiferet-ly
A Lex/Yacc Wrapper built with Tiferet

## Overview
tiferet-ly lets you describe a small language — its words and the sentence
patterns it accepts — as a declared list instead of hand-written code. Hand
tiferet-ly that declaration and get back a working reader for text written in
that language, built on Python's well-established Lex/Yacc engine
([PLY](https://github.com/dabeaz/ply)). Adding a new keyword or sentence
pattern becomes an edit to the declaration rather than a new function buried
in a growing file, and the pieces around it can be tested without invoking
the real parsing engine at all.

## Documentation
Declare a language's words and sentence patterns as data. Translate that
declaration into the form the Lex/Yacc engine expects. Assemble those
translated rules into a reader. Read text written in the declared language
and hand back the result.

- [Quick-Start](docs/quick-start.md) — run the checked-in calculator from
  the repository root.
- [Domain Vision Statement](docs/domain-vision.md) — what tiferet-ly is for
  and the value it aims to provide.
- [Core Domain Distillation](docs/core-domain-distillation.md) — the
  technical breakdown of its intended vocabulary, behaviors, and design
  commitments.
- [AGENTS.md](AGENTS.md) — orientation for contributors and AI agents
  working in this repository.
