Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 private void Visit(PreIncrementNode node) => Visit(node.Variable);