Convenience wrapper for exonware-xwsyntax - provides 'import xwsyntax' alias
Project description
xwsyntax
Bidirectional grammars: parse text to an AST, emit text again, or hop formats by reusing the same tree (for example JSON in, SQL out). 100+ grammars (300+ files) covering query languages, data formats, and code. Used by xwquery and editor/Monaco flows.
Company: eXonware.com · Author: eXonware Backend Team · Email: connect@exonware.com
Install
pip install exonware-xwsyntax
pip install exonware-xwsyntax[lazy]
pip install exonware-xwsyntax[full]
Runtime deps are declared in pyproject.toml (lark, exonware-xwsystem, exonware-xwnode, exonware-xwlazy wiring). See docs/GUIDE_01_USAGE.md for modes and troubleshooting.
Quick start
from exonware.xwsyntax import BidirectionalGrammar
grammar = BidirectionalGrammar.load('json')
ast = grammar.parse('{"name": "Alice", "age": 30}')
json_str = grammar.generate(ast)
sql_grammar = BidirectionalGrammar.load('sql')
sql = sql_grammar.generate(ast)
Facade: XWSyntax().parse(text, format_name) or validate(text, format_name).
Discovery: list_grammars_quick(), load_grammar_quick(name).
More code paths: REF_14_DX, API: REF_15_API.
Examples
Facade parse/validate
from exonware.xwsyntax import XWSyntax
engine = XWSyntax()
ast = engine.parse("a = 1 + 2", format_name="python")
is_valid = engine.validate("a = 1 + 2", format_name="python")
List and load grammars
from exonware.xwsyntax import list_grammars_quick, load_grammar_quick
names = list_grammars_quick()
grammar = load_grammar_quick(names[0])
JSON to SQL via shared AST
from exonware.xwsyntax import BidirectionalGrammar
ast = BidirectionalGrammar.load("json").parse('{"name": "Alice", "age": 30}')
sql = BidirectionalGrammar.load("sql").generate(ast)
What you get
| Area | Contents |
|---|---|
| Read/write | Grammar-driven parse and generate; avoid hand-maintained per-format maps. |
| Bidirectional | Round-trip or cross-syntax by swapping grammars on the same AST. |
| Large grammar set | SQL, Cypher, GraphQL, xwqueryscript, configs, programming languages, markup, storage dialects; 300+ .lark / .json assets. |
| Downstream | xwquery parsing; Monaco export and codec hooks via xwsystem. |
Phase: Alpha. Milestones: REF_22_PROJECT.
Docs and tests
- Start: docs/INDEX.md
- Usage: docs/GUIDE_01_USAGE.md
- Requirements / status: REF_01_REQ, REF_22_PROJECT
- API / design: REF_15_API, REF_13_ARCH, REF_14_DX
- Tests: REF_51_TEST. Run:
python tests/runner.pyfrom repo root.
License and links
MIT - LICENSE.
Homepage: https://exonware.com · Repository: https://github.com/exonware/xwsyntax
Version: 0.6.0.17 | Updated: 30-Mar-2026
Built with ❤️ by eXonware.com - Revolutionizing Python Development Since 2025
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xwsyntax-0.6.0.17.tar.gz.
File metadata
- Download URL: xwsyntax-0.6.0.17.tar.gz
- Upload date:
- Size: 216.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9fe4969cba4286487051eda0957b8ba5926c973d542897b7076738928c316264
|
|
| MD5 |
a8de10f972c8f4a52320ab0652ff5c6a
|
|
| BLAKE2b-256 |
85bb01850baaac8a5b3fe6e34a07e47f89132676e577858ec46866c780bb56d2
|
File details
Details for the file xwsyntax-0.6.0.17-py3-none-any.whl.
File metadata
- Download URL: xwsyntax-0.6.0.17-py3-none-any.whl
- Upload date:
- Size: 5.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6578bacc24a48296aea22a42f9efaf88286cfe26bb427ba83841c1d90d1c8f84
|
|
| MD5 |
57d8fbacde81b8b93934b85893fdfc4e
|
|
| BLAKE2b-256 |
3f6cdf5ce1d8e6b044f6e2632f4c92ac17d7baa569d853a23b9dc725a2d1ad7c
|