GithubHelp home page GithubHelp logo

abnf-parser-generator's Introduction

abnf-parser-generator

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.

DEMO

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
  it.
- 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);

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

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.