Best Python code snippet using avocado_python
parsetab.py
Source:parsetab.py  
1# parsetab.py2# This file is automatically generated. Do not edit.3# pylint: disable=W,C,R4_tabversion = '3.10'5_lr_method = 'LALR'6_lr_signature = 'COLON COMMA DISTINT DIV EQUALS EQUALSEQUALS FLOAT64 FLOATLITERAL FMT FUNC GOTO GREATER GREATEREQUAL ID IF IMPORT INT INTLITERAL LECOR LEKEY LEPAR LESS LESSEQUAL MINUS PACKAGE PLUS POINT PRINTF RETURN RICOR RIKEY RIPAR SEMICOLON STRINGLITERAL TIMES VARstart :  PACKAGE ID SEMICOLON IMPORT LEPAR STRINGLITERAL RIPAR SEMICOLON declarations codeListdeclarations : declarations declaration\n                    | declarationdeclaration :     VAR idList LECOR INTLITERAL RICOR FLOAT64 SEMICOLON\n                    |   VAR idList type SEMICOLONtype : INT\n            | FLOAT64idList :   idList COMMA ID\n                | IDcodeList : codeList code\n                | codecode : FUNC ID LEPAR RIPAR statementstatement : LEKEY instructions RIKEYinstructions : instructions instruction\n                    | instructioninstruction :  assign SEMICOLON\n                    | print SEMICOLON\n                    | if\n                    | gotoSt SEMICOLON\n                    | label\n                    | callFunc SEMICOLON\n                    | retSt SEMICOLONretSt : RETURNcallFunc : ID LEPAR RIPARlabel : ID COLONgotoSt : GOTO IDif : IF expression LEKEY GOTO ID SEMICOLON RIKEYassign : access EQUALS finalExpassign :   ID EQUALS expression\n                | ID EQUALS accessprint : FMT POINT PRINTF LEPAR STRINGLITERAL COMMA printValue RIPARprintValue :   INT LEPAR finalExp RIPAR\n                    | finalExpexpression :   finalExp PLUS finalExp\n                    | finalExp MINUS finalExp\n                    | finalExp TIMES finalExp\n                    | finalExp DIV finalExp\n                    | finalExp GREATER finalExp\n                    | finalExp LESS finalExp\n                    | finalExp GREATEREQUAL finalExp\n                    | finalExp LESSEQUAL finalExp\n                    | finalExp EQUALSEQUALS finalExp\n                    | finalExp DISTINT finalExp\n                    | finalExpfinalExp : ID\n                | INTLITERAL\n                | MINUS INTLITERAL\n                | FLOATLITERALaccess :   ID LECOR INT LEPAR finalExp RIPAR RICOR\n                | ID LECOR finalExp RICOR'7    8_lr_action_items = {'PACKAGE':([0,],[2,]),'$end':([1,13,15,19,32,51,],[0,-1,-11,-10,-12,-13,]),'ID':([2,12,16,24,33,35,36,39,41,47,48,52,53,54,55,56,57,58,59,60,62,80,81,82,83,84,85,86,87,88,89,91,94,109,115,117,],[3,18,20,29,45,45,-15,-18,-20,65,70,-14,-16,-17,-19,-21,-22,65,72,-25,65,65,65,65,65,65,65,65,65,65,65,65,107,65,-27,65,]),'SEMICOLON':([3,8,22,23,25,34,37,38,40,42,43,49,65,66,68,69,70,71,72,73,74,75,90,92,95,96,97,98,99,100,101,102,103,104,107,111,116,],[4,9,-7,28,-6,50,53,54,55,56,57,-23,-45,-44,-46,-48,-26,-28,-45,-29,-30,-24,-47,-50,-34,-35,-36,-37,-38,-39,-40,-41,-42,-43,110,-49,-31,]),'IMPORT':([4,],[5,]),'LEPAR':([5,20,45,76,78,113,],[6,26,61,91,93,117,]),'STRINGLITERAL':([6,93,],[7,106,]),'RIPAR':([7,26,61,65,68,69,90,105,112,114,118,119,],[8,30,75,-45,-46,-48,-47,108,116,-33,119,-32,]),'VAR':([9,10,11,14,28,50,],[12,12,-3,-2,-5,-4,]),'FUNC':([10,11,13,14,15,19,28,32,50,51,],[16,-3,16,-2,-11,-10,-5,-12,-4,-13,]),'LECOR':([17,18,29,45,72,],[21,-9,-8,62,62,]),'COMMA':([17,18,29,106,],[24,-9,-8,109,]),'INT':([17,18,29,62,109,],[25,-9,-8,76,113,]),'FLOAT64':([17,18,29,31,],[22,-9,-8,34,]),'INTLITERAL':([21,47,58,59,62,67,80,81,82,83,84,85,86,87,88,89,91,109,117,],[27,68,68,68,68,90,68,68,68,68,68,68,68,68,68,68,68,68,68,]),'RICOR':([27,65,68,69,77,90,108,],[31,-45,-46,-48,92,-47,111,]),'LEKEY':([30,64,65,66,68,69,90,95,96,97,98,99,100,101,102,103,104,],[33,79,-45,-44,-46,-48,-47,-34,-35,-36,-37,-38,-39,-40,-41,-42,-43,]),'FMT':([33,35,36,39,41,52,53,54,55,56,57,60,115,],[46,46,-15,-18,-20,-14,-16,-17,-19,-21,-22,-25,-27,]),'IF':([33,35,36,39,41,52,53,54,55,56,57,60,115,],[47,47,-15,-18,-20,-14,-16,-17,-19,-21,-22,-25,-27,]),'GOTO':([33,35,36,39,41,52,53,54,55,56,57,60,79,115,],[48,48,-15,-18,-20,-14,-16,-17,-19,-21,-22,-25,94,-27,]),'RETURN':([33,35,36,39,41,52,53,54,55,56,57,60,115,],[49,49,-15,-18,-20,-14,-16,-17,-19,-21,-22,-25,-27,]),'RIKEY':([35,36,39,41,52,53,54,55,56,57,60,110,115,],[51,-15,-18,-20,-14,-16,-17,-19,-21,-22,-25,115,-27,]),'EQUALS':([44,45,92,111,],[58,59,-50,-49,]),'COLON':([45,],[60,]),'POINT':([46,],[63,]),'MINUS':([47,58,59,62,65,66,68,69,72,80,81,82,83,84,85,86,87,88,89,90,91,109,117,],[67,67,67,67,-45,81,-46,-48,-45,67,67,67,67,67,67,67,67,67,67,-47,67,67,67,]),'FLOATLITERAL':([47,58,59,62,80,81,82,83,84,85,86,87,88,89,91,109,117,],[69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,]),'PRINTF':([63,],[78,]),'PLUS':([65,66,68,69,72,90,],[-45,80,-46,-48,-45,-47,]),'TIMES':([65,66,68,69,72,90,],[-45,82,-46,-48,-45,-47,]),'DIV':([65,66,68,69,72,90,],[-45,83,-46,-48,-45,-47,]),'GREATER':([65,66,68,69,72,90,],[-45,84,-46,-48,-45,-47,]),'LESS':([65,66,68,69,72,90,],[-45,85,-46,-48,-45,-47,]),'GREATEREQUAL':([65,66,68,69,72,90,],[-45,86,-46,-48,-45,-47,]),'LESSEQUAL':([65,66,68,69,72,90,],[-45,87,-46,-48,-45,-47,]),'EQUALSEQUALS':([65,66,68,69,72,90,],[-45,88,-46,-48,-45,-47,]),'DISTINT':([65,66,68,69,72,90,],[-45,89,-46,-48,-45,-47,]),}9_lr_action = {}10for _k, _v in _lr_action_items.items():11   for _x,_y in zip(_v[0],_v[1]):12      if not _x in _lr_action:  _lr_action[_x] = {}13      _lr_action[_x][_k] = _y14del _lr_action_items15_lr_goto_items = {'start':([0,],[1,]),'declarations':([9,],[10,]),'declaration':([9,10,],[11,14,]),'codeList':([10,],[13,]),'code':([10,13,],[15,19,]),'idList':([12,],[17,]),'type':([17,],[23,]),'statement':([30,],[32,]),'instructions':([33,],[35,]),'instruction':([33,35,],[36,52,]),'assign':([33,35,],[37,37,]),'print':([33,35,],[38,38,]),'if':([33,35,],[39,39,]),'gotoSt':([33,35,],[40,40,]),'label':([33,35,],[41,41,]),'callFunc':([33,35,],[42,42,]),'retSt':([33,35,],[43,43,]),'access':([33,35,59,],[44,44,74,]),'expression':([47,59,],[64,73,]),'finalExp':([47,58,59,62,80,81,82,83,84,85,86,87,88,89,91,109,117,],[66,71,66,77,95,96,97,98,99,100,101,102,103,104,105,114,118,]),'printValue':([109,],[112,]),}16_lr_goto = {}17for _k, _v in _lr_goto_items.items():18   for _x, _y in zip(_v[0], _v[1]):19       if not _x in _lr_goto: _lr_goto[_x] = {}20       _lr_goto[_x][_k] = _y21del _lr_goto_items22_lr_productions = [23  ("S' -> start","S'",1,None,None,None),24  ('start -> PACKAGE ID SEMICOLON IMPORT LEPAR STRINGLITERAL RIPAR SEMICOLON declarations codeList','start',10,'p_start','optimization.py',148),25  ('declarations -> declarations declaration','declarations',2,'p_declarations','optimization.py',152),26  ('declarations -> declaration','declarations',1,'p_declarations','optimization.py',153),27  ('declaration -> VAR idList LECOR INTLITERAL RICOR FLOAT64 SEMICOLON','declaration',7,'p_declaration','optimization.py',161),28  ('declaration -> VAR idList type SEMICOLON','declaration',4,'p_declaration','optimization.py',162),29  ('type -> INT','type',1,'p_type','optimization.py',169),30  ('type -> FLOAT64','type',1,'p_type','optimization.py',170),31  ('idList -> idList COMMA ID','idList',3,'p_idList','optimization.py',177),32  ('idList -> ID','idList',1,'p_idList','optimization.py',178),33  ('codeList -> codeList code','codeList',2,'p_codeList','optimization.py',185),34  ('codeList -> code','codeList',1,'p_codeList','optimization.py',186),35  ('code -> FUNC ID LEPAR RIPAR statement','code',5,'p_code','optimization.py',194),36  ('statement -> LEKEY instructions RIKEY','statement',3,'p_statement','optimization.py',198),37  ('instructions -> instructions instruction','instructions',2,'p_instructions','optimization.py',202),38  ('instructions -> instruction','instructions',1,'p_instructions','optimization.py',203),39  ('instruction -> assign SEMICOLON','instruction',2,'p_instruction','optimization.py',211),40  ('instruction -> print SEMICOLON','instruction',2,'p_instruction','optimization.py',212),41  ('instruction -> if','instruction',1,'p_instruction','optimization.py',213),42  ('instruction -> gotoSt SEMICOLON','instruction',2,'p_instruction','optimization.py',214),43  ('instruction -> label','instruction',1,'p_instruction','optimization.py',215),44  ('instruction -> callFunc SEMICOLON','instruction',2,'p_instruction','optimization.py',216),45  ('instruction -> retSt SEMICOLON','instruction',2,'p_instruction','optimization.py',217),46  ('retSt -> RETURN','retSt',1,'p_return','optimization.py',221),47  ('callFunc -> ID LEPAR RIPAR','callFunc',3,'p_callFunc','optimization.py',225),48  ('label -> ID COLON','label',2,'p_label','optimization.py',229),49  ('gotoSt -> GOTO ID','gotoSt',2,'p_goto','optimization.py',233),50  ('if -> IF expression LEKEY GOTO ID SEMICOLON RIKEY','if',7,'p_if','optimization.py',237),51  ('assign -> access EQUALS finalExp','assign',3,'p_assign','optimization.py',241),52  ('assign -> ID EQUALS expression','assign',3,'p_assign2','optimization.py',245),53  ('assign -> ID EQUALS access','assign',3,'p_assign2','optimization.py',246),54  ('print -> FMT POINT PRINTF LEPAR STRINGLITERAL COMMA printValue RIPAR','print',8,'p_print','optimization.py',251),55  ('printValue -> INT LEPAR finalExp RIPAR','printValue',4,'p_printValue','optimization.py',255),56  ('printValue -> finalExp','printValue',1,'p_printValue','optimization.py',256),57  ('expression -> finalExp PLUS finalExp','expression',3,'p_expression','optimization.py',264),58  ('expression -> finalExp MINUS finalExp','expression',3,'p_expression','optimization.py',265),59  ('expression -> finalExp TIMES finalExp','expression',3,'p_expression','optimization.py',266),60  ('expression -> finalExp DIV finalExp','expression',3,'p_expression','optimization.py',267),61  ('expression -> finalExp GREATER finalExp','expression',3,'p_expression','optimization.py',268),62  ('expression -> finalExp LESS finalExp','expression',3,'p_expression','optimization.py',269),63  ('expression -> finalExp GREATEREQUAL finalExp','expression',3,'p_expression','optimization.py',270),64  ('expression -> finalExp LESSEQUAL finalExp','expression',3,'p_expression','optimization.py',271),65  ('expression -> finalExp EQUALSEQUALS finalExp','expression',3,'p_expression','optimization.py',272),66  ('expression -> finalExp DISTINT finalExp','expression',3,'p_expression','optimization.py',273),67  ('expression -> finalExp','expression',1,'p_expression','optimization.py',274),68  ('finalExp -> ID','finalExp',1,'p_finalExp','optimization.py',281),69  ('finalExp -> INTLITERAL','finalExp',1,'p_finalExp','optimization.py',282),70  ('finalExp -> MINUS INTLITERAL','finalExp',2,'p_finalExp','optimization.py',283),71  ('finalExp -> FLOATLITERAL','finalExp',1,'p_finalExp','optimization.py',284),72  ('access -> ID LECOR INT LEPAR finalExp RIPAR RICOR','access',7,'p_access','optimization.py',291),73  ('access -> ID LECOR finalExp RICOR','access',4,'p_access','optimization.py',292),...deal_return.py
Source:deal_return.py  
1from __future__ import print_function2import sys3sys.path.extend(['.', '..'])4sys.path.append("../")5from pycparser import parse_file, c_parser, c_generator, c_ast6global_return_sta = {}7global_return_decl={}8def get_last_linenum(c, last_num, inc_linenum):9    if c.coord is not None:10        templine = int(str(c.coord).split(":")[1])11        if templine > last_num:12            last_num = templine13            if len(inc_linenum) == 0:14                inc_linenum.append(last_num)15            else:16                inc_linenum[0] = last_num17    for child in c:18        if child is None:19            continue20        else:21            if child.coord is not None:22                templine = int(str(child.coord).split(":")[1])23                if templine > last_num:24                    last_num = templine25                    if len(inc_linenum) == 0:26                        inc_linenum.append(last_num)27                    else:28                        inc_linenum[0] = last_num29            # print("finally_last_num:" + str(last_num))30            get_last_linenum(child, last_num, inc_linenum)31    # return last_num32def find_return(st, ret_name, gotost, funnamne,pst):33    """34    卿¯ä¸æ¡è¯å¥ï¼å¤åè¯å¥ï¼ç®åè¯å¥ï¼è¯å¥ï¼ä¸é彿¥æ¾ææçreturnè¯å¥ï¼ä¿®æ¹æèµå¼è¯å¥å¹¶æ·»å gotoè¯å¥35    find all return statement and modify it and insert new statement36    :param st: å¤åè¯å¥æè
ç®åè¯å¥å¯¹åºçast37    :param ret_name: è¿åå¼åéå38    :param gotost: gotoè¯å¥å¯¹åºçast39    :return:40    """41    if type(st)==c_ast.Label:42        print("findlabel...")43        print(st)44    if type(st)==c_ast.Compound or type(st)==c_ast.If or type(st)==c_ast.For or type(st)==c_ast.While or type(st)==c_ast.DoWhile \45        or type(st)==c_ast.Switch or type(st)==c_ast.Case or type(st)==c_ast.Default or type(st)==c_ast.Label:46        for child in st:47            find_return(child,ret_name,gotost,funnamne,st)48    elif type(st) == c_ast.Return:49        assign = c_ast.Assignment(op='=', lvalue=c_ast.ID(name=ret_name), rvalue=st.expr)50        if type(st.expr) == c_ast.FuncCall:51            lineinfo = str(st.coord)52            index = lineinfo.index(":")53            rindex = lineinfo.rindex(":")54            linenum = int(lineinfo[index + 1:rindex])55            last_num = -156            inc_linenum = []57            get_last_linenum(st, last_num, inc_linenum)58            global_return_sta[funnamne][linenum] = [assign, inc_linenum[0]]59        if type(pst) == c_ast.Compound:60            pst.block_items.remove(st)61            pst.block_items.append(assign)62            pst.block_items.append(gotost)63        elif type(pst) == c_ast.If and st == pst.iftrue:64            tempst = c_ast.Compound(block_items=[assign, gotost])65            pst.iftrue = tempst66        elif type(pst) == c_ast.If and st == pst.iffalse:67            tempst = c_ast.Compound(block_items=[assign, gotost])68            pst.iffalse = tempst69        elif type(pst) ==c_ast.Label:70            tempst = c_ast.Compound(block_items=[assign, gotost])71            pst.stmt = tempst72        else:73            if type(pst) == c_ast.Case or type(pst) == c_ast.Default:74                pst.stmts.remove(st)75                pst.stmts.append(assign)76                pst.stmts.append(gotost)77    # if type(st) == c_ast.If:78    #     for i in st:79    #         if type(i) == c_ast.Return:80    #             assign = c_ast.Assignment(op='=', lvalue=c_ast.ID(name=ret_name), rvalue=i.expr)81    #             if type(i.expr) == c_ast.FuncCall:82    #                 lineinfo = str(i.coord)83    #                 index = lineinfo.index(":")84    #                 rindex = lineinfo.rindex(":")85    #                 linenum = int(lineinfo[index + 1:rindex])86    #                 last_num = -187    #                 inc_linenum = []88    #                 get_last_linenum(i, last_num, inc_linenum)89    #                 global_return_sta[funnamne][linenum] = [assign, inc_linenum[0]]90    #             if type(st) == c_ast.Compound:91    #                 st.block_items.remove(i)92    #                 st.block_items.append(assign)93    #                 st.block_items.append(gotost)94    #             elif type(st) == c_ast.If and i == st.iftrue:95    #                 tempst = c_ast.Compound(block_items=[assign, gotost])96    #                 st.iftrue = tempst97    #             elif type(st) == c_ast.If and i == st.iffalse:98    #                 tempst = c_ast.Compound(block_items=[assign, gotost])99    #                 st.iffalse = tempst100    #             else:101    #                 if type(st) == c_ast.Case or type(st) == c_ast.Default:102    #                     st.stmts.remove(i)103    #                     st.stmts.append(assign)104    #                     st.stmts.append(gotost)105    #                     continue106    #         else:107    #             find_return(i, ret_name, gotost, funnamne)108    # else:109    #     for child in st:110    #         if type(child) == c_ast.Return:111    #             assign = c_ast.Assignment(op='=', lvalue=c_ast.ID(name=ret_name), rvalue=child.expr)112    #             if type(child.expr) == c_ast.FuncCall:113    #                 lineinfo = str(child.coord)114    #                 index = lineinfo.index(":")115    #                 rindex = lineinfo.rindex(":")116    #                 linenum = int(lineinfo[index + 1:rindex])117    #                 last_num = -1118    #                 inc_linenum = []119    #                 get_last_linenum(child, last_num, inc_linenum)120    #                 global_return_sta[funnamne][linenum] = [assign, inc_linenum[0]]121    #             if type(st) == c_ast.Compound:122    #                 st.block_items.remove(child)123    #                 st.block_items.append(assign)124    #                 st.block_items.append(gotost)125    #             else:126    #                 if type(st) == c_ast.Case or type(st) == c_ast.Default:127    #                     st.stmts.remove(child)128    #                     st.stmts.append(assign)129    #                     st.stmts.append(gotost)130    #                     continue131    #         else:132    #             find_return(child, ret_name, gotost, funnamne)133def deal_return(rast, funnamne, return_val):134    """135    è¿è¡returnå½ä¸åæä½ï¼å°å½æ°ä¸çreturnè¯å¥æ¿æ¢ä¸ºèµå¼è¯å¥ï¼å¹¶æ·»å label136    :param rast: 对åºäºå½æ°çast137    :param funnamne: 彿°å138    :return_val:list,åæ¾ä¸ºæ¯ä¸ªå½æ°å®ä¹çè¿åå¼åé139    :return: æ 140    """141    if funnamne == "ssl_add_clienthello_tlsext":142        print("funast....")143        print(rast)144    # rast is a funast145    print("return_name....")146    ret_name = funnamne + "_return_"147    labelname = funnamne + "_label_"148    gotost = c_ast.Goto(name=labelname)149    returntype = rast.decl.type.type150    if type(returntype) == c_ast.TypeDecl:151        returnname = returntype.type.names[0]152        temptype = c_ast.TypeDecl(declname=ret_name, quals=[], type=c_ast.IdentifierType(names=[returnname]))153    elif type(returntype) == c_ast.PtrDecl:154        returnname = returntype.type.type.names[0]155        temptype = c_ast.PtrDecl(quals=[], type=c_ast.TypeDecl(declname=ret_name, quals=[],156                                                               type=c_ast.IdentifierType(names=[returnname])))157    else:158        print(rast.decl)159        returnname = returntype.type.type.names[0]160    if returnname == 'void':161        pass162    else:163        global_return_sta[funnamne] = {}164        returnsta = c_ast.Decl(name=ret_name, quals=[], storage=[], funcspec=[], type=temptype, init=None,165                               bitsize=None)166        # rast.body.block_items.insert(0, returnsta)167        global_return_decl[funnamne]=returnsta168        return_val.append(returnsta)169        # deal_last_return(rast,ret_name)170        if type(rast.body.block_items[-1])==c_ast.Label and type(rast.body.block_items[-1].stmt)==c_ast.Return:171            find_return(rast.body.block_items[-1],ret_name,gotost,funnamne,None)172        for s in rast.body.block_items:173            if type(s)==c_ast.Label:174                print("labal....")175                print(s)176            if type(s) == c_ast.Return:177                assign = c_ast.Assignment(op='=', lvalue=c_ast.ID(name=ret_name), rvalue=s.expr)178                if type(s.expr) == c_ast.FuncCall:179                    lineinfo = str(s.coord)180                    index = lineinfo.index(":")181                    rindex = lineinfo.rindex(":")182                    linenum = int(lineinfo[index + 1:rindex])183                    last_num = -1184                    inc_linenum = []185                    get_last_linenum(s, last_num, inc_linenum)186                    global_return_sta[funnamne][linenum] = [assign, inc_linenum[0]]187                index=rast.body.block_items.index(s)188                rast.body.block_items.remove(s)189                rast.body.block_items.insert(index,assign)190                index=index+1191                rast.body.block_items.insert(index,gotost)192            else:193                find_return(s, ret_name, gotost, funnamne,None)194    """æ·»å label"""195    labelname = funnamne + "_label_"196    labelst = c_ast.Label(name=labelname, stmt=c_ast.FuncCall(name=c_ast.ID(name="printf"), args=c_ast.ExprList(197        exprs=[c_ast.Constant(type="string", value='"##\\n"')])))198    rast.body.block_items.append(labelst)...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
