A python C-Lang parser for texts based on https://wiki.c-base.org/dokuwiki/c-lang
A working Python (min. 3.8) instance with pip.
Debian:
sudo apt install python3.8 python3.8-dev python3.8-pip
Other (Mac OS X, Windows ...):
Install python libraries: python3.8 -m pip install -r requirements.txt
Now you should be able to use the Parser with the included parse.py.
Examples:
Command Line convert:
./parse.py convert kai --level=3 --forms=True
Input:
kai
Output:
cAi
File Convert:
./parse.py file-convert README.md REAMDE_converted.md --level=3 --forms=True
Input:
See README.md
Output:
See new file REAMDE_converted.md
The intended use is to convert text, markdown or other types of not encoded (pdf, odf ...) files. Also the included parse.py is a simple to use tool to the CLangParser object. To make the experience good for all types of users the included levels. To properly take advantage of the levels you should determine in which category you sort yourself in you can take a look at parse_rules.json after you have took a look maybe try the levels out with --level=int (default: 1 mor with --help). Also <ou can take a look at forms.json to take a look at thefomrs and maybe try them out with --forms=True (default: False).
This is currently broken due to some cython3 problem with recognizing the args of CLangParser.parse as object and text.
You will need a working instance of python3.8 including python3.8-dev, python3.8-config and cython3 + preferably gcc (tested on 8.3.0). The compiled file will still need the parse_rules.json and forms.json in the same folder as the executed file.
First you need to compile the parse.py:
cython3 -X language_level=3 --embed --cleanup 1 parse.py
Then compile the generated parse.c to a program:
gcc parse.c --pipe -fPIC -fvisibility=hidden -O2 -W -Wall `python3.8-config --embed --libs --cflags --includes` -o parse
Now the parse executable is ready to use an can be e.g. put into /usr/bin
parse.py is a click application built as convenience bind to parser.CLangParser.parse function and features e.g. a file converter. To control the level (alien (1), member (2), core-member(3)) the --level option is available.
Example usage:
python3.8 parse.py file.convert foo.txt bar.txt --level=3
The parser library contains the rules and forms (WIP) as JSON files. To modify the rules or add new ones just keep the syntax.
The parser library als contains the CLangParser and CLangGrammarSet with their respective Exceptions.
The used logger instance is CLangParser for both the CLangParser and CLangGrammarSet.