Skip to content

FransFaase/IParse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IParse

IParse is an interpreting parser, meaning that it reads a grammar and interpret this to parse another file. It also uses a parsing driven scanner approach, where the parser calls the scanner to see if a certain type of scanner symbol is found on the input. A number of scanners are provided, including a raw scanner, which gives access to the raw input. The grammar allows definition of character ranges and white space terminals, thus allowing a scanner to be specified in the grammar.

Several parsing algorithms are provided and can be selected from the command line. The default parsing algorithm is a back-tracking parser, which uses memorization, resulting in a good overall performance.

IParse has a proven track record in many application (including a commercial application), but it should be noted that some parts are still under construction, such as the LL1HeapColourParser. The ParParser, an experimental parallel parser, has poor performance.

Also RcTransl, a tool for language translation between Windows resource files, is still under development.

http://www.iwriteiam.nl/MM.html

Compiling

Compiling with g++ (version 7.5) in software folder:

g++ -fno-operator-names all_IParse.cpp -o IParse

Compiling with clang (version 6.0) in software folder:

clang++ -fno-operator-names all_IParse.cpp -o IParse

On Windows use Visual C++ 2008 Express Edition with IParse.sln file.

Testing

On Linux in root folder:

software/IParse software/c.gr others/scan.pc -p scan_pc_output
diff scan_pc_output others/scan_pc_output
software/IParse software/c.gr others/scan.pc -unparse unparse_scan.pc
diff unparse_scan.pc others/unparse_scan.pc

The diff should not find any differences.

MarkDownC

MarkDownC is a tool for performing literate programming with MarkDown files like the ones that are supported by GitHub. The idea is that you give this program a list of MarkDown files with fragments of C code and that the program figures out how to put these fragments together in a single C file, such that the file can be compiled. (I wrote about the conception of this idea in the blog article Literate programming with Markdown.) For examples on how to use the program, see:

Issue the following command to build the MarkDownC processor:

cd software
g++ -fno-operator-names all_IParse.cpp -o IParse
./IParse c_md.gr -o MarkDownCGrammar.cpp
g++ -g -fno-operator-names -Wall MarkDownC.cpp -o MarkDownC

Or:

cd software
clang++ -fno-operator-names all_IParse.cpp -o IParse
./IParse c_md.gr -o MarkDownCGrammar.cpp
clang++ -g -fno-operator-names -Wall MarkDownC.cpp -o MarkDownC

About

IParse: an interpreting parser written in C++

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published