parseExpr method
Recursive descent parsing
Assignment operator = precedence 1, associativity right
Implementation
@override
ASTNode parseExpr() {
ASTNode left = _parseTernaryExpr();
if (lexer.lexicon.assignments.contains(curTok.lexeme)) {
if (!_isLegalLeftValue) {
final err = HTError.invalidLeftValue(
filename: currrentFileName,
line: left.line,
column: left.column,
offset: left.offset,
length: left.length);
errors.add(err);
}
final op = advance();
final right = parseExpr();
left = AssignExpr(left, op.lexeme, right,
source: currentSource,
line: left.line,
column: left.column,
offset: left.offset,
length: curTok.offset - left.offset);
}
handleTrailing(left);
return left;
}