parseExpr method

  1. @override
ASTNode parseExpr()
override

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;
}