|
- class Function:
- def __init__(self):
- self.isBody = False
- self.isComplete = False
- self.isSignature = False
- self.name = None
- self.parameters = []
- self.returnType = None
- self.statements = []
-
- def parseLine(self, ln):
- parts = ln.split(" ")
- count = len(parts)
- lastPart = parts[count - 1]
-
- # Complete.
- if (
- self.isBody and
- ln.startswith("#}")
- ):
- self.isComplete = True
-
- # Statements.
- if (
- self.isBody and
- not ln.startswith("#}")
- ):
- self.statements.append(ln)
-
- # Parameters.
- if (
- self.isSignature and
- not ln.endswith(":")
- ):
- p = ln
- # Remove comma if present.
- if p.endswith(","):
- p = p[:-1]
- self.parameters.append(p)
-
- # Beginning of signature.
- if (
- self.returnType is None and
- self.name is None
- and lastPart.endswith("(")
- ):
- self.isSignature = True
-
- # Return type.
- if (
- self.isSignature and
- ln.startswith(") -> ") and
- ln.endswith(":")
- ):
- self.returnType = ln[len(") -> "):-len(":")]
-
- # End of parameters/signature.
- if (
- self.isSignature and
- ln.startswith(") -> ") and
- ln.endswith(":")
- ):
- self.isSignature = False
- self.isBody = True
-
- # Name.
- if (
- self.isSignature and
- lastPart.endswith("(")
- ):
- self.name = lastPart[:-1]
-
- def __repr__(self):
- return self.__str__()
- def __str__(self):
- return f"Function(name/returnT/parameters/statements: '{self.name}'/'{self.returnType}'/'{self.parameters}'/'{self.statements}')"
|