From: Louis-Philippe Date: 2010-05-14T06:58:22+09:00 Subject: Re: [ANN] Citrus ~ Parsing Expressions for Ruby --0016e646916a49fae6048680dbfa Content-Type: text/plain; charset=ISO-8859-1 are you the real Michael Jackson? 2010/5/13 Michael Jackson > Hi all, > > Just released this gem today, and thought others might get some good > use out of it. It's like Treetop, but takes a completely different > approach. > > http://rubygems.org/gems/citrus > http://github.com/mjijackson/citrus > > The README is below. Enjoy. > > +++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > ~* Citrus *~ > > Parsing Expressions for Ruby > > > Citrus is a compact and powerful parsing library for Ruby that combines the > elegance and expressiveness of the language with the simplicity and power > of > parsing expression grammars. > > Citrus grammars look very much like Treetop grammars but take a completely > different approach. Instead of generating parsers from your grammars, > Citrus > evaluates grammars and rules in memory as Ruby modules. In fact, you can > even > define your grammars as Ruby modules in the first place, entirely skipping > the > parsing/evaluation step. > > Terminals are represented as either strings or regular expressions. Support > for > sequences, choices, labels, repetition, and lookahead (both positive and > negative) are all included, as well as character classes and the > dot-matches- > anything symbol. > > To try it out, fire up an IRB session from the root of the project and run > one > of the examples. > > $ irb -Ilib > > require 'citrus' > => true > > Citrus.load 'examples/calc' > => [Calc] > > match = Calc.parse '1 + 5' > => # > match.value > => 6 > > Be sure to try requiring `citrus/debug' (instead of just `citrus') if you'd > like > some better visualization of the match results. > > The code base is very small and it's well-documented and tested, so it > should be > fairly easy to understand for anyone who is familiar with parsing > expressions. > > > ** Links ** > > > http://pdos.csail.mit.edu/~baford/packrat/ > http://en.wikipedia.org/wiki/Parsing_expression_grammar > http://treetop.rubyforge.org/index.html > > > ** Installation ** > > > Via RubyGems: > > $ sudo gem install citrus > > From a local copy: > > $ git clone git://github.com/mjijackson/citrus.git > $ cd citrus > $ rake package && sudo rake install > > > ** License ** > > > Copyright 2010 Michael Jackson > > Permission is hereby granted, free of charge, to any person obtaining a > copy > of this software and associated documentation files (the "Software"), to > deal > in the Software without restriction, including without limitation the > rights > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell > copies of the Software, and to permit persons to whom the Software is > furnished to do so, subject to the following conditions: > > The above copyright notice and this permission notice shall be included in > all copies or substantial portions of the Software. > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING > FROM, > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN > THE SOFTWARE. > > +++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > -- > Michael Jackson > http://mjijackson.com > @mjijackson > > --0016e646916a49fae6048680dbfa--