A tool that generates parser from a context-free grammar written in ABNF
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.



The ABNF Parser Generator is a tool that generates a parser from a context-free grammar written in ABNF. The generated parser is a LR(1) parser. The LR(1) parser is a parser that reads input from Left to right and produces a Rightmost derivation, where the 1 refers to the number of "look ahead" input symbols that are used in making parsing decisions.


You can follow these steps to get started:

- Compile the source code and export class files to a runnable jar file.
  Copy the jar file into 'demo' directory.
- cd demo/
- cat calc.abnf | java -jar apg.jar > Parser.java
- Create a new java project and include the generated file 'Parser.java' in
- Modify the main method so that it looks like this one.

    public static void main(String[] args) throws IOException {
        String text = "(1+2)*3";
        byte[] buffer = text.getBytes("US-ASCII");

        Parser parser = new Parser();
        ByteInputStream input = new ByteInputStream(buffer, buffer.length);

        try {
            boolean isMatch = parser.parse(input);

                    "Is '%1$s' a valid arithmetic expression?", text));
            System.out.println(isMatch ? "Yes" : "No");
        } finally {

- Run the program.
- Try "(1+2*3".