* lexer: replace version comments with feature-ids mechanism
* tests: retain the original version digit test
* fix scanVersionDigits
* add SpecialCommentsController to decide what comments can be parsed
* only ignore comments with unsupported feature-id
* remove debug log
* lexer: added a function to scan version digits
* lexer: removed special comment scanner
Instead, simply strip off '/*!' and the pairing '*/'.
Temporarily disabled handling of /*+ ... */
* lexer: support collecting the entire /*+ ... */ as a single token
This new token has type `hintComment`. The actual hint will be parsed
lazily.
* lexer,yy_parser: move lastErrorAsWarn() from Parser into Scanner
* goyacc: do not allow conflict, support changing parser type name
change the "DO NOT EDIT" line to fit the Go standard
* parser,hintparser: created a new parser just for parsing optimizer hints
deleted all optimizer hint rules from parser.go
refactor the Makefile to support building both parsers (also deleted some
outdated fixup of *parser.go)
* lexer: fix comment parser
* codecov: don't wait for integration test before showing the coverage
* lexer: fix comment parsing again
* hintparser: TiDB still expects `HASH_JOIN(@qb1 foo@qb2)` to be valid :(
* parser,hintparser: provide the true line/column offset in the warnings
cache the hintparser in the main parser to avoid repeated allocation
* lexer: delete unused sqlOffsetInComment()
* lexer: ensure /*! ... */ follow the same SQL mode as original parser
* lexer: forward stmtText() to specialComment parser if exists
* lexer: ensure invalid tokens in optimizer hint won't loop the parser
* Add charset validation in pattern `CharsetName`, and use it in syntax `CONVERT(expr USING transcoding_name)` and `CHAR(N USING charset_name)`.
* Modify `yyLexer` interface to return different types of error.
* parser: refactor parser first step
This is the first step to refactor parser. it solve several problems.
1. function name can be general identifier, we don't need to define a keyword for a builtin function.
2. write test to make sure keyword is consistent with lever token. this fixes#4538.
3. Removed ReservedKeyword, solve the identifier in scanner.
4. Simplified precedence definition.
* *: address comment