Meta-language in Arpeggio inspired by Xtext
textX is a meta-language for building Domain-Specific Languages (DSLs) inspired by Xtext.
textX follows the syntax and semantics of Xtext but differs in some places and is implemented 100% in Python using Arpeggio parser. It is fully dynamic - no code generation at all!
pip install textX
There is no docs at the moment but here is a quick introduction what can be done. For more see examples.
- Write a language description in textX (file hello.tx):
HelloWorldModel: 'hello' to_greet+=Who[','] ; Who: name = /[^,]*/ ;
Description consists of a set of parsing rules which at the same time describe Python classes that will be used to instantiate object of your model.
- Create meta-model from textX language description:
from textx.metamodel import metamodel_from_file hello_meta = metamodel_from_file('hello.tx')
- Optionally export meta-model to dot (visualize your language abstract syntax):
from textx.export import metamodel_export metamodel_export(hello_meta, 'hello_meta.dot')
You can see that for each rule from language description an appropriate Python class has been created. A BASETYPE hierarchy is builtin. Each meta-model has it.
- Create some content (i.e. model) in your new language (example.hello):
hello World, Solar System, Universe
Your language syntax is also described by language rules from step 1.
- Use meta-model to create models from textual description:
example_hello_model = hello_meta.model_from_file('example.hello')
Textual model ‘example.hello’ will be parsed and transformed to a plain Python object graph. Object classes are those defined by the meta-model.
- Optionally export model to dot to visualize it:
from textx.export import model_export model_export(example_hello_model, 'example.dot')
This is an object graph automatically constructed from ‘example.hello’ file.
- Use your model: interpret it, generate code … It is a plain Python graph of objects with plain attributes!
Release history Release notifications
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size textX-0.2.tar.gz (15.6 kB)||File type Source||Python version None||Upload date||Hashes View hashes|