parseTerm method
Implementation
Term parseTerm(Lexer lexer, bool first) {
final Term res = Term();
if (first && lexer.type == TokenType.none) {
res.comp = Factor(1);
} else if (lexer.type == TokenType.solidus) {
res.op = Operator.division;
lexer.consume();
res.term = parseTerm(lexer, false);
} else {
if (lexer.type == TokenType.annotation) {
res.comp = Factor(1);
lexer.consume();
} else {
res.comp = parseComp(lexer);
}
if (lexer.type != TokenType.none && lexer.type != TokenType.close) {
if (lexer.type == TokenType.solidus) {
res.op = Operator.division;
lexer.consume();
} else if (lexer.type == TokenType.period) {
res.op = Operator.multiplication;
lexer.consume();
} else if (lexer.type == TokenType.annotation) {
res.op = Operator.multiplication;
} else {
throw UcumException("Expected '/' or '.'");
}
res.term = parseTerm(lexer, false);
}
}
return res;
}