private Expression BindNameExpression(NameExpressionNode node) { VariableExpression variableExpression = null; var name = node.Identifier.Text; if (Scope.TryLookupVariable(name, out var variable)) { variableExpression = new VariableExpression(variable); } if (variableExpression == null || node.Identifier.IsForged) { diagnostics.ReportUndefinedVariable(node.Identifier, name); return(new InvalidExpression(variableExpression)); } return(variableExpression); }
private void Write(NameExpressionNode exp) { _code.Append(exp.Value); }
internal LabelStatementNode(NameExpressionNode label) => Label = label ?? throw new ArgumentNullException(nameof(label));
internal GotoStatementNode(Token gotoToken, NameExpressionNode label) { GotoToken = gotoToken ?? throw new ArgumentNullException(nameof(gotoToken)); Label = label ?? throw new ArgumentNullException(nameof(label)); }