Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- (program (declarations (declaration INT (idlist x , y)) ; (declaration STRING (i
- dlist tira)) ;) (statements (statement x = (expression (term (factor 1)))) ; (st
- atement (expression (term (factor ( (expression (term (factor 3) * (factor 5)))
- )))))) <EOF>)
- Statements (Con Declaraciones)
- -Declaraciones
- --Declaracion de Enteros
- ---INT
- ---Identificadores
- ----'x'
- ----'y'
- --Declaracion de Strings
- ---STRING
- ---Identificadores
- ----'tira'
- -Statements
- --Asignaciones
- ---'x'
- ---=
- ---Expression
- ----Termino
- -----Factor
- ------Num
- -------1
- --Expresion
- ---Termino
- ----Factor
- -----ExprFactASTContext
- ------Termino
- -------Factor
- --------Num
- ---------3
- -------*
- --------Num
- ---------5
- */
- using Antlr4.Runtime.Misc;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ANTRL4_Practice_1
- {
- class MiVisitor : Ejemplo1ParserBaseVisitor<Object>
- {
- int cont = 0;
- private void printtab()
- {
- string result = new String('-', cont);
- Console.Write(result);
- }
- /**************************************************************************************************************/
- public override Object VisitConDeclAST([NotNull] Ejemplo1Parser.ConDeclASTContext context)
- { // context es el nodo de tipo ConDeclASTContext
- //Console.WriteLine(context.GetType().Name); // ConDeclASTContext
- Console.WriteLine("Statements (Con Declaraciones)");
- Visit(context.declarations());
- cont--;
- Visit(context.statements());
- cont--;
- return null;
- }
- public override Object VisitSinDeclAST([NotNull] Ejemplo1Parser.SinDeclASTContext context)
- {
- cont++;printtab();
- //Console.WriteLine(context.GetType().Name); // SinDeclASTContext
- Console.WriteLine("Statement (Sin Declaraciones)");
- Visit(context.statements());
- cont--;
- return null;
- }
- // Este es el que tiene el bucle correcto que hay que hacerlo igual en los demas
- public override Object VisitDeclsAST([NotNull] Ejemplo1Parser.DeclsASTContext context)
- {
- cont++;printtab();
- //Console.WriteLine(context.GetType().Name); // DeclsASTContext
- Console.WriteLine("Declaraciones");
- //Console.WriteLine(context.nodo_pycoma.Text);
- Visit(context.declaration(0)); // Accede al primer elemento de declarations
- for (int i = 1; i <= context.declaration().Count - 1; i++)
- {
- //Console.WriteLine(context.nodo_pycoma.Text);
- Visit(context.declaration(i));
- }
- cont--;
- // context.declaration(0); // Accede al primer elemento de declarations
- return null;
- }
- public override Object VisitIntDeclAST([NotNull] Ejemplo1Parser.IntDeclASTContext context)
- {
- /*
- declaration : nodo_int=INT idlist #intDeclAST
- | nodo_string=STRING idlist #strDeclAST
- ;
- */
- cont++; printtab();
- //Console.WriteLine(context.GetType().Name); // IntDeclASTContext
- Console.WriteLine("Declaracion de Enteros");
- cont++; printtab();
- Console.WriteLine(context.nodo_int.Text);
- Visit(context.idlist());
- cont--;
- return null;
- }
- public override Object VisitStrDeclAST([NotNull] Ejemplo1Parser.StrDeclASTContext context)
- {
- cont++; printtab();
- // Console.WriteLine(context.GetType().Name); // StrDeclASTContext
- Console.WriteLine("Declaracion de Strings");
- cont++; printtab();
- Console.WriteLine(context.nodo_string.Text);
- Visit(context.idlist());
- cont--;
- return null;
- }
- public override Object VisitStatAST([NotNull] Ejemplo1Parser.StatASTContext context)
- {
- /*
- statements : statement (nodo_pycoma=PyCOMA statement)* #statAST
- ;
- */
- cont++; printtab();
- //Console.WriteLine(context.GetType().Name); // StatASTContext
- Console.WriteLine("Statements");
- //Console.WriteLine(context.nodo_pycoma.Text);
- Visit(context.statement(0));
- for (int i = 1; i <= context.statement().Count - 1; i++)
- {
- Visit(context.statement(i));
- }
- cont--;
- return null;
- }
- public override Object VisitAssignStatAST([NotNull] Ejemplo1Parser.AssignStatASTContext context)
- {
- cont++; printtab();
- // Console.WriteLine(context.GetType().Name); // AssignStatASTContext
- Console.WriteLine("Asignaciones");
- cont++; printtab();
- Console.WriteLine("'" + context.nodo_id.Text + "'");
- printtab();
- Console.WriteLine(context.nodo_equals.Text);
- printtab();
- Console.WriteLine("Expression");
- Visit(context.expression());
- cont--; cont--;
- return null;
- }
- public override Object VisitExprStatAST([NotNull] Ejemplo1Parser.ExprStatASTContext context)
- { // COntext es el nodo, es un nodo de tipo ExprStatASTContext
- cont++; printtab();
- //Console.WriteLine(context.GetType().Name); // ExprStatASTContext
- Console.WriteLine("Expresion");
- //print(contenedor, context.GetType().Name, true);
- Visit(context.expression());
- cont--;
- return null;
- }
- public override Object VisitEpsStatAST([NotNull] Ejemplo1Parser.EpsStatASTContext context)
- {
- /*
- statement : ID EQUALS expression #assignStatAST
- | expression #exprStatAST
- | #epsStatAST
- ;
- */
- Console.WriteLine(context.GetType().Name); // EpsStatASTContext
- Console.WriteLine("Epsilon");
- return null;
- }
- public override Object VisitTermStatAST([NotNull] Ejemplo1Parser.TermStatASTContext context)
- {
- cont++; printtab();
- //Console.WriteLine(context.GetType().Name); // TermStatASTContext
- Console.WriteLine("Termino");
- Visit(context.term(0));
- for (int i = 1; i <= context.term().Count - 1; i++)
- {
- printtab();
- Console.WriteLine(context.nodo_add.Text);
- Visit(context.term(i));
- }
- cont--;
- return null;
- }
- public override Object VisitTermsAST([NotNull] Ejemplo1Parser.TermsASTContext context)
- {
- cont++; printtab();
- //Console.WriteLine(context.GetType().Name); // TermsASTContext
- Console.WriteLine("Factor");
- //printtab(contenedor, context.GetType().Name, true);
- // printtab();
- //Console.WriteLine(context.factor(0).GetText());
- Visit(context.factor(0));
- for (int i = 1; i <= context.factor().Count - 1; i++)
- {
- printtab();
- //Console.WriteLine(context.factor(i));
- Console.WriteLine(context.nodo_mul.Text);
- Visit(context.factor(i));
- }
- cont--;
- return null;
- }
- public override Object VisitIdFactAST([NotNull] Ejemplo1Parser.IdFactASTContext context)
- {
- cont++; printtab();
- Console.WriteLine(context.GetType().Name); // IdFactASTContext
- Console.WriteLine(context.nodo_id.Text);
- cont--;
- return null;
- }
- public override Object VisitNumFactAST([NotNull] Ejemplo1Parser.NumFactASTContext context)
- {
- cont++; printtab();
- //Console.WriteLine(context.GetType().Name); // IdFactASTContext
- Console.WriteLine("Num");
- cont++; printtab();
- Console.WriteLine(context.nodo_num.Text);
- cont--; cont--;
- return null;
- }
- public override Object VisitStrFactAST([NotNull] Ejemplo1Parser.StrFactASTContext context)
- {
- cont++; printtab();
- Console.WriteLine(context.GetType().Name);
- Console.WriteLine(context.nodo_str.Text);
- cont--;
- return null;
- }
- public override Object VisitIdlistsAST([NotNull] Ejemplo1Parser.IdlistsASTContext context)
- {
- /*
- idlist : nodo_id=ID (nodo_pycoma=PyCOMA ID)* #idlistsAST
- ;
- */
- printtab();
- //Console.WriteLine(context.GetType().Name); // IdlistsASTContext
- Console.WriteLine("Identificadores");
- Visit(context.ID(0));
- cont++;
- printtab();
- Console.WriteLine("'" + context.ID(0).Symbol.Text + "'");
- for (int i = 1; i <= context.ID().Count - 1; i++)
- {
- printtab();
- Console.WriteLine("'" + context.ID(i).Symbol.Text + "'");
- Visit(context.ID(i));
- cont--;
- }
- cont--;
- return null;
- }
- public override Object VisitExprFactAST([NotNull] Ejemplo1Parser.ExprFactASTContext context)
- {
- cont++; printtab();
- Console.WriteLine(context.GetType().Name);
- Visit(context.expression());
- cont--;
- return null;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement