コード例 #1
0
ファイル: DeltaVisitor.cs プロジェクト: migueladanrm/Volta
        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);
        }
コード例 #2
0
        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> >());
        }