public int MultDiv(LexemeAnalyzer lexemeAnalyzer) { int result = Factor(lexemeAnalyzer); while (true) { Lexeme lexeme = lexemeAnalyzer.Next(); switch (lexeme.GetLexemeType()) { case LexemeType.Mul: result *= Factor(lexemeAnalyzer); break; case LexemeType.Div: result /= Factor(lexemeAnalyzer); break; case LexemeType.End: case LexemeType.RightBracket: case LexemeType.Plus: case LexemeType.Minus: lexemeAnalyzer.Back(); return(result); default: throw new PositionLexemeException(lexeme.GetValue().ToString()); } } }
public int Calc() { Lexeme lexeme = lexemeAnalyzer.Next(); if (lexeme.GetLexemeType() == LexemeType.End) { throw new ParsingException("empty expression"); } lexemeAnalyzer.Back(); return(PlusMinus(lexemeAnalyzer)); }