classDiagram
class AS {
-Character value
+toString() String
+AS()
+getValue() Character
+eDeepClone() ExprItem
}
class ExprItem {
<<interface>>
}
class ExprNode {
-int exp
-ExprItem item
-ExprNode left
-ExprNode right
-ExprNode parent
-Character leadingAS
+switchAS() void
+toString() String
+fDeepClone() Factor
+simplified() String
+powerSpan() ExprNode
+treeToList() ArrayList~Term~
+multN() ExprNode
+ExprNode()
+listToTree() ExprNode
+printTree() void
-inOrder() void
}
class Factor {
<<interface>>
}
class Number {
+Number()
+fDeepClone() Factor
}
class PowerF {
-Integer exp
-Character base
+getExp() Integer
+toString() String
+fDeepClone() Factor
+PowerF()
}
class SimpTerm {
-Integer xnum
-Integer ynum
-Integer znum
-BigInteger coef
+SimpTerm()
+toString() String
+coefAdd() void
+equals() boolean
-putPF() void
}
class Term {
-ExprNode dst
-Term powerFSum
-Number numberSum
-Character leadingAS
+switchAS() void
+toString() String
+eDeepClone() ExprItem
+Term()
-sumAdd() void
+addFactor() void
}
class Lexer {
-int pos
-String input
-String curToken
-Character tempAS
+next() void
+getExp() int
+peek() String
+hasExp() boolean
+getNumber() String
+getPowerF() PowerF
+Lexer()
}
class Parser {
-Lexer lexer
+parseTerm() Term
+Parser()
+parseFactor() Factor
+parseExpr() ExprNode
-getLeadingAS() Character
}
class ArrayList~Factor~
Parser *-- Lexer
ExprNode ..|> Factor
Number ..|> Factor
PowerF ..|> Factor
Term ..|> ExprItem
AS ..|> ExprItem
SimpTerm --* ExprNode
ArrayList~Factor~ <|-- Term
ExprItem --* ExprNode
Factor --* Term