private void Visit(AST_Node expression) { if (expression is BinaryExpression operatorExpression) { EvaluateBinaryExpression(operatorExpression); return; } else if (expression is UnaryExpression unaryExpression) { EvaluateUnaryExpression(unaryExpression); return; } else if (expression is LiteralExpression literalExpression) { EvaluateLiteralExpression(literalExpression); return; } else if (expression is IdentifierExpression identifierExpression) { EvaluateIdentifierExpression(identifierExpression); return; } _printer.Print(Run.Yellow($"???-{expression.ID}")); }
public static void DFS(AST_Node a, int level = 0) { if (a == null) { return; } for (int i = 0; i < level; i++) { Console.Write("-"); } Console.Write(":"); Console.WriteLine("< {0} {1}", a.GetType().ToString(), a.ToString()); foreach (var item in a.Children) { DFS(item, level + 1); } for (int i = 0; i < level; i++) { Console.Write("-"); } Console.Write(":"); Console.WriteLine("> {0} {1}", a.GetType().ToString(), a.ToString()); }
public string Visit(AST_Node node) { foreach (var item in node.Children) { item?.Visit(this); } return(""); }
public bool Visit(AST_Node node) { throw new NotImplementedException(); }
public AST_GlobalVariable(AST_Node parent, string input, int charIndex) : base(parent, input, charIndex) { }
public Builder_AST(string translatedInput) { head = new AST_Program(translatedInput, 0); }
public void Print(AST_Node expression) { Visit(expression); }
public AST_Logic(AST_Node parent, string input, int charIndex) : base(parent, input, charIndex) { }
Base_Object_Value IASTVisitor <Base_Object_Value> .Visit(AST_Node node) { throw new NotImplementedException(); }
public Base_Object_Value Visit(AST_Node node) { throw new Exception("Alguien no sabe como llamarse con el tipo correcto " + node.GetType().ToString()); }
//Use only when creating global variables in low-level languages public AST_Variable(AST_Node parent, string type, string data) : base(parent, "int32 a", -1) { this.parent = parent; this.dataType = CodeBlocks.ParameterType.GetParameterType(type); this.data = data; }
//Not used public void SetBase(AST_Node newBase) { exp_Base = newBase; }