MCPcopy Index your code
hub / github.com/yuin/gopher-lua / Parse

Method Parse

parse/parser.go:520–1385  ·  view source on GitHub ↗
(yylex yyLexer)

Source from the content-addressed store, hash-verified

518}
519
520func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
521 var yyn int
522 var yyVAL yySymType
523 var yyDollar []yySymType
524 _ = yyDollar // silence set and not used
525 yyS := yyrcvr.stack[:]
526
527 Nerrs := 0 /* number of errors */
528 Errflag := 0 /* error recovery flag */
529 yystate := 0
530 yyrcvr.char = -1
531 yytoken := -1 // yyrcvr.char translated into internal numbering
532 defer func() {
533 // Make sure we report no lookahead when not parsing.
534 yystate = -1
535 yyrcvr.char = -1
536 yytoken = -1
537 }()
538 yyp := -1
539 goto yystack
540
541ret0:
542 return 0
543
544ret1:
545 return 1
546
547yystack:
548 /* put a state and value onto the stack */
549 if yyDebug >= 4 {
550 __yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
551 }
552
553 yyp++
554 if yyp >= len(yyS) {
555 nyys := make([]yySymType, len(yyS)*2)
556 copy(nyys, yyS)
557 yyS = nyys
558 }
559 yyS[yyp] = yyVAL
560 yyS[yyp].yys = yystate
561
562yynewstate:
563 yyn = int(yyPact[yystate])
564 if yyn <= yyFlag {
565 goto yydefault /* simple state */
566 }
567 if yyrcvr.char < 0 {
568 yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
569 }
570 yyn += yytoken
571 if yyn < 0 || yyn >= yyLast {
572 goto yydefault
573 }
574 yyn = int(yyAct[yyn])
575 if int(yyChk[yyn]) == yytoken { /* valid shift */
576 yyrcvr.char = -1
577 yytoken = -1

Callers

nothing calls this directly

Calls 10

yyToknameFunction · 0.85
yyStatnameFunction · 0.85
yylex1Function · 0.85
yyErrorMessageFunction · 0.85
ErrorMethod · 0.65
SetLineMethod · 0.65
LineMethod · 0.65
SetLastLineMethod · 0.65
LastLineMethod · 0.65
TokenErrorMethod · 0.45

Tested by

no test coverage detected