module OracleSqlParser::Grammar
grammar Condition include OracleSqlParser::Grammar::Condition::Comparison include OracleSqlParser::Grammar::Condition::FloatingPoint include OracleSqlParser::Grammar::Condition::Multiset include OracleSqlParser::Grammar::Condition::PatternMatching include OracleSqlParser::Grammar::Condition::Null include OracleSqlParser::Grammar::Condition::Compound include OracleSqlParser::Grammar::Condition::Between include OracleSqlParser::Grammar::Condition::Exists include OracleSqlParser::Grammar::Condition::In include OracleSqlParser::Grammar::Condition::IsOfType # where rule where_clause where_keyword space? logical_condition { def ast OracleSqlParser::Ast::WhereClause[:condition => logical_condition.ast] end } end rule condition comparison_condition / floating_point_condition / model_condition / mutiset_condition / pattern_maching_condition / null_condition / xml_condition / compound_condition / between_condition / exists_condition / in_condition / is_of_type_condition { def ast super end } end rule logical_condition ( op:not_keyword space? right:condition / left:condition space? op:and_keyword space? right:(logical_condition / condition ) / left:condition space? op:or_keyword space? right:(logical_condition / condition) / cond:condition ) { def ast if respond_to? :op if respond_to? :left OracleSqlParser::Ast::LogicalCondition[ :left => left.ast, :op => op.ast, :right => right.ast] else OracleSqlParser::Ast::LogicalCondition[ :op => op.ast, :right => right.ast] end else cond.ast end end } end rule model_condition 'model_condition' end rule xml_condition 'xml_condition' end end
end