module SQLiterate
grammar String include Identifier rule multi_string single_string t:( ' '* "\n" ' '* single_string )* <Node::MultiString> end rule single_string std_string_constant / ext_string_constant end rule std_string_constant "'" c:( std_character )* "'" <Node::StringConstant> end rule std_character "''" <Node::Character::Quote> / [^'] <Node::Character::Text> end rule ext_string_constant [eE] "'" c:( ext_character )* "'" <Node::StringConstant> end rule ext_character "''" <Node::Character::Quote> / "\\" c:( ext_string_escape ) <Node::Character::ExtEscape> / [^\\'] <Node::Character::Text> end rule ext_string_escape [bfnrt] <Node::Character::NotImplemented> / [0-7] 1..3 <Node::Character::NotImplemented> / 'x' [0-9A-F] 1..2 <Node::Character::NotImplemented> / [uU] ([0-9A-F] 8..8 / [0-9A-F] 4..4) <Node::Character::NotImplemented> / [^xuU] <Node::Character::Text> end end
end