Skip to main content

Meta-language in Arpeggio inspired by Xtext

Project description

Meta-language in Arpeggio inspired by Xtext

textX follows closely 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!

Installation

pip install textX

Quick start

There is no docs at the moment but here is a quick introduction what can be done. For more see examples.

  1. 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.

  1. Create meta-model from textX language description:
from textx.metamodel import metamodel_from_file
hello_meta = metamodel_from_file('hello.tx')
  1. Optionally export meta-model to dot (visualize your language abstract syntax):
from textx.export import metamodel_export
metamodel_export(hello_meta, 'hello_meta.dot')

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.

  1. 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.

  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.

  1. Optionally export model to dot to visualize it:
from textx.export import model_export
model_export(example_hello_model, 'example.dot')

example.dot

This is an object graph automatically constructed from ‘example.hello’ file.

  1. Use your model: interpret it, generate code … It is a plain Python graph of objects with plain attributes!

Project details


Release history Release notifications

History Node

1.6.1

History Node

1.6

History Node

1.5.2

History Node

1.5.1

History Node

1.5

History Node

1.4

History Node

1.3.1

History Node

1.3

History Node

1.2

History Node

1.1.1

History Node

1.1

History Node

1.0

History Node

0.4.2

History Node

0.4.1

History Node

0.4

History Node

0.3.1

History Node

0.3

History Node

0.2.1

History Node

0.2

This version
History Node

0.1.2

History Node

0.1.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
textX-0.1.2.tar.gz (14.0 kB) Copy SHA256 hash SHA256 Source None Aug 17, 2014

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page