MCPcopy Create free account
hub / github.com/cockroachdb/cockroachdb-parser / Parse

Method Parse

pkg/sql/plpgsql/parser/plpgsql.go:1088–2592  ·  view source on GitHub ↗
(plpgsqllex plpgsqlLexer)

Source from the content-addressed store, hash-verified

1086}
1087
1088func (plpgsqlrcvr *plpgsqlParserImpl) Parse(plpgsqllex plpgsqlLexer) int {
1089 var plpgsqln int
1090 var plpgsqlVAL plpgsqlSymType
1091 var plpgsqlDollar []plpgsqlSymType
1092 _ = plpgsqlDollar // silence set and not used
1093 plpgsqlS := plpgsqlrcvr.stack[:]
1094
1095 Nerrs := 0 /* number of errors */
1096 Errflag := 0 /* error recovery flag */
1097 plpgsqlstate := 0
1098 plpgsqlrcvr.char = -1
1099 plpgsqltoken := -1 // plpgsqlrcvr.char translated into internal numbering
1100 defer func() {
1101 // Make sure we report no lookahead when not parsing.
1102 plpgsqlstate = -1
1103 plpgsqlrcvr.char = -1
1104 plpgsqltoken = -1
1105 }()
1106 plpgsqlp := -1
1107 goto plpgsqlstack
1108
1109ret0:
1110 return 0
1111
1112ret1:
1113 return 1
1114
1115plpgsqlstack:
1116 /* put a state and value onto the stack */
1117 if plpgsqlDebug >= 4 {
1118 __yyfmt__.Printf("char %v in %v\n", plpgsqlTokname(plpgsqltoken), plpgsqlStatname(plpgsqlstate))
1119 }
1120
1121 plpgsqlp++
1122 if plpgsqlp >= len(plpgsqlS) {
1123 nyys := make([]plpgsqlSymType, len(plpgsqlS)*2)
1124 copy(nyys, plpgsqlS)
1125 plpgsqlS = nyys
1126 }
1127 plpgsqlS[plpgsqlp] = plpgsqlVAL
1128 plpgsqlS[plpgsqlp].yys = plpgsqlstate
1129
1130plpgsqlnewstate:
1131 plpgsqln = int(plpgsqlPact[plpgsqlstate])
1132 if plpgsqln <= plpgsqlFlag {
1133 goto plpgsqldefault /* simple state */
1134 }
1135 if plpgsqlrcvr.char < 0 {
1136 plpgsqlrcvr.char, plpgsqltoken = plpgsqllex1(plpgsqllex, &plpgsqlrcvr.lval)
1137 }
1138 plpgsqln += plpgsqltoken
1139 if plpgsqln < 0 || plpgsqln >= plpgsqlLast {
1140 goto plpgsqldefault
1141 }
1142 plpgsqln = int(plpgsqlAct[plpgsqln])
1143 if int(plpgsqlChk[plpgsqln]) == plpgsqltoken { /* valid shift */
1144 plpgsqlrcvr.char = -1
1145 plpgsqltoken = -1

Callers

nothing calls this directly

Calls 15

MakeAnnotationsFunction · 0.92
ParseFunction · 0.92
MakeCollatedStringFunction · 0.92
RoutineBodyStrTypeAlias · 0.92
AsRoutineLanguageFunction · 0.92
NameTypeAlias · 0.92
plpgsqlToknameFunction · 0.85
plpgsqlStatnameFunction · 0.85
plpgsqllex1Function · 0.85
plpgsqlErrorMessageFunction · 0.85
checkLoopLabelsFunction · 0.85
makeDoStmtFunction · 0.85

Tested by

no test coverage detected