private object Visit(PreIncrementNode node) { if (node.Variable == null) { ReportError(new Exception("You can only apply inc/dec operations (++,--) on variables!")); return(null); } if (!GlobalVariables.ContainsKey(node.Variable.Name)) { ReportError(new Exception($"Variable {node.Variable.Name} has not been declared!")); return(null); } dynamic variable = GlobalVariables[node.Variable.Name]; if (!Tokens.IsNumberType(variable.Type)) { ReportError(new Exception("You can only apply inc/dec operations (++,--) to numeric types!")); return(null); } GlobalVariables[node.Variable.Name].Value = variable.Value + 1; return(GlobalVariables[node.Variable.Name].Value); }
private void Visit(PreIncrementNode node) => Visit(node.Variable);