class Query rule target: expression | /* none */ { result = 0 } expression: TERM_WITHOUT_QUOTES { result = {:DEFAULT_COLUMN => val[0]} } | TERM_WITH_QUOTES { result = {:DEFAULT_COLUMN => val[0]} } | TERM_WITHOUT_QUOTES COLON TERM_WITHOUT_QUOTES { result = {val[0] => val[2]} } | TERM_WITHOUT_QUOTES COLON TERM_WITH_QUOTES { result = {val[0] => val[2]} } end ---- header require_relative 'lexer' ---- inner def parse(input) scan_str(input) end