marpa

GitHub release

Marpa is a parsing algorithm.
From the official Marpa website:

Marpa is fast. It parses in linear time:

(emphasis added)

Installation

Add this to your application's shard.yml:

dependencies:
  marpa:
    github: omarroth/marpa

Usage

require "marpa"

parser = Marpa::Parser.new

grammar = <<-'END_BNF'
:start ::= language

language ::= number op_plus number
number ~ [\d]+
op_plus ~ '+'

:discard ~ whitespace
whitespace ~ [\s]+
END_BNF

input = "100 + 200"

parser.parse(input, grammar) # => ["100", "+", "200"]

See examples/ for a more thorough demonstration of this interface's capabilities, including a parser for JSON.

Features

Limitations

Contributing

  1. Fork it ( https://github.com/omarroth/marpa/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors