classDiagram
class AddNode {
-int exp
+equals() boolean
+powerExpand() void
+deepClone() AddNode
+rmBracket() ExprItem
+collectSimpTerms() void
+nodeChange() AddNode
}
class ExprItem {
<<interface>>
deepclone() ExprItem
}
class ExprNode {
<<abstract>>
-SimpTerms simpTerms
-ArrayList~ExprItem~ children
+toString() String
#getSimpTerms() SimpTerms
+collectSimpTerms()* void
+addChild() void
#getChildren() ArrayList~ExprItem~
+setSimpTerms() void
}
class Func {
-AddNode template
-ArrayList~Character~ virSeq
+funcToAddNode() AddNode
-createValueMap() HashMap~Character-ExprItem~
}
class MultNode {
-SimpTerms tmpExpr
-SimpTerm tmpSimpTerm
+switchAS() void
+collectSimpTerms() void
+equals() boolean
+addPF() void
+simpTermsAdd() void
+addNumber() void
}
class NumberNode {
-BigInteger value
+toString() String
+deepClone() NumberNode
+equals() boolean
}
class PowerFNode {
-Integer exp
-Character base
+toString() String
+deepClone() ExprItem
+equals() boolean
}
class TrigFNodes{
+deepClone() TrigFNodes
+equals() boolean
+add() boolean
+addAll() boolean
}
class SimpTerm {
-Integer xnum
-Integer ynum
-Integer znum
-BigInteger coef
-class TrigFNodes
-TrigFNodes trigFNodes
+isZero() boolean
+isConst() boolean
+toString() String
+coefNegated() void
+deepClone() SimpTerm
+rmBracket() ExprItem
+coefIsPositive() boolean
+coefAdd() void
+putPF() void
+mult() SimpTerm
+compareTo() int
+addTrig() void
+equals() boolean
+coefMult() void
+varEquals() boolean
-trigAppended() void
+factorExchange() MultNode
-pfExchange() void
}
class SimpTerms {
+toString() String
+deepClone() SimpTerms
+add() boolean
+mult() SimpTerms
+equals() boolean
+addAll() boolean
}
class TrigFNode {
-Integer exp
-boolean trig
-ExprItem factor
+isSin() boolean
+toString() String
+mult() void
+equals() boolean
+varEqual() boolean
+factorExchange() TrigNode
+deepClone() ExprItem
}
class Lexer {
-int pos
-String input
-String curToken
+next() void
+getExp() int
+peek() String
+hasExp() boolean
+getNumber() String
+getPowerF() PowerFNode
}
class Parser {
-Lexer lexer
-HashMap~Character-Func~ funcMap
+parseExpr() AddNode
+parseTerm() MultNode
+parseFactor() ExprItem
-getLeadingAS() Character
+parseFuncDef() void
}
Parser *-- Lexer
ExprNode ..|> ExprItem
NumberNode ..|> ExprItem
PowerFNode ..|> ExprItem
TrigFNode ..|> ExprItem
AddNode --|> ExprNode
MultNode --|> ExprNode
SimpTerm --o SimpTerms
SimpTerm --> MultNode
SimpTerms --o ExprNode
SimpTerms --> MultNode
Func <--> AddNode
TrigFNode --o TrigFNodes