def Identifiers(self, p):
     if len(p) == 0:
         return None
     if len(p) == 4:
         return Statement.IdentifierList(p[1], Expression.IdentifierExpression(p[2]), p[3])
     return Statement.IdentifierList(p[1], Expression.IdentifierExpression(p[2]))
 def Stmt(self, p):
     return Statement.DefinitionStatement(p[0], Expression.IdentifierExpression(p[1]))
 def FormalList(self, p):
     if len(p) == 0:
         return None
     if len(p) == 3:
         return Statement.IdentifierList(p[0], Expression.IdentifierExpression(p[1]), p[2])
     return Statement.IdentifierList(p[0], Expression.IdentifierExpression(p[1]))
 def Decl(self, p):
     return Statement.FunctionDeclaration(p[0], Expression.IdentifierExpression(p[1]), p[3], p[6])
 def Expr(self, p):
     return Expression.IdentifierExpression(p[0])
 def Expr(self, p):
     return Expression.FunctionCallExpression(Expression.IdentifierExpression(p[0]), Expression.BlockExpression(p[2]))
 def Expr(self, p):
     return Statement.AssignmentStatement(Expression.IdentifierExpression(p[0]), p[2])