Giter VIP home page Giter VIP logo

grammar's Introduction

Grammar

David F. Houghton 19 Feb, 2011

This is an experiment to create in Java something like the Grammar facilities of Perl 6 or the recursive regexes of Perl 5.10+. It will parse by recursive decent, producing ASTs. For example, it can create a pattern matcher out of the following:

  rule = [ <a> | <b> ]{2} <b>
     a = "a"{,2}
     b = "ab"

This is idle itch scratching. I am writing this because it's more fun than figuring out how to use someone else's library. Also, I need recursive matching for a current project, so now's a good time. I aim to make it robust and well-tested but I make no hours of academic research, try ANTLR or Parboiled or something such. I confess I read none of the relevant research nor studied anyone else's algorithms before I started this, so a good bit of wheel re-invention is likely embodied in this code.

That being said, I think it's well designed and efficient. For examples of grammars it can match see the documentation and test (t/) directories. There is also an examples directory that contains benchmark tests comparing grammars to equivalent native regular expressions. Note that grammars can do things regular expressions can't, so these benchmarks don't demonstrate everything.

Full Documentation

The full documentation for this library is available at my site.

Other Stuff

This software is distributed under the terms of the FSF Lesser Gnu Public License (see lgpl.txt).

grammar's People

Contributors

dfhoughton avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

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.