diff --git a/lib/liquid/parser.rb b/lib/liquid/parser.rb index 645dfa3a..00faefdc 100644 --- a/lib/liquid/parser.rb +++ b/lib/liquid/parser.rb @@ -48,7 +48,7 @@ module Liquid def expression token = @tokens[@p] - case token[0] + expr = case token[0] when :id str = consume str << variable_lookups @@ -69,6 +69,21 @@ module Liquid else raise SyntaxError, "#{token} is not a valid expression" end + if look(:comparison) + operator = consume(:comparison) + left = expr + right = expression + + "#{left} #{operator} #{right}" + elsif look(:boolean_operator) + operator = consume(:boolean_operator) + left = expr + right = expression + + "#{left} #{operator} #{right}" + else + expr + end end def argument