From b31ec2694df84d9d39ea7c245da95d8c4f50cb80 Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Tue, 11 Apr 2023 08:47:14 +0000 Subject: automatic import of python-textx --- .gitignore | 1 + python-textx.spec | 688 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ sources | 1 + 3 files changed, 690 insertions(+) create mode 100644 python-textx.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore index e69de29..d207410 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/textX-3.1.1.tar.gz diff --git a/python-textx.spec b/python-textx.spec new file mode 100644 index 0000000..3cca598 --- /dev/null +++ b/python-textx.spec @@ -0,0 +1,688 @@ +%global _empty_manifest_terminate_build 0 +Name: python-textX +Version: 3.1.1 +Release: 1 +Summary: Meta-language for DSL implementation inspired by Xtext +License: MIT +URL: https://github.com/textX/textX +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/32/e5/04de728335471537acd49a5ca025e697b7b303e40d46facf143294b5a989/textX-3.1.1.tar.gz +BuildArch: noarch + +Requires: python3-Arpeggio +Requires: python3-click +Requires: python3-textX-dev +Requires: python3-click +Requires: python3-setuptools-scm +Requires: python3-mkdocs +Requires: python3-mike +Requires: python3-twine +Requires: python3-click +Requires: python3-flake8 +Requires: python3-tox +Requires: python3-jinja2 +Requires: python3-coverage +Requires: python3-coveralls +Requires: python3-pytest +Requires: python3-html5lib + +%description +![](https://raw.githubusercontent.com/textX/textX/master/art/textX-logo.png) + +[![PyPI Version](https://img.shields.io/pypi/v/textX.svg)](https://pypi.python.org/pypi/textX) +![](https://img.shields.io/pypi/l/textX.svg) +[![Build status](https://github.com/textx/textx/actions/workflows/ci-linux-ubuntu.yml/badge.svg)](https://github.com/textx/textx/actions) +[![Code test coverage](https://coveralls.io/repos/github/textX/textX/badge.svg?branch=master)](https://coveralls.io/github/textX/textX?branch=master) +[![Documentation Status](https://img.shields.io/badge/docs-latest-green.svg)](http://textx.github.io/textX/latest/) + + +textX is a meta-language for building Domain-Specific Languages (DSLs) in +Python. It is inspired by [Xtext]. + +In a nutshell, textX will help you build your textual language in an easy way. +You can invent your own language or build a support for already existing textual +language or file format. + +From a single language description (grammar), textX will build a parser and a +meta-model (a.k.a. abstract syntax) for the language. See the docs for the +details. + +textX follows the syntax and semantics of Xtext but [differs in some +places](http://textx.github.io/textX/latest/about/comparison/) and is +implemented 100% in Python using [Arpeggio] PEG parser - no grammar ambiguities, +unlimited lookahead, interpreter style of work. + + +## Quick intro + +Here is a complete example that shows the definition of a simple DSL for +drawing. We also show how to define a custom class, interpret models and search +for instances of a particular type. + +```python +from textx import metamodel_from_str, get_children_of_type + +grammar = """ +Model: commands*=DrawCommand; +DrawCommand: MoveCommand | ShapeCommand; +ShapeCommand: LineTo | Circle; +MoveCommand: MoveTo | MoveBy; +MoveTo: 'move' 'to' position=Point; +MoveBy: 'move' 'by' vector=Point; +Circle: 'circle' radius=INT; +LineTo: 'line' 'to' point=Point; +Point: x=INT ',' y=INT; +""" + +# We will provide our class for Point. +# Classes for other rules will be dynamically generated. +class Point(object): + def __init__(self, parent, x, y): + self.parent = parent + self.x = x + self.y = y + + def __str__(self): + return "{},{}".format(self.x, self.y) + + def __add__(self, other): + return Point(self.parent, self.x + other.x, self.y + other.y) + +# Create meta-model from the grammar. Provide `Point` class to be used for +# the rule `Point` from the grammar. +mm = metamodel_from_str(grammar, classes=[Point]) + +model_str = """ + move to 5, 10 + line to 10, 10 + line to 20, 20 + move by 5, -7 + circle 10 + line to 10, 10 +""" + +# Meta-model knows how to parse and instantiate models. +model = mm.model_from_str(model_str) + +# At this point model is a plain Python object graph with instances of +# dynamically created classes and attributes following the grammar. + +def cname(o): + return o.__class__.__name__ + +# Let's interpret the model +position = Point(None, 0, 0) +for command in model.commands: + if cname(command) == 'MoveTo': + print('Moving to position', command.position) + position = command.position + elif cname(command) == 'MoveBy': + position = position + command.vector + print('Moving by', command.vector, 'to a new position', position) + elif cname(command) == 'Circle': + print('Drawing circle at', position, 'with radius', command.radius) + else: + print('Drawing line from', position, 'to', command.point) + position = command.point +print('End position is', position) + +# Output: +# Moving to position 5,10 +# Drawing line from 5,10 to 10,10 +# Drawing line from 10,10 to 20,20 +# Moving by 5,-7 to a new position 25,13 +# Drawing circle at 25,13 with radius 10 +# Drawing line from 25,13 to 10,10 + +# Collect all points starting from the root of the model +points = get_children_of_type("Point", model) +for point in points: + print('Point: {}'.format(point)) + +# Output: +# Point: 5,10 +# Point: 10,10 +# Point: 20,20 +# Point: 5,-7 +# Point: 10,10 +``` + + +## Video tutorials + + +### Introduction to textX + + +[![Introduction to +textX](https://img.youtube.com/vi/CN2IVtInapo/0.jpg)](https://www.youtube.com/watch?v=CN2IVtInapo) + + +### Implementing Martin Fowler's State Machine DSL in textX + +[![Implementing State Machine +DSL](https://img.youtube.com/vi/HI14jk0JIR0/0.jpg)](https://www.youtube.com/watch?v=HI14jk0JIR0) + + +## Docs and tutorials + +The full documentation with tutorials is available at +http://textx.github.io/textX/stable/ + + +# Support in IDE/editors + +Projects that are currently in progress are: + +- [textX-LS](https://github.com/textX/textX-LS) - support for Language Server + Protocol and VS Code for any textX based language. This project is about to + supersede the following projects: + - [textX-languageserver](https://github.com/textX/textX-languageserver) - + Language Server Protocol support for textX languages + - [textX-extensions](https://github.com/textX/textX-extensions) - syntax + highlighting, code outline +- [viewX](https://github.com/danielkupco/viewX-vscode) - creating visualizers + for textX languages + +If you are a vim editor user check +out [support for vim](https://github.com/textX/textx.vim/). + +For emacs there is [textx-mode](https://github.com/textX/textx-mode) which is +also available in [MELPA](https://melpa.org/#/textx-mode). + +You can also check +out [textX-ninja project](https://github.com/textX/textX-ninja). It is +currently unmaintained. + + +## Discussion and help + +For general questions, suggestions, and feature requests please use [GitHub +Discussions](https://github.com/textX/textX/discussions). + + +For issues please use [GitHub issue +tracker](https://github.com/textX/textX/issues). + + +## Citing textX + +If you are using textX in your research project we would be very grateful if you +cite our paper: + +Dejanović I., Vaderna R., Milosavljević G., Vuković Ž. (2017). [TextX: A Python +tool for Domain-Specific Languages +implementation](https://www.doi.org/10.1016/j.knosys.2016.10.023). +Knowledge-Based Systems, 115, 1-4. + + +## License + +MIT + +## Python versions + +Tested for 3.6+ + + +[Arpeggio]: https://github.com/textX/Arpeggio +[Xtext]: http://www.eclipse.org/Xtext/ + + +%package -n python3-textX +Summary: Meta-language for DSL implementation inspired by Xtext +Provides: python-textX +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-textX +![](https://raw.githubusercontent.com/textX/textX/master/art/textX-logo.png) + +[![PyPI Version](https://img.shields.io/pypi/v/textX.svg)](https://pypi.python.org/pypi/textX) +![](https://img.shields.io/pypi/l/textX.svg) +[![Build status](https://github.com/textx/textx/actions/workflows/ci-linux-ubuntu.yml/badge.svg)](https://github.com/textx/textx/actions) +[![Code test coverage](https://coveralls.io/repos/github/textX/textX/badge.svg?branch=master)](https://coveralls.io/github/textX/textX?branch=master) +[![Documentation Status](https://img.shields.io/badge/docs-latest-green.svg)](http://textx.github.io/textX/latest/) + + +textX is a meta-language for building Domain-Specific Languages (DSLs) in +Python. It is inspired by [Xtext]. + +In a nutshell, textX will help you build your textual language in an easy way. +You can invent your own language or build a support for already existing textual +language or file format. + +From a single language description (grammar), textX will build a parser and a +meta-model (a.k.a. abstract syntax) for the language. See the docs for the +details. + +textX follows the syntax and semantics of Xtext but [differs in some +places](http://textx.github.io/textX/latest/about/comparison/) and is +implemented 100% in Python using [Arpeggio] PEG parser - no grammar ambiguities, +unlimited lookahead, interpreter style of work. + + +## Quick intro + +Here is a complete example that shows the definition of a simple DSL for +drawing. We also show how to define a custom class, interpret models and search +for instances of a particular type. + +```python +from textx import metamodel_from_str, get_children_of_type + +grammar = """ +Model: commands*=DrawCommand; +DrawCommand: MoveCommand | ShapeCommand; +ShapeCommand: LineTo | Circle; +MoveCommand: MoveTo | MoveBy; +MoveTo: 'move' 'to' position=Point; +MoveBy: 'move' 'by' vector=Point; +Circle: 'circle' radius=INT; +LineTo: 'line' 'to' point=Point; +Point: x=INT ',' y=INT; +""" + +# We will provide our class for Point. +# Classes for other rules will be dynamically generated. +class Point(object): + def __init__(self, parent, x, y): + self.parent = parent + self.x = x + self.y = y + + def __str__(self): + return "{},{}".format(self.x, self.y) + + def __add__(self, other): + return Point(self.parent, self.x + other.x, self.y + other.y) + +# Create meta-model from the grammar. Provide `Point` class to be used for +# the rule `Point` from the grammar. +mm = metamodel_from_str(grammar, classes=[Point]) + +model_str = """ + move to 5, 10 + line to 10, 10 + line to 20, 20 + move by 5, -7 + circle 10 + line to 10, 10 +""" + +# Meta-model knows how to parse and instantiate models. +model = mm.model_from_str(model_str) + +# At this point model is a plain Python object graph with instances of +# dynamically created classes and attributes following the grammar. + +def cname(o): + return o.__class__.__name__ + +# Let's interpret the model +position = Point(None, 0, 0) +for command in model.commands: + if cname(command) == 'MoveTo': + print('Moving to position', command.position) + position = command.position + elif cname(command) == 'MoveBy': + position = position + command.vector + print('Moving by', command.vector, 'to a new position', position) + elif cname(command) == 'Circle': + print('Drawing circle at', position, 'with radius', command.radius) + else: + print('Drawing line from', position, 'to', command.point) + position = command.point +print('End position is', position) + +# Output: +# Moving to position 5,10 +# Drawing line from 5,10 to 10,10 +# Drawing line from 10,10 to 20,20 +# Moving by 5,-7 to a new position 25,13 +# Drawing circle at 25,13 with radius 10 +# Drawing line from 25,13 to 10,10 + +# Collect all points starting from the root of the model +points = get_children_of_type("Point", model) +for point in points: + print('Point: {}'.format(point)) + +# Output: +# Point: 5,10 +# Point: 10,10 +# Point: 20,20 +# Point: 5,-7 +# Point: 10,10 +``` + + +## Video tutorials + + +### Introduction to textX + + +[![Introduction to +textX](https://img.youtube.com/vi/CN2IVtInapo/0.jpg)](https://www.youtube.com/watch?v=CN2IVtInapo) + + +### Implementing Martin Fowler's State Machine DSL in textX + +[![Implementing State Machine +DSL](https://img.youtube.com/vi/HI14jk0JIR0/0.jpg)](https://www.youtube.com/watch?v=HI14jk0JIR0) + + +## Docs and tutorials + +The full documentation with tutorials is available at +http://textx.github.io/textX/stable/ + + +# Support in IDE/editors + +Projects that are currently in progress are: + +- [textX-LS](https://github.com/textX/textX-LS) - support for Language Server + Protocol and VS Code for any textX based language. This project is about to + supersede the following projects: + - [textX-languageserver](https://github.com/textX/textX-languageserver) - + Language Server Protocol support for textX languages + - [textX-extensions](https://github.com/textX/textX-extensions) - syntax + highlighting, code outline +- [viewX](https://github.com/danielkupco/viewX-vscode) - creating visualizers + for textX languages + +If you are a vim editor user check +out [support for vim](https://github.com/textX/textx.vim/). + +For emacs there is [textx-mode](https://github.com/textX/textx-mode) which is +also available in [MELPA](https://melpa.org/#/textx-mode). + +You can also check +out [textX-ninja project](https://github.com/textX/textX-ninja). It is +currently unmaintained. + + +## Discussion and help + +For general questions, suggestions, and feature requests please use [GitHub +Discussions](https://github.com/textX/textX/discussions). + + +For issues please use [GitHub issue +tracker](https://github.com/textX/textX/issues). + + +## Citing textX + +If you are using textX in your research project we would be very grateful if you +cite our paper: + +Dejanović I., Vaderna R., Milosavljević G., Vuković Ž. (2017). [TextX: A Python +tool for Domain-Specific Languages +implementation](https://www.doi.org/10.1016/j.knosys.2016.10.023). +Knowledge-Based Systems, 115, 1-4. + + +## License + +MIT + +## Python versions + +Tested for 3.6+ + + +[Arpeggio]: https://github.com/textX/Arpeggio +[Xtext]: http://www.eclipse.org/Xtext/ + + +%package help +Summary: Development documents and examples for textX +Provides: python3-textX-doc +%description help +![](https://raw.githubusercontent.com/textX/textX/master/art/textX-logo.png) + +[![PyPI Version](https://img.shields.io/pypi/v/textX.svg)](https://pypi.python.org/pypi/textX) +![](https://img.shields.io/pypi/l/textX.svg) +[![Build status](https://github.com/textx/textx/actions/workflows/ci-linux-ubuntu.yml/badge.svg)](https://github.com/textx/textx/actions) +[![Code test coverage](https://coveralls.io/repos/github/textX/textX/badge.svg?branch=master)](https://coveralls.io/github/textX/textX?branch=master) +[![Documentation Status](https://img.shields.io/badge/docs-latest-green.svg)](http://textx.github.io/textX/latest/) + + +textX is a meta-language for building Domain-Specific Languages (DSLs) in +Python. It is inspired by [Xtext]. + +In a nutshell, textX will help you build your textual language in an easy way. +You can invent your own language or build a support for already existing textual +language or file format. + +From a single language description (grammar), textX will build a parser and a +meta-model (a.k.a. abstract syntax) for the language. See the docs for the +details. + +textX follows the syntax and semantics of Xtext but [differs in some +places](http://textx.github.io/textX/latest/about/comparison/) and is +implemented 100% in Python using [Arpeggio] PEG parser - no grammar ambiguities, +unlimited lookahead, interpreter style of work. + + +## Quick intro + +Here is a complete example that shows the definition of a simple DSL for +drawing. We also show how to define a custom class, interpret models and search +for instances of a particular type. + +```python +from textx import metamodel_from_str, get_children_of_type + +grammar = """ +Model: commands*=DrawCommand; +DrawCommand: MoveCommand | ShapeCommand; +ShapeCommand: LineTo | Circle; +MoveCommand: MoveTo | MoveBy; +MoveTo: 'move' 'to' position=Point; +MoveBy: 'move' 'by' vector=Point; +Circle: 'circle' radius=INT; +LineTo: 'line' 'to' point=Point; +Point: x=INT ',' y=INT; +""" + +# We will provide our class for Point. +# Classes for other rules will be dynamically generated. +class Point(object): + def __init__(self, parent, x, y): + self.parent = parent + self.x = x + self.y = y + + def __str__(self): + return "{},{}".format(self.x, self.y) + + def __add__(self, other): + return Point(self.parent, self.x + other.x, self.y + other.y) + +# Create meta-model from the grammar. Provide `Point` class to be used for +# the rule `Point` from the grammar. +mm = metamodel_from_str(grammar, classes=[Point]) + +model_str = """ + move to 5, 10 + line to 10, 10 + line to 20, 20 + move by 5, -7 + circle 10 + line to 10, 10 +""" + +# Meta-model knows how to parse and instantiate models. +model = mm.model_from_str(model_str) + +# At this point model is a plain Python object graph with instances of +# dynamically created classes and attributes following the grammar. + +def cname(o): + return o.__class__.__name__ + +# Let's interpret the model +position = Point(None, 0, 0) +for command in model.commands: + if cname(command) == 'MoveTo': + print('Moving to position', command.position) + position = command.position + elif cname(command) == 'MoveBy': + position = position + command.vector + print('Moving by', command.vector, 'to a new position', position) + elif cname(command) == 'Circle': + print('Drawing circle at', position, 'with radius', command.radius) + else: + print('Drawing line from', position, 'to', command.point) + position = command.point +print('End position is', position) + +# Output: +# Moving to position 5,10 +# Drawing line from 5,10 to 10,10 +# Drawing line from 10,10 to 20,20 +# Moving by 5,-7 to a new position 25,13 +# Drawing circle at 25,13 with radius 10 +# Drawing line from 25,13 to 10,10 + +# Collect all points starting from the root of the model +points = get_children_of_type("Point", model) +for point in points: + print('Point: {}'.format(point)) + +# Output: +# Point: 5,10 +# Point: 10,10 +# Point: 20,20 +# Point: 5,-7 +# Point: 10,10 +``` + + +## Video tutorials + + +### Introduction to textX + + +[![Introduction to +textX](https://img.youtube.com/vi/CN2IVtInapo/0.jpg)](https://www.youtube.com/watch?v=CN2IVtInapo) + + +### Implementing Martin Fowler's State Machine DSL in textX + +[![Implementing State Machine +DSL](https://img.youtube.com/vi/HI14jk0JIR0/0.jpg)](https://www.youtube.com/watch?v=HI14jk0JIR0) + + +## Docs and tutorials + +The full documentation with tutorials is available at +http://textx.github.io/textX/stable/ + + +# Support in IDE/editors + +Projects that are currently in progress are: + +- [textX-LS](https://github.com/textX/textX-LS) - support for Language Server + Protocol and VS Code for any textX based language. This project is about to + supersede the following projects: + - [textX-languageserver](https://github.com/textX/textX-languageserver) - + Language Server Protocol support for textX languages + - [textX-extensions](https://github.com/textX/textX-extensions) - syntax + highlighting, code outline +- [viewX](https://github.com/danielkupco/viewX-vscode) - creating visualizers + for textX languages + +If you are a vim editor user check +out [support for vim](https://github.com/textX/textx.vim/). + +For emacs there is [textx-mode](https://github.com/textX/textx-mode) which is +also available in [MELPA](https://melpa.org/#/textx-mode). + +You can also check +out [textX-ninja project](https://github.com/textX/textX-ninja). It is +currently unmaintained. + + +## Discussion and help + +For general questions, suggestions, and feature requests please use [GitHub +Discussions](https://github.com/textX/textX/discussions). + + +For issues please use [GitHub issue +tracker](https://github.com/textX/textX/issues). + + +## Citing textX + +If you are using textX in your research project we would be very grateful if you +cite our paper: + +Dejanović I., Vaderna R., Milosavljević G., Vuković Ž. (2017). [TextX: A Python +tool for Domain-Specific Languages +implementation](https://www.doi.org/10.1016/j.knosys.2016.10.023). +Knowledge-Based Systems, 115, 1-4. + + +## License + +MIT + +## Python versions + +Tested for 3.6+ + + +[Arpeggio]: https://github.com/textX/Arpeggio +[Xtext]: http://www.eclipse.org/Xtext/ + + +%prep +%autosetup -n textX-3.1.1 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-textX -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Apr 11 2023 Python_Bot - 3.1.1-1 +- Package Spec generated diff --git a/sources b/sources new file mode 100644 index 0000000..1a93ba3 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +054c8349086341d291156800b3c30681 textX-3.1.1.tar.gz -- cgit v1.2.3