(sqllex sqlLexer)
| 14533 | } |
| 14534 | |
| 14535 | func (sqlrcvr *sqlParserImpl) Parse(sqllex sqlLexer) int { |
| 14536 | var sqln int |
| 14537 | var sqlVAL sqlSymType |
| 14538 | var sqlDollar []sqlSymType |
| 14539 | _ = sqlDollar // silence set and not used |
| 14540 | sqlS := sqlrcvr.stack[:] |
| 14541 | |
| 14542 | Nerrs := 0 /* number of errors */ |
| 14543 | Errflag := 0 /* error recovery flag */ |
| 14544 | sqlstate := 0 |
| 14545 | sqlrcvr.char = -1 |
| 14546 | sqltoken := -1 // sqlrcvr.char translated into internal numbering |
| 14547 | defer func() { |
| 14548 | // Make sure we report no lookahead when not parsing. |
| 14549 | sqlstate = -1 |
| 14550 | sqlrcvr.char = -1 |
| 14551 | sqltoken = -1 |
| 14552 | }() |
| 14553 | sqlp := -1 |
| 14554 | goto sqlstack |
| 14555 | |
| 14556 | ret0: |
| 14557 | return 0 |
| 14558 | |
| 14559 | ret1: |
| 14560 | return 1 |
| 14561 | |
| 14562 | sqlstack: |
| 14563 | /* put a state and value onto the stack */ |
| 14564 | if sqlDebug >= 4 { |
| 14565 | __yyfmt__.Printf("char %v in %v\n", sqlTokname(sqltoken), sqlStatname(sqlstate)) |
| 14566 | } |
| 14567 | |
| 14568 | sqlp++ |
| 14569 | if sqlp >= len(sqlS) { |
| 14570 | nyys := make([]sqlSymType, len(sqlS)*2) |
| 14571 | copy(nyys, sqlS) |
| 14572 | sqlS = nyys |
| 14573 | } |
| 14574 | sqlS[sqlp] = sqlVAL |
| 14575 | sqlS[sqlp].yys = sqlstate |
| 14576 | |
| 14577 | sqlnewstate: |
| 14578 | sqln = sqlPact[sqlstate] |
| 14579 | if sqln <= sqlFlag { |
| 14580 | goto sqldefault /* simple state */ |
| 14581 | } |
| 14582 | if sqlrcvr.char < 0 { |
| 14583 | sqlrcvr.char, sqltoken = sqllex1(sqllex, &sqlrcvr.lval) |
| 14584 | } |
| 14585 | sqln += sqltoken |
| 14586 | if sqln < 0 || sqln >= sqlLast { |
| 14587 | goto sqldefault |
| 14588 | } |
| 14589 | sqln = sqlAct[sqln] |
| 14590 | if sqlChk[sqln] == sqltoken { /* valid shift */ |
| 14591 | sqlrcvr.char = -1 |
| 14592 | sqltoken = -1 |
nothing calls this directly
no test coverage detected