
bc-expression
An extensible expression evaluator written in Ruby by Joe Holt. Part of Bandcamp. Take a gander at this blog post for more info.
``` /* Handles variable lookup via a lambda or block callback. Understands numeric, string and boolean constants. Unary operators + - ! Operators || && < <= == != >= > + - * / % Grouping with ( ) Raises an Expression::SyntaxError if there's a syntax error.
p = Expression::Parser.new
vars = {'a' => 1, 'b' => 2, 'c' => 3, 'd' => 'fred'} v = lambda {|name| vars[name]}
puts p.parse("a + b", v) => 3 puts p.parse("(c + a) / b", v) => 2 puts p.parse("-(c + a) / 2", v) => -2
puts p.parse("d + 'onia'", v) => "fredonia"
puts p.parse("a < b", v) => true puts p.parse("a < b && b < c", v) => true puts p.parse("d == 'fred'", v) => true puts p.parse("a == 1 || b == 2", v) => true puts p.parse("a || b", v) => 1 puts p.parse("a && b", v) => 2 puts p.parse("!(a != b)", v) => ask neal */ ```
Project Information
- License: GNU GPL v3
- svn-based source control