FilterLexer Gem Version Dependency Status Inline docs

This is a simple treetop implementation for a basic SQL-like filtering syntax.


Add this line to your application's Gemfile:

gem 'filter_lexer'

And then execute:


Or install it yourself as:

gem install filter_lexer


To parse a filter, simply do the following:

tree = FilterLexer::Parser.parse('foo == "BAR"')

If the parsing succeeds, a tree is returned. This tree can be output (for development purposes) using FilterLexer::Parser.output_tree.

If the parsing fails, a ParseException is raised containing the detials of the failure.

Simple complete example showing success and failure:

examples = [
    'foo == "BAR"',
    'foo == "BAR" &&',

examples.each do |example|
        tree = FilterLexer::Parser.parse(example)
        puts "Parsed #{example}"
    rescue FilterLexer::ParseException
        puts $!.message
        puts $!.context


After checking out the repo, run bin/setup to install dependencies. Then, run rspec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to


Bug reports and pull requests are welcome on GitHub at


The gem is available as open source under the terms of the MIT License.