| // Code generated by goyacc -o strace.go -p Strace -v= strace.y. DO NOT EDIT. |
| |
| //line strace.y:2 |
| // Copyright 2018 syzkaller project authors. All rights reserved. |
| // Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. |
| |
| // +build !codeanalysis |
| |
| package parser |
| |
| import __yyfmt__ "fmt" |
| |
| //line strace.y:7 |
| |
| //line strace.y:13 |
| type StraceSymType struct { |
| yys int |
| data string |
| val_int int64 |
| val_double float64 |
| val_ret_type int64 |
| val_uint uint64 |
| val_constant Constant |
| val_identifiers []*BufferType |
| val_buf_type *BufferType |
| val_group_type *GroupType |
| val_type IrType |
| val_types []IrType |
| val_syscall *Syscall |
| } |
| |
| const STRING_LITERAL = 57346 |
| const IPV6 = 57347 |
| const IDENTIFIER = 57348 |
| const FLAG = 57349 |
| const DATETIME = 57350 |
| const SIGNAL_PLUS = 57351 |
| const SIGNAL_MINUS = 57352 |
| const MAC = 57353 |
| const INT = 57354 |
| const UINT = 57355 |
| const DOUBLE = 57356 |
| const QUESTION = 57357 |
| const ARROW = 57358 |
| const OR = 57359 |
| const AND = 57360 |
| const LOR = 57361 |
| const TIMES = 57362 |
| const LAND = 57363 |
| const LEQUAL = 57364 |
| const ONESCOMP = 57365 |
| const LSHIFT = 57366 |
| const RSHIFT = 57367 |
| const NOT = 57368 |
| const MINUS = 57369 |
| const PLUS = 57370 |
| const COMMA = 57371 |
| const LBRACKET = 57372 |
| const RBRACKET = 57373 |
| const LBRACKET_SQUARE = 57374 |
| const RBRACKET_SQUARE = 57375 |
| const LPAREN = 57376 |
| const RPAREN = 57377 |
| const EQUALS = 57378 |
| const UNFINISHED = 57379 |
| const RESUMED = 57380 |
| const NULL = 57381 |
| const EQUALAT = 57382 |
| const COLON = 57383 |
| const FORWARDSLASH = 57384 |
| const LOWEST = 57385 |
| const NOFLAG = 57386 |
| const NEG = 57387 |
| |
| var StraceToknames = [...]string{ |
| "$end", |
| "error", |
| "$unk", |
| "STRING_LITERAL", |
| "IPV6", |
| "IDENTIFIER", |
| "FLAG", |
| "DATETIME", |
| "SIGNAL_PLUS", |
| "SIGNAL_MINUS", |
| "MAC", |
| "INT", |
| "UINT", |
| "DOUBLE", |
| "QUESTION", |
| "ARROW", |
| "OR", |
| "AND", |
| "LOR", |
| "TIMES", |
| "LAND", |
| "LEQUAL", |
| "ONESCOMP", |
| "LSHIFT", |
| "RSHIFT", |
| "NOT", |
| "MINUS", |
| "PLUS", |
| "COMMA", |
| "LBRACKET", |
| "RBRACKET", |
| "LBRACKET_SQUARE", |
| "RBRACKET_SQUARE", |
| "LPAREN", |
| "RPAREN", |
| "EQUALS", |
| "UNFINISHED", |
| "RESUMED", |
| "NULL", |
| "EQUALAT", |
| "COLON", |
| "FORWARDSLASH", |
| "LOWEST", |
| "NOFLAG", |
| "NEG", |
| } |
| var StraceStatenames = [...]string{} |
| |
| const StraceEofCode = 1 |
| const StraceErrCode = 2 |
| const StraceInitialStackSize = 16 |
| |
| //line yacctab:1 |
| var StraceExca = [...]int{ |
| -1, 1, |
| 1, -1, |
| -2, 0, |
| } |
| |
| const StracePrivate = 57344 |
| |
| const StraceLast = 378 |
| |
| var StraceAct = [...]int{ |
| |
| 17, 91, 59, 38, 14, 18, 26, 27, 2, 10, |
| 90, 39, 26, 27, 4, 38, 6, 50, 36, 104, |
| 48, 30, 57, 50, 25, 49, 24, 30, 29, 56, |
| 86, 35, 34, 28, 29, 54, 55, 51, 33, 28, |
| 3, 40, 64, 65, 66, 67, 88, 68, 69, 70, |
| 71, 72, 73, 74, 40, 11, 49, 97, 100, 80, |
| 84, 39, 105, 101, 102, 38, 37, 103, 93, 94, |
| 5, 58, 45, 89, 39, 95, 96, 45, 38, 46, |
| 92, 25, 36, 24, 99, 85, 114, 83, 45, 82, |
| 99, 99, 108, 98, 45, 46, 47, 75, 43, 44, |
| 106, 46, 47, 16, 99, 15, 99, 99, 108, 110, |
| 99, 108, 99, 108, 109, 0, 111, 97, 100, 61, |
| 62, 0, 81, 101, 102, 1, 97, 100, 93, 94, |
| 8, 0, 101, 102, 63, 95, 96, 93, 94, 0, |
| 92, 25, 0, 24, 95, 96, 113, 0, 0, 92, |
| 25, 0, 24, 98, 0, 112, 0, 97, 100, 0, |
| 0, 0, 98, 101, 102, 0, 97, 100, 93, 94, |
| 0, 0, 101, 102, 0, 95, 96, 93, 94, 0, |
| 92, 25, 7, 24, 95, 96, 107, 0, 9, 92, |
| 25, 0, 24, 98, 0, 0, 20, 0, 21, 0, |
| 22, 0, 98, 23, 26, 27, 0, 52, 53, 20, |
| 0, 21, 0, 22, 0, 19, 23, 26, 27, 30, |
| 0, 13, 25, 0, 24, 0, 29, 32, 19, 31, |
| 0, 28, 30, 0, 77, 25, 78, 24, 20, 29, |
| 21, 0, 22, 0, 28, 23, 26, 27, 0, 0, |
| 0, 20, 0, 21, 0, 22, 0, 19, 23, 26, |
| 27, 30, 0, 13, 25, 0, 24, 76, 29, 0, |
| 19, 0, 0, 28, 30, 0, 13, 25, 0, 24, |
| 0, 29, 12, 20, 0, 21, 28, 22, 0, 0, |
| 23, 26, 27, 0, 0, 0, 20, 0, 21, 0, |
| 22, 0, 19, 23, 26, 27, 30, 0, 0, 25, |
| 87, 24, 0, 29, 0, 19, 0, 0, 28, 30, |
| 0, 0, 25, 0, 24, 0, 29, 41, 42, 0, |
| 45, 28, 0, 0, 43, 44, 0, 46, 47, 41, |
| 42, 0, 45, 0, 0, 79, 43, 44, 0, 46, |
| 47, 42, 0, 45, 0, 0, 0, 43, 44, 0, |
| 46, 47, 61, 62, 0, 60, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 63, |
| } |
| var StracePact = [...]int{ |
| |
| 2, -1000, 36, -21, 2, -29, 20, 247, -1000, 192, |
| 3, -4, -5, 292, 25, -1000, -1000, -1000, 322, -6, |
| -1000, 5, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 0, |
| 0, -1000, -7, -14, 56, 350, 25, 292, 292, 292, |
| 292, 0, 0, 0, 0, 0, 0, 0, -1000, -1000, |
| 0, 90, 234, 205, 310, -1000, 107, 77, -1000, 53, |
| -1000, -1000, -1000, 73, 38, -1000, -37, -25, 333, 74, |
| 68, 68, -1000, 57, 52, -3, -1000, 279, -1000, -1000, |
| 39, -1000, -1000, 160, 33, -1000, -17, -1000, 28, 160, |
| 151, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, |
| -1000, -1000, -1000, 160, 292, 160, 120, -1000, -1000, 111, |
| -37, 51, -1000, -1000, -1000, |
| } |
| var StracePgo = [...]int{ |
| |
| 0, 125, 2, 105, 0, 5, 1, 10, 4, 103, |
| 182, |
| } |
| var StraceR1 = [...]int{ |
| |
| 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
| 1, 1, 1, 7, 7, 6, 6, 6, 6, 6, |
| 6, 6, 6, 6, 6, 6, 2, 2, 2, 10, |
| 10, 10, 8, 8, 8, 8, 8, 5, 5, 5, |
| 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, |
| 4, 4, 4, 9, 9, 9, 9, 9, 3, 3, |
| 3, 3, |
| } |
| var StraceR2 = [...]int{ |
| |
| 0, 4, 5, 6, 5, 5, 8, 9, 6, 6, |
| 10, 9, 2, 1, 2, 1, 1, 1, 1, 1, |
| 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, |
| 3, 2, 1, 1, 1, 1, 2, 1, 1, 1, |
| 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, |
| 3, 3, 4, 3, 3, 3, 3, 6, 1, 1, |
| 1, 1, |
| } |
| var StraceChk = [...]int{ |
| |
| -1000, -1, 6, 38, 12, 34, 37, -10, -1, -10, |
| 38, 35, 35, 29, -8, -3, -9, -4, -5, 23, |
| 4, 6, 8, 11, 32, 30, 12, 13, 39, 34, |
| 27, 37, 35, 35, 36, 36, -8, 41, 40, 36, |
| 16, 17, 18, 24, 25, 20, 27, 28, -4, -5, |
| 23, 32, -10, -10, -5, -5, 36, 36, 15, -2, |
| 15, 12, 13, 27, -8, -8, -8, -8, -5, -5, |
| -5, -5, -5, -5, -5, 7, 33, 29, 31, 35, |
| -2, 15, 12, 34, 7, 12, 33, 31, 7, 34, |
| -7, -6, 29, 17, 18, 24, 25, 6, 42, -4, |
| 7, 12, 13, 34, 36, 34, -7, 35, -6, -7, |
| -8, -7, 35, 35, 35, |
| } |
| var StraceDef = [...]int{ |
| |
| 0, -2, 0, 29, 0, 29, 0, 0, 12, 0, |
| 0, 0, 0, 0, 31, 32, 33, 34, 35, 0, |
| 58, 59, 60, 61, 29, 29, 37, 38, 39, 0, |
| 0, 1, 0, 0, 0, 0, 30, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 36, 48, |
| 0, 0, 0, 0, 0, 49, 0, 0, 2, 4, |
| 5, 26, 27, 0, 53, 54, 55, 56, 40, 41, |
| 42, 43, 45, 46, 47, 0, 50, 0, 51, 44, |
| 8, 9, 3, 0, 0, 28, 0, 52, 0, 0, |
| 0, 13, 15, 16, 17, 18, 19, 20, 21, 22, |
| 23, 24, 25, 0, 0, 0, 0, 6, 14, 0, |
| 57, 0, 11, 7, 10, |
| } |
| var StraceTok1 = [...]int{ |
| |
| 1, |
| } |
| var StraceTok2 = [...]int{ |
| |
| 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, |
| 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, |
| 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, |
| 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, |
| 42, 43, 44, 45, |
| } |
| var StraceTok3 = [...]int{ |
| 0, |
| } |
| |
| var StraceErrorMessages = [...]struct { |
| state int |
| token int |
| msg string |
| }{} |
| |
| //line yaccpar:1 |
| |
| /* parser for yacc output */ |
| |
| var ( |
| StraceDebug = 0 |
| StraceErrorVerbose = false |
| ) |
| |
| type StraceLexer interface { |
| Lex(lval *StraceSymType) int |
| Error(s string) |
| } |
| |
| type StraceParser interface { |
| Parse(StraceLexer) int |
| Lookahead() int |
| } |
| |
| type StraceParserImpl struct { |
| lval StraceSymType |
| stack [StraceInitialStackSize]StraceSymType |
| char int |
| } |
| |
| func (p *StraceParserImpl) Lookahead() int { |
| return p.char |
| } |
| |
| func StraceNewParser() StraceParser { |
| return &StraceParserImpl{} |
| } |
| |
| const StraceFlag = -1000 |
| |
| func StraceTokname(c int) string { |
| if c >= 1 && c-1 < len(StraceToknames) { |
| if StraceToknames[c-1] != "" { |
| return StraceToknames[c-1] |
| } |
| } |
| return __yyfmt__.Sprintf("tok-%v", c) |
| } |
| |
| func StraceStatname(s int) string { |
| if s >= 0 && s < len(StraceStatenames) { |
| if StraceStatenames[s] != "" { |
| return StraceStatenames[s] |
| } |
| } |
| return __yyfmt__.Sprintf("state-%v", s) |
| } |
| |
| func StraceErrorMessage(state, lookAhead int) string { |
| const TOKSTART = 4 |
| |
| if !StraceErrorVerbose { |
| return "syntax error" |
| } |
| |
| for _, e := range StraceErrorMessages { |
| if e.state == state && e.token == lookAhead { |
| return "syntax error: " + e.msg |
| } |
| } |
| |
| res := "syntax error: unexpected " + StraceTokname(lookAhead) |
| |
| // To match Bison, suggest at most four expected tokens. |
| expected := make([]int, 0, 4) |
| |
| // Look for shiftable tokens. |
| base := StracePact[state] |
| for tok := TOKSTART; tok-1 < len(StraceToknames); tok++ { |
| if n := base + tok; n >= 0 && n < StraceLast && StraceChk[StraceAct[n]] == tok { |
| if len(expected) == cap(expected) { |
| return res |
| } |
| expected = append(expected, tok) |
| } |
| } |
| |
| if StraceDef[state] == -2 { |
| i := 0 |
| for StraceExca[i] != -1 || StraceExca[i+1] != state { |
| i += 2 |
| } |
| |
| // Look for tokens that we accept or reduce. |
| for i += 2; StraceExca[i] >= 0; i += 2 { |
| tok := StraceExca[i] |
| if tok < TOKSTART || StraceExca[i+1] == 0 { |
| continue |
| } |
| if len(expected) == cap(expected) { |
| return res |
| } |
| expected = append(expected, tok) |
| } |
| |
| // If the default action is to accept or reduce, give up. |
| if StraceExca[i+1] != 0 { |
| return res |
| } |
| } |
| |
| for i, tok := range expected { |
| if i == 0 { |
| res += ", expecting " |
| } else { |
| res += " or " |
| } |
| res += StraceTokname(tok) |
| } |
| return res |
| } |
| |
| func Stracelex1(lex StraceLexer, lval *StraceSymType) (char, token int) { |
| token = 0 |
| char = lex.Lex(lval) |
| if char <= 0 { |
| token = StraceTok1[0] |
| goto out |
| } |
| if char < len(StraceTok1) { |
| token = StraceTok1[char] |
| goto out |
| } |
| if char >= StracePrivate { |
| if char < StracePrivate+len(StraceTok2) { |
| token = StraceTok2[char-StracePrivate] |
| goto out |
| } |
| } |
| for i := 0; i < len(StraceTok3); i += 2 { |
| token = StraceTok3[i+0] |
| if token == char { |
| token = StraceTok3[i+1] |
| goto out |
| } |
| } |
| |
| out: |
| if token == 0 { |
| token = StraceTok2[1] /* unknown char */ |
| } |
| if StraceDebug >= 3 { |
| __yyfmt__.Printf("lex %s(%d)\n", StraceTokname(token), uint(char)) |
| } |
| return char, token |
| } |
| |
| func StraceParse(Stracelex StraceLexer) int { |
| return StraceNewParser().Parse(Stracelex) |
| } |
| |
| func (Stracercvr *StraceParserImpl) Parse(Stracelex StraceLexer) int { |
| var Stracen int |
| var StraceVAL StraceSymType |
| var StraceDollar []StraceSymType |
| _ = StraceDollar // silence set and not used |
| StraceS := Stracercvr.stack[:] |
| |
| Nerrs := 0 /* number of errors */ |
| Errflag := 0 /* error recovery flag */ |
| Stracestate := 0 |
| Stracercvr.char = -1 |
| Stracetoken := -1 // Stracercvr.char translated into internal numbering |
| defer func() { |
| // Make sure we report no lookahead when not parsing. |
| Stracestate = -1 |
| Stracercvr.char = -1 |
| Stracetoken = -1 |
| }() |
| Stracep := -1 |
| goto Stracestack |
| |
| ret0: |
| return 0 |
| |
| ret1: |
| return 1 |
| |
| Stracestack: |
| /* put a state and value onto the stack */ |
| if StraceDebug >= 4 { |
| __yyfmt__.Printf("char %v in %v\n", StraceTokname(Stracetoken), StraceStatname(Stracestate)) |
| } |
| |
| Stracep++ |
| if Stracep >= len(StraceS) { |
| nyys := make([]StraceSymType, len(StraceS)*2) |
| copy(nyys, StraceS) |
| StraceS = nyys |
| } |
| StraceS[Stracep] = StraceVAL |
| StraceS[Stracep].yys = Stracestate |
| |
| Stracenewstate: |
| Stracen = StracePact[Stracestate] |
| if Stracen <= StraceFlag { |
| goto Stracedefault /* simple state */ |
| } |
| if Stracercvr.char < 0 { |
| Stracercvr.char, Stracetoken = Stracelex1(Stracelex, &Stracercvr.lval) |
| } |
| Stracen += Stracetoken |
| if Stracen < 0 || Stracen >= StraceLast { |
| goto Stracedefault |
| } |
| Stracen = StraceAct[Stracen] |
| if StraceChk[Stracen] == Stracetoken { /* valid shift */ |
| Stracercvr.char = -1 |
| Stracetoken = -1 |
| StraceVAL = Stracercvr.lval |
| Stracestate = Stracen |
| if Errflag > 0 { |
| Errflag-- |
| } |
| goto Stracestack |
| } |
| |
| Stracedefault: |
| /* default state action */ |
| Stracen = StraceDef[Stracestate] |
| if Stracen == -2 { |
| if Stracercvr.char < 0 { |
| Stracercvr.char, Stracetoken = Stracelex1(Stracelex, &Stracercvr.lval) |
| } |
| |
| /* look through exception table */ |
| xi := 0 |
| for { |
| if StraceExca[xi+0] == -1 && StraceExca[xi+1] == Stracestate { |
| break |
| } |
| xi += 2 |
| } |
| for xi += 2; ; xi += 2 { |
| Stracen = StraceExca[xi+0] |
| if Stracen < 0 || Stracen == Stracetoken { |
| break |
| } |
| } |
| Stracen = StraceExca[xi+1] |
| if Stracen < 0 { |
| goto ret0 |
| } |
| } |
| if Stracen == 0 { |
| /* error ... attempt to resume parsing */ |
| switch Errflag { |
| case 0: /* brand new error */ |
| Stracelex.Error(StraceErrorMessage(Stracestate, Stracetoken)) |
| Nerrs++ |
| if StraceDebug >= 1 { |
| __yyfmt__.Printf("%s", StraceStatname(Stracestate)) |
| __yyfmt__.Printf(" saw %s\n", StraceTokname(Stracetoken)) |
| } |
| fallthrough |
| |
| case 1, 2: /* incompletely recovered error ... try again */ |
| Errflag = 3 |
| |
| /* find a state where "error" is a legal shift action */ |
| for Stracep >= 0 { |
| Stracen = StracePact[StraceS[Stracep].yys] + StraceErrCode |
| if Stracen >= 0 && Stracen < StraceLast { |
| Stracestate = StraceAct[Stracen] /* simulate a shift of "error" */ |
| if StraceChk[Stracestate] == StraceErrCode { |
| goto Stracestack |
| } |
| } |
| |
| /* the current p has no shift on "error", pop stack */ |
| if StraceDebug >= 2 { |
| __yyfmt__.Printf("error recovery pops state %d\n", StraceS[Stracep].yys) |
| } |
| Stracep-- |
| } |
| /* there is no state on the stack with an error shift ... abort */ |
| goto ret1 |
| |
| case 3: /* no shift yet; clobber input char */ |
| if StraceDebug >= 2 { |
| __yyfmt__.Printf("error recovery discards %s\n", StraceTokname(Stracetoken)) |
| } |
| if Stracetoken == StraceEofCode { |
| goto ret1 |
| } |
| Stracercvr.char = -1 |
| Stracetoken = -1 |
| goto Stracenewstate /* try again in the same state */ |
| } |
| } |
| |
| /* reduction by production Stracen */ |
| if StraceDebug >= 2 { |
| __yyfmt__.Printf("reduce %v in:\n\t%v\n", Stracen, StraceStatname(Stracestate)) |
| } |
| |
| Stracent := Stracen |
| Stracept := Stracep |
| _ = Stracept // guard against "declared and not used" |
| |
| Stracep -= StraceR2[Stracen] |
| // Stracep is now the index of $0. Perform the default action. Iff the |
| // reduced production is ε, $1 is possibly out of range. |
| if Stracep+1 >= len(StraceS) { |
| nyys := make([]StraceSymType, len(StraceS)*2) |
| copy(nyys, StraceS) |
| StraceS = nyys |
| } |
| StraceVAL = StraceS[Stracep+1] |
| |
| /* consult goto table to find next state */ |
| Stracen = StraceR1[Stracen] |
| Straceg := StracePgo[Stracen] |
| Stracej := Straceg + StraceS[Stracep].yys + 1 |
| |
| if Stracej >= StraceLast { |
| Stracestate = StraceAct[Straceg] |
| } else { |
| Stracestate = StraceAct[Stracej] |
| if StraceChk[Stracestate] != -Stracen { |
| Stracestate = StraceAct[Straceg] |
| } |
| } |
| // dummy call; replaced with literal code |
| switch Stracent { |
| |
| case 1: |
| StraceDollar = StraceS[Stracept-4 : Stracept+1] |
| //line strace.y:63 |
| { |
| StraceVAL.val_syscall = NewSyscall(-1, StraceDollar[1].data, StraceDollar[3].val_types, int64(-1), true, false) |
| Stracelex.(*Stracelexer).result = StraceVAL.val_syscall |
| } |
| case 2: |
| StraceDollar = StraceS[Stracept-5 : Stracept+1] |
| //line strace.y:66 |
| { |
| StraceVAL.val_syscall = NewSyscall(-1, "tmp", nil, -1, true, true) |
| Stracelex.(*Stracelexer).result = StraceVAL.val_syscall |
| } |
| case 3: |
| StraceDollar = StraceS[Stracept-6 : Stracept+1] |
| //line strace.y:71 |
| { |
| StraceVAL.val_syscall = NewSyscall(-1, StraceDollar[1].data, nil, int64(StraceDollar[6].val_int), false, false) |
| Stracelex.(*Stracelexer).result = StraceVAL.val_syscall |
| } |
| case 4: |
| StraceDollar = StraceS[Stracept-5 : Stracept+1] |
| //line strace.y:76 |
| { |
| StraceVAL.val_syscall = NewSyscall(-1, "tmp", StraceDollar[2].val_types, StraceDollar[5].val_ret_type, false, true) |
| Stracelex.(*Stracelexer).result = StraceVAL.val_syscall |
| } |
| case 5: |
| StraceDollar = StraceS[Stracept-5 : Stracept+1] |
| //line strace.y:78 |
| { |
| StraceVAL.val_syscall = NewSyscall(-1, "tmp", StraceDollar[2].val_types, -1, false, true) |
| Stracelex.(*Stracelexer).result = StraceVAL.val_syscall |
| } |
| case 6: |
| StraceDollar = StraceS[Stracept-8 : Stracept+1] |
| //line strace.y:80 |
| { |
| StraceVAL.val_syscall = NewSyscall(-1, "tmp", StraceDollar[2].val_types, StraceDollar[5].val_ret_type, false, true) |
| Stracelex.(*Stracelexer).result = StraceVAL.val_syscall |
| } |
| case 7: |
| StraceDollar = StraceS[Stracept-9 : Stracept+1] |
| //line strace.y:83 |
| { |
| StraceVAL.val_syscall = NewSyscall(-1, "tmp", StraceDollar[2].val_types, StraceDollar[5].val_ret_type, false, true) |
| Stracelex.(*Stracelexer).result = StraceVAL.val_syscall |
| } |
| case 8: |
| StraceDollar = StraceS[Stracept-6 : Stracept+1] |
| //line strace.y:85 |
| { |
| StraceVAL.val_syscall = NewSyscall(-1, StraceDollar[1].data, StraceDollar[3].val_types, StraceDollar[6].val_ret_type, false, false) |
| Stracelex.(*Stracelexer).result = StraceVAL.val_syscall |
| } |
| case 9: |
| StraceDollar = StraceS[Stracept-6 : Stracept+1] |
| //line strace.y:88 |
| { |
| StraceVAL.val_syscall = NewSyscall(-1, StraceDollar[1].data, StraceDollar[3].val_types, -1, false, false) |
| Stracelex.(*Stracelexer).result = StraceVAL.val_syscall |
| } |
| case 10: |
| StraceDollar = StraceS[Stracept-10 : Stracept+1] |
| //line strace.y:91 |
| { |
| StraceVAL.val_syscall = NewSyscall(-1, StraceDollar[1].data, StraceDollar[3].val_types, StraceDollar[6].val_ret_type, false, false) |
| Stracelex.(*Stracelexer).result = StraceVAL.val_syscall |
| } |
| case 11: |
| StraceDollar = StraceS[Stracept-9 : Stracept+1] |
| //line strace.y:94 |
| { |
| StraceVAL.val_syscall = NewSyscall(-1, StraceDollar[1].data, StraceDollar[3].val_types, StraceDollar[6].val_ret_type, false, false) |
| Stracelex.(*Stracelexer).result = StraceVAL.val_syscall |
| } |
| case 12: |
| StraceDollar = StraceS[Stracept-2 : Stracept+1] |
| //line strace.y:97 |
| { |
| call := StraceDollar[2].val_syscall |
| call.Pid = StraceDollar[1].val_int |
| Stracelex.(*Stracelexer).result = call |
| } |
| case 13: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:100 |
| { |
| StraceVAL.val_type = nil |
| } |
| case 14: |
| StraceDollar = StraceS[Stracept-2 : Stracept+1] |
| //line strace.y:101 |
| { |
| StraceVAL.val_type = nil |
| } |
| case 15: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:104 |
| { |
| StraceVAL.val_type = nil |
| } |
| case 16: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:105 |
| { |
| StraceVAL.val_type = nil |
| } |
| case 17: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:106 |
| { |
| StraceVAL.val_type = nil |
| } |
| case 18: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:107 |
| { |
| StraceVAL.val_type = nil |
| } |
| case 19: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:108 |
| { |
| StraceVAL.val_type = nil |
| } |
| case 20: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:109 |
| { |
| StraceVAL.val_type = nil |
| } |
| case 21: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:110 |
| { |
| StraceVAL.val_type = nil |
| } |
| case 22: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:111 |
| { |
| StraceVAL.val_type = nil |
| } |
| case 23: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:112 |
| { |
| StraceVAL.val_type = nil |
| } |
| case 24: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:113 |
| { |
| StraceVAL.val_type = nil |
| } |
| case 25: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:114 |
| { |
| StraceVAL.val_type = nil |
| } |
| case 26: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:117 |
| { |
| StraceVAL.val_ret_type = StraceDollar[1].val_int |
| } |
| case 27: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:118 |
| { |
| StraceVAL.val_ret_type = int64(StraceDollar[1].val_uint) |
| } |
| case 28: |
| StraceDollar = StraceS[Stracept-2 : Stracept+1] |
| //line strace.y:119 |
| { |
| StraceVAL.val_ret_type = -1 * StraceDollar[2].val_int |
| } |
| case 29: |
| StraceDollar = StraceS[Stracept-0 : Stracept+1] |
| //line strace.y:122 |
| { |
| StraceVAL.val_types = []IrType{} |
| } |
| case 30: |
| StraceDollar = StraceS[Stracept-3 : Stracept+1] |
| //line strace.y:123 |
| { |
| StraceDollar[1].val_types = append(StraceDollar[1].val_types, StraceDollar[3].val_type) |
| StraceVAL.val_types = StraceDollar[1].val_types |
| } |
| case 31: |
| StraceDollar = StraceS[Stracept-2 : Stracept+1] |
| //line strace.y:124 |
| { |
| StraceDollar[1].val_types = append(StraceDollar[1].val_types, StraceDollar[2].val_type) |
| StraceVAL.val_types = StraceDollar[1].val_types |
| } |
| case 32: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:127 |
| { |
| StraceVAL.val_type = StraceDollar[1].val_buf_type |
| } |
| case 33: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:128 |
| { |
| StraceVAL.val_type = StraceDollar[1].val_type |
| } |
| case 34: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:129 |
| { |
| StraceVAL.val_type = StraceDollar[1].val_group_type |
| } |
| case 35: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:130 |
| { |
| StraceVAL.val_type = StraceDollar[1].val_constant |
| } |
| case 36: |
| StraceDollar = StraceS[Stracept-2 : Stracept+1] |
| //line strace.y:131 |
| { |
| StraceVAL.val_type = StraceDollar[2].val_group_type |
| } |
| case 37: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:134 |
| { |
| StraceVAL.val_constant = Constant(StraceDollar[1].val_int) |
| } |
| case 38: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:135 |
| { |
| StraceVAL.val_constant = Constant(StraceDollar[1].val_uint) |
| } |
| case 39: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:136 |
| { |
| StraceVAL.val_constant = Constant(uint64(0)) |
| } |
| case 40: |
| StraceDollar = StraceS[Stracept-3 : Stracept+1] |
| //line strace.y:137 |
| { |
| StraceVAL.val_constant = StraceDollar[1].val_constant | StraceDollar[3].val_constant |
| } |
| case 41: |
| StraceDollar = StraceS[Stracept-3 : Stracept+1] |
| //line strace.y:138 |
| { |
| StraceVAL.val_constant = StraceDollar[1].val_constant & StraceDollar[3].val_constant |
| } |
| case 42: |
| StraceDollar = StraceS[Stracept-3 : Stracept+1] |
| //line strace.y:139 |
| { |
| StraceVAL.val_constant = StraceDollar[1].val_constant << StraceDollar[3].val_constant |
| } |
| case 43: |
| StraceDollar = StraceS[Stracept-3 : Stracept+1] |
| //line strace.y:140 |
| { |
| StraceVAL.val_constant = StraceDollar[1].val_constant >> StraceDollar[3].val_constant |
| } |
| case 44: |
| StraceDollar = StraceS[Stracept-3 : Stracept+1] |
| //line strace.y:141 |
| { |
| StraceVAL.val_constant = StraceDollar[2].val_constant |
| } |
| case 45: |
| StraceDollar = StraceS[Stracept-3 : Stracept+1] |
| //line strace.y:142 |
| { |
| StraceVAL.val_constant = StraceDollar[1].val_constant * StraceDollar[3].val_constant |
| } |
| case 46: |
| StraceDollar = StraceS[Stracept-3 : Stracept+1] |
| //line strace.y:143 |
| { |
| StraceVAL.val_constant = StraceDollar[1].val_constant - StraceDollar[3].val_constant |
| } |
| case 47: |
| StraceDollar = StraceS[Stracept-3 : Stracept+1] |
| //line strace.y:144 |
| { |
| StraceVAL.val_constant = StraceDollar[1].val_constant + StraceDollar[3].val_constant |
| } |
| case 48: |
| StraceDollar = StraceS[Stracept-2 : Stracept+1] |
| //line strace.y:145 |
| { |
| StraceVAL.val_constant = ^StraceDollar[2].val_constant |
| } |
| case 49: |
| StraceDollar = StraceS[Stracept-2 : Stracept+1] |
| //line strace.y:146 |
| { |
| StraceVAL.val_constant = Constant(-int64(StraceDollar[2].val_constant)) |
| } |
| case 50: |
| StraceDollar = StraceS[Stracept-3 : Stracept+1] |
| //line strace.y:149 |
| { |
| StraceVAL.val_group_type = newGroupType(StraceDollar[2].val_types) |
| } |
| case 51: |
| StraceDollar = StraceS[Stracept-3 : Stracept+1] |
| //line strace.y:150 |
| { |
| StraceVAL.val_group_type = newGroupType(StraceDollar[2].val_types) |
| } |
| case 52: |
| StraceDollar = StraceS[Stracept-4 : Stracept+1] |
| //line strace.y:151 |
| { |
| StraceVAL.val_group_type = newGroupType(StraceDollar[2].val_types) |
| } |
| case 53: |
| StraceDollar = StraceS[Stracept-3 : Stracept+1] |
| //line strace.y:154 |
| { |
| StraceVAL.val_type = StraceDollar[3].val_type |
| } |
| case 54: |
| StraceDollar = StraceS[Stracept-3 : Stracept+1] |
| //line strace.y:155 |
| { |
| StraceVAL.val_type = StraceDollar[3].val_type |
| } |
| case 55: |
| StraceDollar = StraceS[Stracept-3 : Stracept+1] |
| //line strace.y:156 |
| { |
| StraceVAL.val_type = StraceDollar[3].val_type |
| } |
| case 56: |
| StraceDollar = StraceS[Stracept-3 : Stracept+1] |
| //line strace.y:157 |
| { |
| StraceVAL.val_type = StraceDollar[1].val_type |
| } |
| case 57: |
| StraceDollar = StraceS[Stracept-6 : Stracept+1] |
| //line strace.y:158 |
| { |
| StraceVAL.val_type = StraceDollar[6].val_type |
| } |
| case 58: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:161 |
| { |
| StraceVAL.val_buf_type = newBufferType(StraceDollar[1].data) |
| } |
| case 59: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:162 |
| { |
| StraceVAL.val_buf_type = newBufferType(StraceDollar[1].data) |
| } |
| case 60: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:163 |
| { |
| StraceVAL.val_buf_type = newBufferType(StraceDollar[1].data) |
| } |
| case 61: |
| StraceDollar = StraceS[Stracept-1 : Stracept+1] |
| //line strace.y:164 |
| { |
| StraceVAL.val_buf_type = newBufferType(StraceDollar[1].data) |
| } |
| } |
| goto Stracestack /* stack new state and value */ |
| } |