And we have our application. We can create both SLR and LL parsers with these set algorithms and the NFA to DFA converter. At the moment I'm tinkering with an application that needs a SLR-parser, this will soon be a project.
An interface for the application can be found here. Alternatively the application can be run from terminus with the following commandgrammar2set [optional: name] filename [options: -nullable -first -follow]
If no options are given, all of the three are printed.
As an example the grammar for the application itself can be put through it, try calculate onprod Prod -> "prod" "nonTerm" "->" ProdRight prod ProdRight -> RightSide ProdRight' prod ProdRight' -> Prod prod ProdRight' -> prod RightSide -> RightExp RightSide' prod RightSide' -> "|" RightSide prod RightSide' -> prod RightExp -> "nonTerm" RightExp prod RightExp -> "term" RightExp prod RightExp ->
The Git repo is found here. Enjoy the spring!