isStatementStartingKeyword checks if the current token is a statement-starting keyword.
()
| 81 | |
| 82 | // isStatementStartingKeyword checks if the current token is a statement-starting keyword. |
| 83 | func (p *Parser) isStatementStartingKeyword() bool { |
| 84 | if p.currentToken.Token.Type != models.TokenTypeUnknown { |
| 85 | switch p.currentToken.Token.Type { |
| 86 | case models.TokenTypeSelect, models.TokenTypeInsert, models.TokenTypeUpdate, |
| 87 | models.TokenTypeDelete, models.TokenTypeCreate, models.TokenTypeAlter, |
| 88 | models.TokenTypeDrop, models.TokenTypeWith, models.TokenTypeMerge, |
| 89 | models.TokenTypeRefresh, models.TokenTypeTruncate, |
| 90 | models.TokenTypeGrant, models.TokenTypeRevoke, |
| 91 | models.TokenTypeSet, models.TokenTypeBegin, |
| 92 | models.TokenTypeCommit, models.TokenTypeRollback: |
| 93 | return true |
| 94 | } |
| 95 | } |
| 96 | return false |
| 97 | } |
| 98 | |
| 99 | // synchronize advances the parser past the current error to a synchronization point: |
| 100 | // either past a semicolon or to a statement-starting keyword. |