public object VisitAddSubStatementAST([NotNull] AddSubStatementASTContext context) { string scope = Visit(context.designator()) as string; string ident = context.designator().GetText(); AddLine($"LOAD_{scope} {ident}"); AddLine("LOAD_CONST 1"); if (context.ADDADD() != null) { AddLine($"BINARY_ADD"); } else { AddLine($"BINARY_SUBSTRACT"); } AddLine($"STORE_{scope} {ident}"); WhiteLine(); return(null); }
public object VisitAddSubStatementAST([NotNull] AddSubStatementASTContext context) { Identifier identifier = Visit(context.designator()) as Identifier; if (identifier != null) { if (identifier is VarIdentifier) { if (identifier.Type != "int") { InsertError(context.Start, "No se puede aplicar la operación a identificadores que no sean de tipo 'int', y el tipo de la variable es " + identifier.Type); } } else { InsertError(context.Start, "No se puede aplicar la operación a identificadores de arreglos, métodos, constantes o clases. Solo variables de tipo int"); } } return(new List <Pair <string, IToken> >()); }