This is a C library for SLR parsing. I hope to add more comments and more features in the future. Remarks/suggestions/bug finds are welcome.
The main APIs are:
./include/parser.h: Creating a grammar from a specification, creating an SLR parser from a grammar (if it is an SLR grammar - this is discovered on the way), parsing a sequence of terminal tokens (yielding a sequence of either terminal tokens or productions) and synthesizing attributes. Note: I made up the (extermely simple) specification language, I hope it can be figured out from./test/example.grm../include/regex.h: Creating an SLR parser of regex expressions and "compiling" regexes using such a parser to DFAs. Note: I made up the regex language, I hope it can be figured out from./src/regex.c../include/lexer.h: Creating a lexical analyzer from a specification and processing strings into token seqeunces using such a lexical analyzer. Note: I made up an (extermely simple) specification language, I hope it can be figured out from./test/example.lex.
As a "backend", one has
./src/fa.h: Dealing with NFAs and DFAs, as well as "DFAs with back-tracking", which is my slight abstraction of what happens in the LR parsing process.
One can run tests using the following Linux commands ran when in terminal at root directory:
source 1_fa_test.shsource 2_grammar_test.shsource 3_regex_test.shsource 4_lexer_test.shsource calculator.sh: A "concluding" test, using the components in order to create a simple calculator.
Everything was tested on Linux using the gcc compiler with the -std=c99 option, and does not use any libraries except the standard library.