diff --git a/crates/squawk_lexer/src/lib.rs b/crates/squawk_lexer/src/lib.rs index a02538ec..2a1d68f5 100644 --- a/crates/squawk_lexer/src/lib.rs +++ b/crates/squawk_lexer/src/lib.rs @@ -488,7 +488,7 @@ impl Cursor<'_> { fn finish_base_prefixed_int(&mut self, base: Base, has_digits: bool) -> LiteralKind { let trailing_junk_start = self.pos_within_token(); - self.eat_while(is_ident_cont); + self.eat_identifier(); let has_trailing_junk = self.pos_within_token() > trailing_junk_start; LiteralKind::Int { base, @@ -733,6 +733,34 @@ $foo$hello$world$bar$ "#)) } + #[test] + fn numeric_base_prefix_does_not_swallow_dollar_tokens() { + assert_debug_snapshot!(lex("123$abc 0b101$2 0o12$abc 0x12$abc 0xFF$1 0x1$$foo$$ 123$$foo$$"), @r#" + [ + "123" @ Literal { kind: Int { base: Decimal, empty_int: false, trailing_junk_start: 3 } }, + "$abc" @ PositionalParam { trailing_junk_start: 1 }, + " " @ Whitespace, + "0b101" @ Literal { kind: Int { base: Binary, empty_int: false, trailing_junk_start: 5 } }, + "$2" @ PositionalParam { trailing_junk_start: 2 }, + " " @ Whitespace, + "0o12" @ Literal { kind: Int { base: Octal, empty_int: false, trailing_junk_start: 4 } }, + "$abc" @ PositionalParam { trailing_junk_start: 1 }, + " " @ Whitespace, + "0x12" @ Literal { kind: Int { base: Hexadecimal, empty_int: false, trailing_junk_start: 4 } }, + "$abc" @ PositionalParam { trailing_junk_start: 1 }, + " " @ Whitespace, + "0xFF" @ Literal { kind: Int { base: Hexadecimal, empty_int: false, trailing_junk_start: 4 } }, + "$1" @ PositionalParam { trailing_junk_start: 2 }, + " " @ Whitespace, + "0x1" @ Literal { kind: Int { base: Hexadecimal, empty_int: false, trailing_junk_start: 3 } }, + "$$foo$$" @ Literal { kind: DollarQuotedString { terminated: true } }, + " " @ Whitespace, + "123" @ Literal { kind: Int { base: Decimal, empty_int: false, trailing_junk_start: 3 } }, + "$$foo$$" @ Literal { kind: DollarQuotedString { terminated: true } }, + ] + "#); + } + #[test] fn numeric_with_seperators() { assert_debug_snapshot!(lex(r#" diff --git a/crates/squawk_syntax/src/snapshots/squawk_syntax__test__validate_string_continuation_validation.snap b/crates/squawk_syntax/src/snapshots/squawk_syntax__test__validate_string_continuation_validation.snap index 3e77f845..a0cf4eeb 100644 --- a/crates/squawk_syntax/src/snapshots/squawk_syntax__test__validate_string_continuation_validation.snap +++ b/crates/squawk_syntax/src/snapshots/squawk_syntax__test__validate_string_continuation_validation.snap @@ -2,646 +2,626 @@ source: crates/squawk_syntax/src/test.rs input_file: crates/squawk_syntax/test_data/validation/validate_string_continuation.sql --- -SOURCE_FILE@0..1287 - COMMENT@0..28 "-- ok strings with ne ..." - WHITESPACE@28..29 "\n" - SELECT@29..49 - SELECT_CLAUSE@29..48 - SELECT_KW@29..35 "select" - WHITESPACE@35..36 " " - TARGET_LIST@36..48 - TARGET@36..48 - LITERAL@36..48 - STRING@36..41 "'foo'" - WHITESPACE@41..43 " \n" - STRING@43..48 "'bar'" - SEMICOLON@48..49 ";" - WHITESPACE@49..50 "\n" - SELECT@50..70 - SELECT_CLAUSE@50..69 - SELECT_KW@50..56 "select" - WHITESPACE@56..57 " " - TARGET_LIST@57..69 - TARGET@57..69 - LITERAL@57..69 - ESC_STRING@57..63 "e'foo'" - WHITESPACE@63..64 "\n" - STRING@64..69 "'bar'" - SEMICOLON@69..70 ";" - WHITESPACE@70..71 "\n" - SELECT@71..92 - SELECT_CLAUSE@71..91 - SELECT_KW@71..77 "select" - WHITESPACE@77..78 " " - TARGET_LIST@78..91 - TARGET@78..91 - LITERAL@78..91 - UNICODE_ESC_STRING@78..85 "u&'foo'" - WHITESPACE@85..86 "\n" - STRING@86..91 "'bar'" - SEMICOLON@91..92 ";" - WHITESPACE@92..93 "\n" - SELECT@93..111 - SELECT_CLAUSE@93..110 - SELECT_KW@93..99 "select" - WHITESPACE@99..100 " " - TARGET_LIST@100..110 - TARGET@100..110 - LITERAL@100..110 - BIT_STRING@100..105 "b'01'" - WHITESPACE@105..106 "\n" - STRING@106..110 "'10'" - SEMICOLON@110..111 ";" - WHITESPACE@111..112 "\n" - SELECT@112..130 - SELECT_CLAUSE@112..129 - SELECT_KW@112..118 "select" - WHITESPACE@118..119 " " - TARGET_LIST@119..129 - TARGET@119..129 - LITERAL@119..129 - BYTE_STRING@119..124 "x'1F'" - WHITESPACE@124..125 "\n" - STRING@125..129 "'10'" - SEMICOLON@129..130 ";" - WHITESPACE@130..132 "\n\n" - COMMENT@132..147 "-- error string" - WHITESPACE@147..148 "\n" - SELECT@148..167 - SELECT_CLAUSE@148..166 - SELECT_KW@148..154 "select" - WHITESPACE@154..155 " " - TARGET_LIST@155..166 - TARGET@155..166 - LITERAL@155..166 - STRING@155..160 "'foo'" - WHITESPACE@160..161 " " - STRING@161..166 "'bar'" - SEMICOLON@166..167 ";" - WHITESPACE@167..168 "\n" - SELECT@168..201 - SELECT_CLAUSE@168..200 - SELECT_KW@168..174 "select" - WHITESPACE@174..175 " " - TARGET_LIST@175..200 - TARGET@175..200 - LITERAL@175..200 - STRING@175..180 "'foo'" - WHITESPACE@180..181 " " - COMMENT@181..194 "/* comment */" - WHITESPACE@194..195 " " - STRING@195..200 "'bar'" - SEMICOLON@200..201 ";" - WHITESPACE@201..202 "\n" - SELECT@202..268 - SELECT_CLAUSE@202..267 - SELECT_KW@202..208 "select" - WHITESPACE@208..209 " " - TARGET_LIST@209..267 - TARGET@209..267 - LITERAL@209..267 - STRING@209..216 "'hello'" - WHITESPACE@216..217 " " - COMMENT@217..230 "/* comment */" - WHITESPACE@230..231 " " - STRING@231..236 "'bar'" - WHITESPACE@236..237 " " - COMMENT@237..258 "/* another comment */" - WHITESPACE@258..259 " " - STRING@259..267 "' world'" +SOURCE_FILE@0..1305 + COMMENT@0..46 "-- ok strings with ne ..." + WHITESPACE@46..47 "\n" + SELECT@47..67 + SELECT_CLAUSE@47..66 + SELECT_KW@47..53 "select" + WHITESPACE@53..54 " " + TARGET_LIST@54..66 + TARGET@54..66 + LITERAL@54..66 + STRING@54..59 "'foo'" + WHITESPACE@59..61 " \n" + STRING@61..66 "'bar'" + SEMICOLON@66..67 ";" + WHITESPACE@67..68 "\n" + SELECT@68..102 + SELECT_CLAUSE@68..101 + SELECT_KW@68..74 "select" + WHITESPACE@74..75 " " + TARGET_LIST@75..101 + TARGET@75..101 + LITERAL@75..101 + STRING@75..82 "'hello'" + WHITESPACE@82..83 " " + COMMENT@83..93 "-- comment" + WHITESPACE@93..94 "\n" + STRING@94..101 "'world'" + SEMICOLON@101..102 ";" + WHITESPACE@102..103 "\n" + SELECT@103..123 + SELECT_CLAUSE@103..122 + SELECT_KW@103..109 "select" + WHITESPACE@109..110 " " + TARGET_LIST@110..122 + TARGET@110..122 + LITERAL@110..122 + ESC_STRING@110..116 "e'foo'" + WHITESPACE@116..117 "\n" + STRING@117..122 "'bar'" + SEMICOLON@122..123 ";" + WHITESPACE@123..124 "\n" + SELECT@124..159 + SELECT_CLAUSE@124..158 + SELECT_KW@124..130 "select" + WHITESPACE@130..131 " " + TARGET_LIST@131..158 + TARGET@131..158 + LITERAL@131..158 + ESC_STRING@131..139 "e'hello'" + WHITESPACE@139..140 " " + COMMENT@140..150 "-- comment" + WHITESPACE@150..151 "\n" + STRING@151..158 "'world'" + SEMICOLON@158..159 ";" + WHITESPACE@159..160 "\n" + SELECT@160..181 + SELECT_CLAUSE@160..180 + SELECT_KW@160..166 "select" + WHITESPACE@166..167 " " + TARGET_LIST@167..180 + TARGET@167..180 + LITERAL@167..180 + UNICODE_ESC_STRING@167..174 "u&'foo'" + WHITESPACE@174..175 "\n" + STRING@175..180 "'bar'" + SEMICOLON@180..181 ";" + WHITESPACE@181..182 "\n" + SELECT@182..218 + SELECT_CLAUSE@182..217 + SELECT_KW@182..188 "select" + WHITESPACE@188..189 " " + TARGET_LIST@189..217 + TARGET@189..217 + LITERAL@189..217 + UNICODE_ESC_STRING@189..198 "u&'hello'" + WHITESPACE@198..199 " " + COMMENT@199..209 "-- comment" + WHITESPACE@209..210 "\n" + STRING@210..217 "'world'" + SEMICOLON@217..218 ";" + WHITESPACE@218..219 "\n" + SELECT@219..237 + SELECT_CLAUSE@219..236 + SELECT_KW@219..225 "select" + WHITESPACE@225..226 " " + TARGET_LIST@226..236 + TARGET@226..236 + LITERAL@226..236 + BIT_STRING@226..231 "b'01'" + WHITESPACE@231..232 "\n" + STRING@232..236 "'10'" + SEMICOLON@236..237 ";" + WHITESPACE@237..238 "\n" + SELECT@238..268 + SELECT_CLAUSE@238..267 + SELECT_KW@238..244 "select" + WHITESPACE@244..245 " " + TARGET_LIST@245..267 + TARGET@245..267 + LITERAL@245..267 + BIT_STRING@245..251 "b'111'" + WHITESPACE@251..252 " " + COMMENT@252..262 "-- comment" + WHITESPACE@262..263 "\n" + STRING@263..267 "'10'" SEMICOLON@267..268 ";" WHITESPACE@268..269 "\n" - SELECT@269..303 - SELECT_CLAUSE@269..302 + SELECT@269..287 + SELECT_CLAUSE@269..286 SELECT_KW@269..275 "select" WHITESPACE@275..276 " " - TARGET_LIST@276..302 - TARGET@276..302 - LITERAL@276..302 - STRING@276..283 "'hello'" - WHITESPACE@283..284 " " - COMMENT@284..294 "-- comment" - WHITESPACE@294..295 "\n" - STRING@295..302 "'world'" - SEMICOLON@302..303 ";" - WHITESPACE@303..304 "\n" - SELECT@304..330 - SELECT_CLAUSE@304..329 - SELECT_KW@304..310 "select" - WHITESPACE@310..311 " " - TARGET_LIST@311..329 - TARGET@311..329 - LITERAL@311..329 - STRING@311..316 "'foo'" - WHITESPACE@316..317 " " - STRING@317..322 "'bar'" - WHITESPACE@322..323 " " - STRING@323..329 "'buzz'" - SEMICOLON@329..330 ";" - WHITESPACE@330..332 "\n\n" - COMMENT@332..354 "-- error escape string" - WHITESPACE@354..355 "\n" - SELECT@355..375 - SELECT_CLAUSE@355..374 - SELECT_KW@355..361 "select" - WHITESPACE@361..362 " " - TARGET_LIST@362..374 - TARGET@362..374 - LITERAL@362..374 - ESC_STRING@362..368 "e'foo'" + TARGET_LIST@276..286 + TARGET@276..286 + LITERAL@276..286 + BYTE_STRING@276..281 "x'1F'" + WHITESPACE@281..282 "\n" + STRING@282..286 "'10'" + SEMICOLON@286..287 ";" + WHITESPACE@287..288 "\n" + SELECT@288..318 + SELECT_CLAUSE@288..317 + SELECT_KW@288..294 "select" + WHITESPACE@294..295 " " + TARGET_LIST@295..317 + TARGET@295..317 + LITERAL@295..317 + BYTE_STRING@295..301 "x'1F1'" + WHITESPACE@301..302 " " + COMMENT@302..312 "-- comment" + WHITESPACE@312..313 "\n" + STRING@313..317 "'10'" + SEMICOLON@317..318 ";" + WHITESPACE@318..320 "\n\n" + COMMENT@320..335 "-- error string" + WHITESPACE@335..336 "\n" + SELECT@336..355 + SELECT_CLAUSE@336..354 + SELECT_KW@336..342 "select" + WHITESPACE@342..343 " " + TARGET_LIST@343..354 + TARGET@343..354 + LITERAL@343..354 + STRING@343..348 "'foo'" + WHITESPACE@348..349 " " + STRING@349..354 "'bar'" + SEMICOLON@354..355 ";" + WHITESPACE@355..356 "\n" + SELECT@356..389 + SELECT_CLAUSE@356..388 + SELECT_KW@356..362 "select" + WHITESPACE@362..363 " " + TARGET_LIST@363..388 + TARGET@363..388 + LITERAL@363..388 + STRING@363..368 "'foo'" WHITESPACE@368..369 " " - STRING@369..374 "'bar'" - SEMICOLON@374..375 ";" - WHITESPACE@375..376 "\n" - SELECT@376..410 - SELECT_CLAUSE@376..409 - SELECT_KW@376..382 "select" - WHITESPACE@382..383 " " - TARGET_LIST@383..409 - TARGET@383..409 - LITERAL@383..409 - ESC_STRING@383..389 "e'foo'" - WHITESPACE@389..390 " " - COMMENT@390..403 "/* comment */" - WHITESPACE@403..404 " " - STRING@404..409 "'bar'" - SEMICOLON@409..410 ";" - WHITESPACE@410..411 "\n" - SELECT@411..478 - SELECT_CLAUSE@411..477 - SELECT_KW@411..417 "select" - WHITESPACE@417..418 " " - TARGET_LIST@418..477 - TARGET@418..477 - LITERAL@418..477 - ESC_STRING@418..426 "e'hello'" - WHITESPACE@426..427 " " - COMMENT@427..440 "/* comment */" - WHITESPACE@440..441 " " - STRING@441..446 "'bar'" + COMMENT@369..382 "/* comment */" + WHITESPACE@382..383 " " + STRING@383..388 "'bar'" + SEMICOLON@388..389 ";" + WHITESPACE@389..390 "\n" + SELECT@390..456 + SELECT_CLAUSE@390..455 + SELECT_KW@390..396 "select" + WHITESPACE@396..397 " " + TARGET_LIST@397..455 + TARGET@397..455 + LITERAL@397..455 + STRING@397..404 "'hello'" + WHITESPACE@404..405 " " + COMMENT@405..418 "/* comment */" + WHITESPACE@418..419 " " + STRING@419..424 "'bar'" + WHITESPACE@424..425 " " + COMMENT@425..446 "/* another comment */" WHITESPACE@446..447 " " - COMMENT@447..468 "/* another comment */" - WHITESPACE@468..469 " " - STRING@469..477 "' world'" - SEMICOLON@477..478 ";" - WHITESPACE@478..479 "\n" - SELECT@479..514 - SELECT_CLAUSE@479..513 - SELECT_KW@479..485 "select" - WHITESPACE@485..486 " " - TARGET_LIST@486..513 - TARGET@486..513 - LITERAL@486..513 - ESC_STRING@486..494 "e'hello'" - WHITESPACE@494..495 " " - COMMENT@495..505 "-- comment" - WHITESPACE@505..506 "\n" - STRING@506..513 "'world'" - SEMICOLON@513..514 ";" - WHITESPACE@514..515 "\n" - SELECT@515..542 - SELECT_CLAUSE@515..541 - SELECT_KW@515..521 "select" - WHITESPACE@521..522 " " - TARGET_LIST@522..541 - TARGET@522..541 - LITERAL@522..541 - ESC_STRING@522..528 "e'foo'" - WHITESPACE@528..529 " " - STRING@529..534 "'bar'" - WHITESPACE@534..535 " " - STRING@535..541 "'buzz'" - SEMICOLON@541..542 ";" - WHITESPACE@542..543 "\n" - SELECT@543..564 - SELECT_CLAUSE@543..563 - SELECT_KW@543..549 "select" - WHITESPACE@549..550 " " - TARGET_LIST@550..563 - TARGET@550..563 - LITERAL@550..563 - ESC_STRING@550..556 "e'foo'" - WHITESPACE@556..557 "\n" - STRING@557..563 "'\\u00'" - SEMICOLON@563..564 ";" - WHITESPACE@564..566 "\n\n" - COMMENT@566..596 "-- error unicode esca ..." - WHITESPACE@596..597 "\n" - SELECT@597..618 - SELECT_CLAUSE@597..617 - SELECT_KW@597..603 "select" - WHITESPACE@603..604 " " - TARGET_LIST@604..617 - TARGET@604..617 - LITERAL@604..617 - UNICODE_ESC_STRING@604..611 "u&'foo'" - WHITESPACE@611..612 " " - STRING@612..617 "'bar'" - SEMICOLON@617..618 ";" - WHITESPACE@618..619 "\n" - SELECT@619..654 - SELECT_CLAUSE@619..653 - SELECT_KW@619..625 "select" - WHITESPACE@625..626 " " - TARGET_LIST@626..653 - TARGET@626..653 - LITERAL@626..653 - UNICODE_ESC_STRING@626..633 "u&'foo'" - WHITESPACE@633..634 " " - COMMENT@634..647 "/* comment */" - WHITESPACE@647..648 " " - STRING@648..653 "'bar'" - SEMICOLON@653..654 ";" - WHITESPACE@654..655 "\n" - SELECT@655..723 - SELECT_CLAUSE@655..722 - SELECT_KW@655..661 "select" - WHITESPACE@661..662 " " - TARGET_LIST@662..722 - TARGET@662..722 - LITERAL@662..722 - UNICODE_ESC_STRING@662..671 "u&'hello'" - WHITESPACE@671..672 " " - COMMENT@672..685 "/* comment */" - WHITESPACE@685..686 " " - STRING@686..691 "'bar'" - WHITESPACE@691..692 " " - COMMENT@692..713 "/* another comment */" - WHITESPACE@713..714 " " - STRING@714..722 "' world'" - SEMICOLON@722..723 ";" - WHITESPACE@723..724 "\n" - SELECT@724..760 - SELECT_CLAUSE@724..759 - SELECT_KW@724..730 "select" - WHITESPACE@730..731 " " - TARGET_LIST@731..759 - TARGET@731..759 - LITERAL@731..759 - UNICODE_ESC_STRING@731..740 "u&'hello'" - WHITESPACE@740..741 " " - COMMENT@741..751 "-- comment" - WHITESPACE@751..752 "\n" - STRING@752..759 "'world'" - SEMICOLON@759..760 ";" - WHITESPACE@760..761 "\n" - SELECT@761..789 - SELECT_CLAUSE@761..788 - SELECT_KW@761..767 "select" - WHITESPACE@767..768 " " - TARGET_LIST@768..788 - TARGET@768..788 - LITERAL@768..788 - UNICODE_ESC_STRING@768..775 "u&'foo'" - WHITESPACE@775..776 " " - STRING@776..781 "'bar'" - WHITESPACE@781..782 " " - STRING@782..788 "'buzz'" - SEMICOLON@788..789 ";" - WHITESPACE@789..790 "\n" - SELECT@790..812 - SELECT_CLAUSE@790..811 - SELECT_KW@790..796 "select" - WHITESPACE@796..797 " " - TARGET_LIST@797..811 - TARGET@797..811 - LITERAL@797..811 - UNICODE_ESC_STRING@797..804 "u&'foo'" - WHITESPACE@804..805 "\n" - STRING@805..811 "'\\010'" - SEMICOLON@811..812 ";" - WHITESPACE@812..814 "\n\n" - COMMENT@814..833 "-- error bit string" - WHITESPACE@833..834 "\n" - SELECT@834..852 - SELECT_CLAUSE@834..851 - SELECT_KW@834..840 "select" - WHITESPACE@840..841 " " - TARGET_LIST@841..851 - TARGET@841..851 - LITERAL@841..851 - BIT_STRING@841..846 "b'01'" - WHITESPACE@846..847 " " - STRING@847..851 "'10'" - SEMICOLON@851..852 ";" - WHITESPACE@852..853 "\n" - SELECT@853..885 - SELECT_CLAUSE@853..884 - SELECT_KW@853..859 "select" - WHITESPACE@859..860 " " - TARGET_LIST@860..884 - TARGET@860..884 - LITERAL@860..884 - BIT_STRING@860..865 "b'01'" - WHITESPACE@865..866 " " - COMMENT@866..879 "/* comment */" - WHITESPACE@879..880 " " - STRING@880..884 "'11'" - SEMICOLON@884..885 ";" - WHITESPACE@885..886 "\n" - SELECT@886..945 - SELECT_CLAUSE@886..944 - SELECT_KW@886..892 "select" - WHITESPACE@892..893 " " - TARGET_LIST@893..944 - TARGET@893..944 - LITERAL@893..944 - BIT_STRING@893..898 "b'01'" - WHITESPACE@898..899 " " - COMMENT@899..912 "/* comment */" - WHITESPACE@912..913 " " - STRING@913..917 "'11'" - WHITESPACE@917..918 " " - COMMENT@918..939 "/* another comment */" - WHITESPACE@939..940 " " - STRING@940..944 "'10'" - SEMICOLON@944..945 ";" - WHITESPACE@945..946 "\n" - SELECT@946..976 - SELECT_CLAUSE@946..975 - SELECT_KW@946..952 "select" - WHITESPACE@952..953 " " - TARGET_LIST@953..975 - TARGET@953..975 - LITERAL@953..975 - BIT_STRING@953..959 "b'111'" + STRING@447..455 "' world'" + SEMICOLON@455..456 ";" + WHITESPACE@456..457 "\n" + SELECT@457..483 + SELECT_CLAUSE@457..482 + SELECT_KW@457..463 "select" + WHITESPACE@463..464 " " + TARGET_LIST@464..482 + TARGET@464..482 + LITERAL@464..482 + STRING@464..469 "'foo'" + WHITESPACE@469..470 " " + STRING@470..475 "'bar'" + WHITESPACE@475..476 " " + STRING@476..482 "'buzz'" + SEMICOLON@482..483 ";" + WHITESPACE@483..485 "\n\n" + COMMENT@485..507 "-- error escape string" + WHITESPACE@507..508 "\n" + SELECT@508..528 + SELECT_CLAUSE@508..527 + SELECT_KW@508..514 "select" + WHITESPACE@514..515 " " + TARGET_LIST@515..527 + TARGET@515..527 + LITERAL@515..527 + ESC_STRING@515..521 "e'foo'" + WHITESPACE@521..522 " " + STRING@522..527 "'bar'" + SEMICOLON@527..528 ";" + WHITESPACE@528..529 "\n" + SELECT@529..563 + SELECT_CLAUSE@529..562 + SELECT_KW@529..535 "select" + WHITESPACE@535..536 " " + TARGET_LIST@536..562 + TARGET@536..562 + LITERAL@536..562 + ESC_STRING@536..542 "e'foo'" + WHITESPACE@542..543 " " + COMMENT@543..556 "/* comment */" + WHITESPACE@556..557 " " + STRING@557..562 "'bar'" + SEMICOLON@562..563 ";" + WHITESPACE@563..564 "\n" + SELECT@564..631 + SELECT_CLAUSE@564..630 + SELECT_KW@564..570 "select" + WHITESPACE@570..571 " " + TARGET_LIST@571..630 + TARGET@571..630 + LITERAL@571..630 + ESC_STRING@571..579 "e'hello'" + WHITESPACE@579..580 " " + COMMENT@580..593 "/* comment */" + WHITESPACE@593..594 " " + STRING@594..599 "'bar'" + WHITESPACE@599..600 " " + COMMENT@600..621 "/* another comment */" + WHITESPACE@621..622 " " + STRING@622..630 "' world'" + SEMICOLON@630..631 ";" + WHITESPACE@631..632 "\n" + SELECT@632..659 + SELECT_CLAUSE@632..658 + SELECT_KW@632..638 "select" + WHITESPACE@638..639 " " + TARGET_LIST@639..658 + TARGET@639..658 + LITERAL@639..658 + ESC_STRING@639..645 "e'foo'" + WHITESPACE@645..646 " " + STRING@646..651 "'bar'" + WHITESPACE@651..652 " " + STRING@652..658 "'buzz'" + SEMICOLON@658..659 ";" + WHITESPACE@659..660 "\n" + SELECT@660..681 + SELECT_CLAUSE@660..680 + SELECT_KW@660..666 "select" + WHITESPACE@666..667 " " + TARGET_LIST@667..680 + TARGET@667..680 + LITERAL@667..680 + ESC_STRING@667..673 "e'foo'" + WHITESPACE@673..674 "\n" + STRING@674..680 "'\\u00'" + SEMICOLON@680..681 ";" + WHITESPACE@681..683 "\n\n" + COMMENT@683..713 "-- error unicode esca ..." + WHITESPACE@713..714 "\n" + SELECT@714..735 + SELECT_CLAUSE@714..734 + SELECT_KW@714..720 "select" + WHITESPACE@720..721 " " + TARGET_LIST@721..734 + TARGET@721..734 + LITERAL@721..734 + UNICODE_ESC_STRING@721..728 "u&'foo'" + WHITESPACE@728..729 " " + STRING@729..734 "'bar'" + SEMICOLON@734..735 ";" + WHITESPACE@735..736 "\n" + SELECT@736..771 + SELECT_CLAUSE@736..770 + SELECT_KW@736..742 "select" + WHITESPACE@742..743 " " + TARGET_LIST@743..770 + TARGET@743..770 + LITERAL@743..770 + UNICODE_ESC_STRING@743..750 "u&'foo'" + WHITESPACE@750..751 " " + COMMENT@751..764 "/* comment */" + WHITESPACE@764..765 " " + STRING@765..770 "'bar'" + SEMICOLON@770..771 ";" + WHITESPACE@771..772 "\n" + SELECT@772..840 + SELECT_CLAUSE@772..839 + SELECT_KW@772..778 "select" + WHITESPACE@778..779 " " + TARGET_LIST@779..839 + TARGET@779..839 + LITERAL@779..839 + UNICODE_ESC_STRING@779..788 "u&'hello'" + WHITESPACE@788..789 " " + COMMENT@789..802 "/* comment */" + WHITESPACE@802..803 " " + STRING@803..808 "'bar'" + WHITESPACE@808..809 " " + COMMENT@809..830 "/* another comment */" + WHITESPACE@830..831 " " + STRING@831..839 "' world'" + SEMICOLON@839..840 ";" + WHITESPACE@840..841 "\n" + SELECT@841..869 + SELECT_CLAUSE@841..868 + SELECT_KW@841..847 "select" + WHITESPACE@847..848 " " + TARGET_LIST@848..868 + TARGET@848..868 + LITERAL@848..868 + UNICODE_ESC_STRING@848..855 "u&'foo'" + WHITESPACE@855..856 " " + STRING@856..861 "'bar'" + WHITESPACE@861..862 " " + STRING@862..868 "'buzz'" + SEMICOLON@868..869 ";" + WHITESPACE@869..870 "\n" + SELECT@870..892 + SELECT_CLAUSE@870..891 + SELECT_KW@870..876 "select" + WHITESPACE@876..877 " " + TARGET_LIST@877..891 + TARGET@877..891 + LITERAL@877..891 + UNICODE_ESC_STRING@877..884 "u&'foo'" + WHITESPACE@884..885 "\n" + STRING@885..891 "'\\010'" + SEMICOLON@891..892 ";" + WHITESPACE@892..894 "\n\n" + COMMENT@894..913 "-- error bit string" + WHITESPACE@913..914 "\n" + SELECT@914..932 + SELECT_CLAUSE@914..931 + SELECT_KW@914..920 "select" + WHITESPACE@920..921 " " + TARGET_LIST@921..931 + TARGET@921..931 + LITERAL@921..931 + BIT_STRING@921..926 "b'01'" + WHITESPACE@926..927 " " + STRING@927..931 "'10'" + SEMICOLON@931..932 ";" + WHITESPACE@932..933 "\n" + SELECT@933..965 + SELECT_CLAUSE@933..964 + SELECT_KW@933..939 "select" + WHITESPACE@939..940 " " + TARGET_LIST@940..964 + TARGET@940..964 + LITERAL@940..964 + BIT_STRING@940..945 "b'01'" + WHITESPACE@945..946 " " + COMMENT@946..959 "/* comment */" WHITESPACE@959..960 " " - COMMENT@960..970 "-- comment" - WHITESPACE@970..971 "\n" - STRING@971..975 "'10'" - SEMICOLON@975..976 ";" - WHITESPACE@976..977 "\n" - SELECT@977..1000 - SELECT_CLAUSE@977..999 - SELECT_KW@977..983 "select" - WHITESPACE@983..984 " " - TARGET_LIST@984..999 - TARGET@984..999 - LITERAL@984..999 - BIT_STRING@984..989 "b'10'" - WHITESPACE@989..990 " " - STRING@990..994 "'10'" - WHITESPACE@994..995 " " - STRING@995..999 "'11'" - SEMICOLON@999..1000 ";" - WHITESPACE@1000..1001 "\n" - SELECT@1001..1019 - SELECT_CLAUSE@1001..1018 - SELECT_KW@1001..1007 "select" - WHITESPACE@1007..1008 " " - TARGET_LIST@1008..1018 - TARGET@1008..1018 - LITERAL@1008..1018 - BIT_STRING@1008..1013 "b'10'" - WHITESPACE@1013..1014 "\n" - STRING@1014..1018 "'20'" - SEMICOLON@1018..1019 ";" - WHITESPACE@1019..1021 "\n\n" - COMMENT@1021..1041 "-- error byte string" - WHITESPACE@1041..1042 "\n" - SELECT@1042..1060 - SELECT_CLAUSE@1042..1059 - SELECT_KW@1042..1048 "select" - WHITESPACE@1048..1049 " " - TARGET_LIST@1049..1059 - TARGET@1049..1059 - LITERAL@1049..1059 - BYTE_STRING@1049..1054 "x'0F'" - WHITESPACE@1054..1055 " " - STRING@1055..1059 "'10'" - SEMICOLON@1059..1060 ";" - WHITESPACE@1060..1061 "\n" - SELECT@1061..1093 - SELECT_CLAUSE@1061..1092 - SELECT_KW@1061..1067 "select" - WHITESPACE@1067..1068 " " - TARGET_LIST@1068..1092 - TARGET@1068..1092 - LITERAL@1068..1092 - BYTE_STRING@1068..1073 "x'01'" - WHITESPACE@1073..1074 " " - COMMENT@1074..1087 "/* comment */" - WHITESPACE@1087..1088 " " - STRING@1088..1092 "'1F'" - SEMICOLON@1092..1093 ";" - WHITESPACE@1093..1094 "\n" - SELECT@1094..1153 - SELECT_CLAUSE@1094..1152 - SELECT_KW@1094..1100 "select" - WHITESPACE@1100..1101 " " - TARGET_LIST@1101..1152 - TARGET@1101..1152 - LITERAL@1101..1152 - BYTE_STRING@1101..1106 "x'01'" - WHITESPACE@1106..1107 " " - COMMENT@1107..1120 "/* comment */" - WHITESPACE@1120..1121 " " - STRING@1121..1125 "'1F'" - WHITESPACE@1125..1126 " " - COMMENT@1126..1147 "/* another comment */" - WHITESPACE@1147..1148 " " - STRING@1148..1152 "'10'" - SEMICOLON@1152..1153 ";" - WHITESPACE@1153..1154 "\n" - SELECT@1154..1184 - SELECT_CLAUSE@1154..1183 - SELECT_KW@1154..1160 "select" - WHITESPACE@1160..1161 " " - TARGET_LIST@1161..1183 - TARGET@1161..1183 - LITERAL@1161..1183 - BYTE_STRING@1161..1167 "x'1F1'" - WHITESPACE@1167..1168 " " - COMMENT@1168..1178 "-- comment" - WHITESPACE@1178..1179 "\n" - STRING@1179..1183 "'10'" - SEMICOLON@1183..1184 ";" - WHITESPACE@1184..1185 "\n" - SELECT@1185..1208 - SELECT_CLAUSE@1185..1207 - SELECT_KW@1185..1191 "select" - WHITESPACE@1191..1192 " " - TARGET_LIST@1192..1207 - TARGET@1192..1207 - LITERAL@1192..1207 - BYTE_STRING@1192..1197 "x'1F'" - WHITESPACE@1197..1198 " " - STRING@1198..1202 "'F0'" - WHITESPACE@1202..1203 " " - STRING@1203..1207 "'11'" - SEMICOLON@1207..1208 ";" - WHITESPACE@1208..1209 "\n" - SELECT@1209..1227 - SELECT_CLAUSE@1209..1226 - SELECT_KW@1209..1215 "select" - WHITESPACE@1215..1216 " " - TARGET_LIST@1216..1226 - TARGET@1216..1226 - LITERAL@1216..1226 - BYTE_STRING@1216..1221 "x'1F'" - WHITESPACE@1221..1222 "\n" - STRING@1222..1226 "'G0'" - SEMICOLON@1226..1227 ";" - WHITESPACE@1227..1229 "\n\n" - COMMENT@1229..1270 "-- ok CR-only newline ..." - WHITESPACE@1270..1271 "\n" - SELECT@1271..1286 - SELECT_CLAUSE@1271..1285 - SELECT_KW@1271..1277 "select" - WHITESPACE@1277..1278 " " - TARGET_LIST@1278..1285 - TARGET@1278..1285 - LITERAL@1278..1285 - STRING@1278..1281 "'a'" - WHITESPACE@1281..1282 "\r" - STRING@1282..1285 "'b'" - SEMICOLON@1285..1286 ";" - WHITESPACE@1286..1287 "\n" + STRING@960..964 "'11'" + SEMICOLON@964..965 ";" + WHITESPACE@965..966 "\n" + SELECT@966..1025 + SELECT_CLAUSE@966..1024 + SELECT_KW@966..972 "select" + WHITESPACE@972..973 " " + TARGET_LIST@973..1024 + TARGET@973..1024 + LITERAL@973..1024 + BIT_STRING@973..978 "b'01'" + WHITESPACE@978..979 " " + COMMENT@979..992 "/* comment */" + WHITESPACE@992..993 " " + STRING@993..997 "'11'" + WHITESPACE@997..998 " " + COMMENT@998..1019 "/* another comment */" + WHITESPACE@1019..1020 " " + STRING@1020..1024 "'10'" + SEMICOLON@1024..1025 ";" + WHITESPACE@1025..1026 "\n" + SELECT@1026..1049 + SELECT_CLAUSE@1026..1048 + SELECT_KW@1026..1032 "select" + WHITESPACE@1032..1033 " " + TARGET_LIST@1033..1048 + TARGET@1033..1048 + LITERAL@1033..1048 + BIT_STRING@1033..1038 "b'10'" + WHITESPACE@1038..1039 " " + STRING@1039..1043 "'10'" + WHITESPACE@1043..1044 " " + STRING@1044..1048 "'11'" + SEMICOLON@1048..1049 ";" + WHITESPACE@1049..1050 "\n" + SELECT@1050..1068 + SELECT_CLAUSE@1050..1067 + SELECT_KW@1050..1056 "select" + WHITESPACE@1056..1057 " " + TARGET_LIST@1057..1067 + TARGET@1057..1067 + LITERAL@1057..1067 + BIT_STRING@1057..1062 "b'10'" + WHITESPACE@1062..1063 "\n" + STRING@1063..1067 "'20'" + SEMICOLON@1067..1068 ";" + WHITESPACE@1068..1070 "\n\n" + COMMENT@1070..1090 "-- error byte string" + WHITESPACE@1090..1091 "\n" + SELECT@1091..1109 + SELECT_CLAUSE@1091..1108 + SELECT_KW@1091..1097 "select" + WHITESPACE@1097..1098 " " + TARGET_LIST@1098..1108 + TARGET@1098..1108 + LITERAL@1098..1108 + BYTE_STRING@1098..1103 "x'0F'" + WHITESPACE@1103..1104 " " + STRING@1104..1108 "'10'" + SEMICOLON@1108..1109 ";" + WHITESPACE@1109..1110 "\n" + SELECT@1110..1142 + SELECT_CLAUSE@1110..1141 + SELECT_KW@1110..1116 "select" + WHITESPACE@1116..1117 " " + TARGET_LIST@1117..1141 + TARGET@1117..1141 + LITERAL@1117..1141 + BYTE_STRING@1117..1122 "x'01'" + WHITESPACE@1122..1123 " " + COMMENT@1123..1136 "/* comment */" + WHITESPACE@1136..1137 " " + STRING@1137..1141 "'1F'" + SEMICOLON@1141..1142 ";" + WHITESPACE@1142..1143 "\n" + SELECT@1143..1202 + SELECT_CLAUSE@1143..1201 + SELECT_KW@1143..1149 "select" + WHITESPACE@1149..1150 " " + TARGET_LIST@1150..1201 + TARGET@1150..1201 + LITERAL@1150..1201 + BYTE_STRING@1150..1155 "x'01'" + WHITESPACE@1155..1156 " " + COMMENT@1156..1169 "/* comment */" + WHITESPACE@1169..1170 " " + STRING@1170..1174 "'1F'" + WHITESPACE@1174..1175 " " + COMMENT@1175..1196 "/* another comment */" + WHITESPACE@1196..1197 " " + STRING@1197..1201 "'10'" + SEMICOLON@1201..1202 ";" + WHITESPACE@1202..1203 "\n" + SELECT@1203..1226 + SELECT_CLAUSE@1203..1225 + SELECT_KW@1203..1209 "select" + WHITESPACE@1209..1210 " " + TARGET_LIST@1210..1225 + TARGET@1210..1225 + LITERAL@1210..1225 + BYTE_STRING@1210..1215 "x'1F'" + WHITESPACE@1215..1216 " " + STRING@1216..1220 "'F0'" + WHITESPACE@1220..1221 " " + STRING@1221..1225 "'11'" + SEMICOLON@1225..1226 ";" + WHITESPACE@1226..1227 "\n" + SELECT@1227..1245 + SELECT_CLAUSE@1227..1244 + SELECT_KW@1227..1233 "select" + WHITESPACE@1233..1234 " " + TARGET_LIST@1234..1244 + TARGET@1234..1244 + LITERAL@1234..1244 + BYTE_STRING@1234..1239 "x'1F'" + WHITESPACE@1239..1240 "\n" + STRING@1240..1244 "'G0'" + SEMICOLON@1244..1245 ";" + WHITESPACE@1245..1247 "\n\n" + COMMENT@1247..1288 "-- ok CR-only newline ..." + WHITESPACE@1288..1289 "\n" + SELECT@1289..1304 + SELECT_CLAUSE@1289..1303 + SELECT_KW@1289..1295 "select" + WHITESPACE@1295..1296 " " + TARGET_LIST@1296..1303 + TARGET@1296..1303 + LITERAL@1296..1303 + STRING@1296..1299 "'a'" + WHITESPACE@1299..1300 "\r" + STRING@1300..1303 "'b'" + SEMICOLON@1303..1304 ";" + WHITESPACE@1304..1305 "\n" error[syntax-error]: Expected new line or comma between string literals ╭▸ -14 │ select 'foo' 'bar'; +24 │ select 'foo' 'bar'; ╰╴ ━ error[syntax-error]: Comments between string literals are not allowed. ╭▸ -15 │ select 'foo' /* comment */ 'bar'; +25 │ select 'foo' /* comment */ 'bar'; ╰╴ ━━━━━━━━━━━━━ error[syntax-error]: Comments between string literals are not allowed. ╭▸ -16 │ select 'hello' /* comment */ 'bar' /* another comment */ ' world'; +26 │ select 'hello' /* comment */ 'bar' /* another comment */ ' world'; ╰╴ ━━━━━━━━━━━━━ error[syntax-error]: Comments between string literals are not allowed. ╭▸ -16 │ select 'hello' /* comment */ 'bar' /* another comment */ ' world'; +26 │ select 'hello' /* comment */ 'bar' /* another comment */ ' world'; ╰╴ ━━━━━━━━━━━━━━━━━━━━━ -error[syntax-error]: Comments between string literals are not allowed. - ╭▸ -17 │ select 'hello' -- comment - ╰╴ ━━━━━━━━━━ error[syntax-error]: Expected new line or comma between string literals ╭▸ -19 │ select 'foo' 'bar' 'buzz'; +27 │ select 'foo' 'bar' 'buzz'; ╰╴ ━ error[syntax-error]: Expected new line or comma between string literals ╭▸ -19 │ select 'foo' 'bar' 'buzz'; +27 │ select 'foo' 'bar' 'buzz'; ╰╴ ━ error[syntax-error]: Expected new line or comma between string literals ╭▸ -22 │ select e'foo' 'bar'; +30 │ select e'foo' 'bar'; ╰╴ ━ error[syntax-error]: Comments between string literals are not allowed. ╭▸ -23 │ select e'foo' /* comment */ 'bar'; +31 │ select e'foo' /* comment */ 'bar'; ╰╴ ━━━━━━━━━━━━━ error[syntax-error]: Comments between string literals are not allowed. ╭▸ -24 │ select e'hello' /* comment */ 'bar' /* another comment */ ' world'; +32 │ select e'hello' /* comment */ 'bar' /* another comment */ ' world'; ╰╴ ━━━━━━━━━━━━━ error[syntax-error]: Comments between string literals are not allowed. ╭▸ -24 │ select e'hello' /* comment */ 'bar' /* another comment */ ' world'; +32 │ select e'hello' /* comment */ 'bar' /* another comment */ ' world'; ╰╴ ━━━━━━━━━━━━━━━━━━━━━ -error[syntax-error]: Comments between string literals are not allowed. - ╭▸ -25 │ select e'hello' -- comment - ╰╴ ━━━━━━━━━━ error[syntax-error]: Expected new line or comma between string literals ╭▸ -27 │ select e'foo' 'bar' 'buzz'; +33 │ select e'foo' 'bar' 'buzz'; ╰╴ ━ error[syntax-error]: Expected new line or comma between string literals ╭▸ -27 │ select e'foo' 'bar' 'buzz'; +33 │ select e'foo' 'bar' 'buzz'; ╰╴ ━ error[syntax-error]: Unicode escape requires 4 hex digits: \uXXXX ╭▸ -29 │ '\u00'; +35 │ '\u00'; ╰╴ ━━━━ error[syntax-error]: Expected new line or comma between string literals ╭▸ -32 │ select u&'foo' 'bar'; +38 │ select u&'foo' 'bar'; ╰╴ ━ error[syntax-error]: Comments between string literals are not allowed. ╭▸ -33 │ select u&'foo' /* comment */ 'bar'; +39 │ select u&'foo' /* comment */ 'bar'; ╰╴ ━━━━━━━━━━━━━ error[syntax-error]: Comments between string literals are not allowed. ╭▸ -34 │ select u&'hello' /* comment */ 'bar' /* another comment */ ' world'; +40 │ select u&'hello' /* comment */ 'bar' /* another comment */ ' world'; ╰╴ ━━━━━━━━━━━━━ error[syntax-error]: Comments between string literals are not allowed. ╭▸ -34 │ select u&'hello' /* comment */ 'bar' /* another comment */ ' world'; +40 │ select u&'hello' /* comment */ 'bar' /* another comment */ ' world'; ╰╴ ━━━━━━━━━━━━━━━━━━━━━ -error[syntax-error]: Comments between string literals are not allowed. - ╭▸ -35 │ select u&'hello' -- comment - ╰╴ ━━━━━━━━━━ error[syntax-error]: Expected new line or comma between string literals ╭▸ -37 │ select u&'foo' 'bar' 'buzz'; +41 │ select u&'foo' 'bar' 'buzz'; ╰╴ ━ error[syntax-error]: Expected new line or comma between string literals ╭▸ -37 │ select u&'foo' 'bar' 'buzz'; +41 │ select u&'foo' 'bar' 'buzz'; ╰╴ ━ error[syntax-error]: Unicode escape requires 4 hex digits: \XXXX ╭▸ -39 │ '\010'; +43 │ '\010'; ╰╴ ━━━━ error[syntax-error]: Expected new line or comma between string literals ╭▸ -42 │ select b'01' '10'; +46 │ select b'01' '10'; ╰╴ ━ error[syntax-error]: Comments between string literals are not allowed. ╭▸ -43 │ select b'01' /* comment */ '11'; +47 │ select b'01' /* comment */ '11'; ╰╴ ━━━━━━━━━━━━━ error[syntax-error]: Comments between string literals are not allowed. ╭▸ -44 │ select b'01' /* comment */ '11' /* another comment */ '10'; +48 │ select b'01' /* comment */ '11' /* another comment */ '10'; ╰╴ ━━━━━━━━━━━━━ error[syntax-error]: Comments between string literals are not allowed. ╭▸ -44 │ select b'01' /* comment */ '11' /* another comment */ '10'; +48 │ select b'01' /* comment */ '11' /* another comment */ '10'; ╰╴ ━━━━━━━━━━━━━━━━━━━━━ -error[syntax-error]: Comments between string literals are not allowed. - ╭▸ -45 │ select b'111' -- comment - ╰╴ ━━━━━━━━━━ error[syntax-error]: Expected new line or comma between string literals ╭▸ -47 │ select b'10' '10' '11'; +49 │ select b'10' '10' '11'; ╰╴ ━ error[syntax-error]: Expected new line or comma between string literals ╭▸ -47 │ select b'10' '10' '11'; +49 │ select b'10' '10' '11'; ╰╴ ━ error[syntax-error]: "2" is not a valid binary digit ╭▸ -49 │ '20'; +51 │ '20'; ╰╴ ━ error[syntax-error]: Expected new line or comma between string literals ╭▸ -52 │ select x'0F' '10'; +54 │ select x'0F' '10'; ╰╴ ━ error[syntax-error]: Comments between string literals are not allowed. ╭▸ -53 │ select x'01' /* comment */ '1F'; +55 │ select x'01' /* comment */ '1F'; ╰╴ ━━━━━━━━━━━━━ error[syntax-error]: Comments between string literals are not allowed. ╭▸ -54 │ select x'01' /* comment */ '1F' /* another comment */ '10'; +56 │ select x'01' /* comment */ '1F' /* another comment */ '10'; ╰╴ ━━━━━━━━━━━━━ error[syntax-error]: Comments between string literals are not allowed. ╭▸ -54 │ select x'01' /* comment */ '1F' /* another comment */ '10'; +56 │ select x'01' /* comment */ '1F' /* another comment */ '10'; ╰╴ ━━━━━━━━━━━━━━━━━━━━━ -error[syntax-error]: Comments between string literals are not allowed. - ╭▸ -55 │ select x'1F1' -- comment - ╰╴ ━━━━━━━━━━ error[syntax-error]: Expected new line or comma between string literals ╭▸ 57 │ select x'1F' 'F0' '11'; diff --git a/crates/squawk_syntax/src/validation.rs b/crates/squawk_syntax/src/validation.rs index 2a17b149..4c19e94c 100644 --- a/crates/squawk_syntax/src/validation.rs +++ b/crates/squawk_syntax/src/validation.rs @@ -224,6 +224,7 @@ fn validate_literal(lit: ast::Literal, acc: &mut Vec) { || token.text().contains('\r'); state = LookingFor::CloseString(text_range_end, seen_new_line); } + COMMENT if token.text().starts_with("--") => (), COMMENT => { maybe_errors.push(SyntaxError::new( "Comments between string literals are not allowed.", diff --git a/crates/squawk_syntax/test_data/validation/validate_string_continuation.sql b/crates/squawk_syntax/test_data/validation/validate_string_continuation.sql index 0e3f5930..8b8c8e73 100644 --- a/crates/squawk_syntax/test_data/validation/validate_string_continuation.sql +++ b/crates/squawk_syntax/test_data/validation/validate_string_continuation.sql @@ -1,29 +1,35 @@ --- ok strings with new lines +-- ok strings with new lines and line comments select 'foo' 'bar'; +select 'hello' -- comment +'world'; select e'foo' 'bar'; +select e'hello' -- comment +'world'; select u&'foo' 'bar'; +select u&'hello' -- comment +'world'; select b'01' '10'; +select b'111' -- comment +'10'; select x'1F' '10'; +select x'1F1' -- comment +'10'; -- error string select 'foo' 'bar'; select 'foo' /* comment */ 'bar'; select 'hello' /* comment */ 'bar' /* another comment */ ' world'; -select 'hello' -- comment -'world'; select 'foo' 'bar' 'buzz'; -- error escape string select e'foo' 'bar'; select e'foo' /* comment */ 'bar'; select e'hello' /* comment */ 'bar' /* another comment */ ' world'; -select e'hello' -- comment -'world'; select e'foo' 'bar' 'buzz'; select e'foo' '\u00'; @@ -32,8 +38,6 @@ select e'foo' select u&'foo' 'bar'; select u&'foo' /* comment */ 'bar'; select u&'hello' /* comment */ 'bar' /* another comment */ ' world'; -select u&'hello' -- comment -'world'; select u&'foo' 'bar' 'buzz'; select u&'foo' '\010'; @@ -42,8 +46,6 @@ select u&'foo' select b'01' '10'; select b'01' /* comment */ '11'; select b'01' /* comment */ '11' /* another comment */ '10'; -select b'111' -- comment -'10'; select b'10' '10' '11'; select b'10' '20'; @@ -52,8 +54,6 @@ select b'10' select x'0F' '10'; select x'01' /* comment */ '1F'; select x'01' /* comment */ '1F' /* another comment */ '10'; -select x'1F1' -- comment -'10'; select x'1F' 'F0' '11'; select x'1F' 'G0';