def p_fDef(p): """fDef : DEF NAME defTuple ARROW EXCLAMATION NAME block""" p[0] = Node("Fdef") p[0].func = p[2] p[0].args = p[3] p[0].rettype = p[6] p[0].body = p[7]
def p_for3(p): """for : FOR NAME EQ range block """ p[0] = Node("For") p[0].iter = p[2] p[0].range = p[4] p[0].body = p[5]
def p_for1(p): """for : FOR NAME IN load block """ p[0] = Node("ForEach") p[0].iter = p[2] p[0].list = p[4] p[0].body = p[5]
def p_elif2(p): '''elif : ELIF expr block elif | ELIF expr block else ''' p[0] =Node('IF') p[0].cond = p[2] p[0].body = p[3].body p[0].orelse = p[4]
def p_if2(p): '''if : IF expr block elif | IF expr block else ''' p[0] = Node('IF') p[0].cond = p[1] p[0].body=p[3].body p[0].orelse = p[4]
def p_foreach(p): '''foreach : FOR IDENTIFIER IN expr block | FOR vdef IN expr block ''' p[0] = Node('Foreach') p[0].iter = p[2] p[0].target = p[4] p[0].body = p[5].body
def p_for2(p): """for : FOR nameList IN load block """ x = Node("Tuple") p[0] = Node("ForEach") p[0].iter = x p[0].list = p[4] p[0].body = p[5] p[0].iter.elems = p[2]
def p_fdef(p): '''fdef : DEF IDENTIFIER tuple block ''' p[0] = Node('FuncDef') p[0].name = p[2].value p[0].args = Node('Arguments') p[0].args.args = p[3].elems p[0].body = p[4].body
def p_for(p): '''for : FOR IDENTIFIER EQ expr COMMA expr block | FOR vdef EQ expr COMMA expr block ''' p[0] = Node('FOR') p[0].iter = p[2] p[0].start = p[4] p[0].step = 1 p[0].stop = p[6] p[0].body = p[7].body
def p_program(p): """program : statements EOF""" p[0] = Node("Program") p[0].body = p[1]
def p_if1(p): '''if : IF expr block ''' p[0]=Node('IF') p[0].cond = p[2] p[0].body = p[3].body
def p_elif1(p): '''elif : ELIF expr block ''' p[0] =Node('IF') p[0].cond = p[2] p[0].body = p[3].body
def p_program(p): '''program : statements EOF ''' p[0]=Node('program') p[0].body = p[1].body
def p_while(p): """while : WHILE LPAREN expr RPAREN block""" p[0] = Node("While") p[0].cond = p[3] p[0].body = p[5]
def p_while1(p): '''while : WHILE expr block ''' p[0] =Node('WHILE') p[0].cond = p[2] p[0].body=p[3].body
def p_if(p): """if : IF expr block""" p[0] = Node("If") p[0].cond = p[2] p[0].body = p[3]
def p_statements1(p): '''statements : statement ''' p[0]= Node('STATEMENTS') p[0].body=[p[1]]