%global _empty_manifest_terminate_build 0 Name: python-pybison Version: 0.6.3 Release: 1 Summary: Python bindings for bison/flex parser engine License: GPLv2 URL: https://github.com/lukeparser/pybison Source0: https://mirrors.nju.edu.cn/pypi/web/packages/72/40/1f908ae261b650b45192d92c738d412ca86ebbabc46fa555b1380b0e67ae/pybison-0.6.3.tar.gz %description # PyBison [![python versions](https://img.shields.io/pypi/pyversions/pybison)](https://pypi.org/project/pybison) [![wheel](https://img.shields.io/pypi/wheel/pybison)](https://pypi.org/project/pybison/#files) [![Build](https://github.com/lukeparser/pybison/workflows/Build/badge.svg)](https://github.com/lukeparser/pybison/actions) Welcome to PyBison! Bringing **GNU Bison/Flex**'s raw speed and power to Python ## What is PyBison? PyBison is a framework which effectively 'wraps' **Bison** and **Flex into** a Python class structure. You define a parser class, define tokens and precedences as attributes, and parse targets as methods with rules in the docstrings, then instantiate and run. Black Magick happens in the background, whereupon you get callbacks each time `yyparse()` resolves a parse target. ## Install Now, **install pybison** with: ```bash pip install pybison ``` The following command will verify if the installation succeeded: ```bash python -c "import bison" ``` ## There are already parsers for Python. Why re-invent the wheel? I looked at all the Python-based parsing frameworks. IMO, the best one was **PLY** - a pure-python *lexx/yacc* implementation (which I have borrowed from heavily in designing PyBison's OO model). But PLY suffers some major limitations: - usage of 'named groups' regular expressions in the lexer creates a hard limit of 100 tokens - not enough to comfortably handle major languages - pure-python implementation is a convenience, but incurs a cruel performance penalty - the parser engine is SLR, not full LALR(1) The other frameworks utilise a fiddly script syntax - ## How do I use this? Refer to the [examples](https://github.com/lukeparser/pybison/tree/master/examples) and the [docs](https://github.com/lukeparser/pybison/tree/master/doc) for usage. ## Development You will need: - [Python](https://www.python.org/), with development headers and libraries - [pip](https://pypi.org/project/pip/) - [GNU bison](https://www.gnu.org/software/bison/) - [flex](https://github.com/westes/flex) - A standard C compiler and linker We assume that Python, pip and a C compiler is already installed. ### Dependencies First, install the dependencies `bison` and `flex`. **Arch Linux** ```bash sudo pacman -S bison flex ``` **Ubuntu** ```bash sudo apt-get install bison flex ``` **Windows** With [Chocolatey](https://community.chocolatey.org/), you can install the packages as follows: ```bash choco install winflexbison3 ``` Additionally, if a C compiler is needed, [mingw](https://osdn.net/projects/mingw/) can be installed with Chocolatey as well. ```bash choco install mingw ``` ### Debugging See the short introduction into [debugging](debugging/README.md). ## Collaborators - PyBison was designed and written by [David McNab ](http://freenet.mcnabhosting.com/python/pybison/) - [smvv](https://github.com/smvv) - [habibutsu](https://github.com/habibutsu) - [thisiscam](https://github.com/thisiscam) - [eugeneai](https://github.com/eugenai) - [csarn](https://github.com/csarn) - [sbrodehl](https://github.com/sbrodehl) - [da-h](https://github.com/da-h) %package -n python3-pybison Summary: Python bindings for bison/flex parser engine Provides: python-pybison BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip BuildRequires: python3-cffi BuildRequires: gcc BuildRequires: gdb %description -n python3-pybison # PyBison [![python versions](https://img.shields.io/pypi/pyversions/pybison)](https://pypi.org/project/pybison) [![wheel](https://img.shields.io/pypi/wheel/pybison)](https://pypi.org/project/pybison/#files) [![Build](https://github.com/lukeparser/pybison/workflows/Build/badge.svg)](https://github.com/lukeparser/pybison/actions) Welcome to PyBison! Bringing **GNU Bison/Flex**'s raw speed and power to Python ## What is PyBison? PyBison is a framework which effectively 'wraps' **Bison** and **Flex into** a Python class structure. You define a parser class, define tokens and precedences as attributes, and parse targets as methods with rules in the docstrings, then instantiate and run. Black Magick happens in the background, whereupon you get callbacks each time `yyparse()` resolves a parse target. ## Install Now, **install pybison** with: ```bash pip install pybison ``` The following command will verify if the installation succeeded: ```bash python -c "import bison" ``` ## There are already parsers for Python. Why re-invent the wheel? I looked at all the Python-based parsing frameworks. IMO, the best one was **PLY** - a pure-python *lexx/yacc* implementation (which I have borrowed from heavily in designing PyBison's OO model). But PLY suffers some major limitations: - usage of 'named groups' regular expressions in the lexer creates a hard limit of 100 tokens - not enough to comfortably handle major languages - pure-python implementation is a convenience, but incurs a cruel performance penalty - the parser engine is SLR, not full LALR(1) The other frameworks utilise a fiddly script syntax - ## How do I use this? Refer to the [examples](https://github.com/lukeparser/pybison/tree/master/examples) and the [docs](https://github.com/lukeparser/pybison/tree/master/doc) for usage. ## Development You will need: - [Python](https://www.python.org/), with development headers and libraries - [pip](https://pypi.org/project/pip/) - [GNU bison](https://www.gnu.org/software/bison/) - [flex](https://github.com/westes/flex) - A standard C compiler and linker We assume that Python, pip and a C compiler is already installed. ### Dependencies First, install the dependencies `bison` and `flex`. **Arch Linux** ```bash sudo pacman -S bison flex ``` **Ubuntu** ```bash sudo apt-get install bison flex ``` **Windows** With [Chocolatey](https://community.chocolatey.org/), you can install the packages as follows: ```bash choco install winflexbison3 ``` Additionally, if a C compiler is needed, [mingw](https://osdn.net/projects/mingw/) can be installed with Chocolatey as well. ```bash choco install mingw ``` ### Debugging See the short introduction into [debugging](debugging/README.md). ## Collaborators - PyBison was designed and written by [David McNab ](http://freenet.mcnabhosting.com/python/pybison/) - [smvv](https://github.com/smvv) - [habibutsu](https://github.com/habibutsu) - [thisiscam](https://github.com/thisiscam) - [eugeneai](https://github.com/eugenai) - [csarn](https://github.com/csarn) - [sbrodehl](https://github.com/sbrodehl) - [da-h](https://github.com/da-h) %package help Summary: Development documents and examples for pybison Provides: python3-pybison-doc %description help # PyBison [![python versions](https://img.shields.io/pypi/pyversions/pybison)](https://pypi.org/project/pybison) [![wheel](https://img.shields.io/pypi/wheel/pybison)](https://pypi.org/project/pybison/#files) [![Build](https://github.com/lukeparser/pybison/workflows/Build/badge.svg)](https://github.com/lukeparser/pybison/actions) Welcome to PyBison! Bringing **GNU Bison/Flex**'s raw speed and power to Python ## What is PyBison? PyBison is a framework which effectively 'wraps' **Bison** and **Flex into** a Python class structure. You define a parser class, define tokens and precedences as attributes, and parse targets as methods with rules in the docstrings, then instantiate and run. Black Magick happens in the background, whereupon you get callbacks each time `yyparse()` resolves a parse target. ## Install Now, **install pybison** with: ```bash pip install pybison ``` The following command will verify if the installation succeeded: ```bash python -c "import bison" ``` ## There are already parsers for Python. Why re-invent the wheel? I looked at all the Python-based parsing frameworks. IMO, the best one was **PLY** - a pure-python *lexx/yacc* implementation (which I have borrowed from heavily in designing PyBison's OO model). But PLY suffers some major limitations: - usage of 'named groups' regular expressions in the lexer creates a hard limit of 100 tokens - not enough to comfortably handle major languages - pure-python implementation is a convenience, but incurs a cruel performance penalty - the parser engine is SLR, not full LALR(1) The other frameworks utilise a fiddly script syntax - ## How do I use this? Refer to the [examples](https://github.com/lukeparser/pybison/tree/master/examples) and the [docs](https://github.com/lukeparser/pybison/tree/master/doc) for usage. ## Development You will need: - [Python](https://www.python.org/), with development headers and libraries - [pip](https://pypi.org/project/pip/) - [GNU bison](https://www.gnu.org/software/bison/) - [flex](https://github.com/westes/flex) - A standard C compiler and linker We assume that Python, pip and a C compiler is already installed. ### Dependencies First, install the dependencies `bison` and `flex`. **Arch Linux** ```bash sudo pacman -S bison flex ``` **Ubuntu** ```bash sudo apt-get install bison flex ``` **Windows** With [Chocolatey](https://community.chocolatey.org/), you can install the packages as follows: ```bash choco install winflexbison3 ``` Additionally, if a C compiler is needed, [mingw](https://osdn.net/projects/mingw/) can be installed with Chocolatey as well. ```bash choco install mingw ``` ### Debugging See the short introduction into [debugging](debugging/README.md). ## Collaborators - PyBison was designed and written by [David McNab ](http://freenet.mcnabhosting.com/python/pybison/) - [smvv](https://github.com/smvv) - [habibutsu](https://github.com/habibutsu) - [thisiscam](https://github.com/thisiscam) - [eugeneai](https://github.com/eugenai) - [csarn](https://github.com/csarn) - [sbrodehl](https://github.com/sbrodehl) - [da-h](https://github.com/da-h) %prep %autosetup -n pybison-0.6.3 %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-pybison -f filelist.lst %dir %{python3_sitearch}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue Apr 11 2023 Python_Bot - 0.6.3-1 - Package Spec generated