Advertisement
gmendezm

Primer intento arbol

Aug 30th, 2014
312
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 10.44 KB | None | 0 0
  1. /*
  2. (program (declarations (declaration INT (idlist x , y)) ; (declaration STRING (i
  3. dlist tira)) ;) (statements (statement x = (expression (term (factor 1)))) ; (st
  4. atement (expression (term (factor ( (expression (term (factor 3) * (factor 5)))
  5. )))))) <EOF>)
  6. Statements (Con Declaraciones)
  7. -Declaraciones
  8. --Declaracion de Enteros
  9. ---INT
  10. ---Identificadores
  11. ----'x'
  12. ----'y'
  13. --Declaracion de Strings
  14. ---STRING
  15. ---Identificadores
  16. ----'tira'
  17. -Statements
  18. --Asignaciones
  19. ---'x'
  20. ---=
  21. ---Expression
  22. ----Termino
  23. -----Factor
  24. ------Num
  25. -------1
  26. --Expresion
  27. ---Termino
  28. ----Factor
  29. -----ExprFactASTContext
  30. ------Termino
  31. -------Factor
  32. --------Num
  33. ---------3
  34. -------*
  35. --------Num
  36. ---------5
  37.  
  38. */
  39.  
  40.  
  41.  
  42.  
  43. using Antlr4.Runtime.Misc;
  44. using System;
  45. using System.Collections.Generic;
  46. using System.Linq;
  47. using System.Text;
  48. using System.Threading.Tasks;
  49.  
  50. namespace ANTRL4_Practice_1
  51. {
  52.     class MiVisitor : Ejemplo1ParserBaseVisitor<Object>
  53.     {
  54.  
  55.         int cont = 0;
  56.  
  57.         private void printtab()
  58.         {
  59.             string result = new String('-', cont);
  60.             Console.Write(result);
  61.         }
  62.  
  63.         /**************************************************************************************************************/
  64.  
  65.  
  66.         public override Object VisitConDeclAST([NotNull] Ejemplo1Parser.ConDeclASTContext context)
  67.         { // context es el nodo de tipo  ConDeclASTContext
  68.  
  69.  
  70.             //Console.WriteLine(context.GetType().Name); // ConDeclASTContext
  71.             Console.WriteLine("Statements (Con Declaraciones)");
  72.  
  73.  
  74.             Visit(context.declarations());
  75.             cont--;
  76.             Visit(context.statements());
  77.             cont--;
  78.  
  79.             return null;
  80.  
  81.         }
  82.        
  83.         public override Object VisitSinDeclAST([NotNull] Ejemplo1Parser.SinDeclASTContext context)
  84.         {
  85.  
  86.             cont++;printtab();
  87.             //Console.WriteLine(context.GetType().Name); // SinDeclASTContext
  88.             Console.WriteLine("Statement (Sin Declaraciones)");
  89.  
  90.             Visit(context.statements());
  91.             cont--;
  92.  
  93.             return null;
  94.         }
  95.        
  96.         // Este es el que tiene el bucle correcto que hay que hacerlo igual en los demas
  97.         public override Object VisitDeclsAST([NotNull] Ejemplo1Parser.DeclsASTContext context)
  98.         {
  99.             cont++;printtab();
  100.             //Console.WriteLine(context.GetType().Name); // DeclsASTContext
  101.             Console.WriteLine("Declaraciones");
  102.          
  103.             //Console.WriteLine(context.nodo_pycoma.Text);
  104.             Visit(context.declaration(0)); // Accede al primer elemento de declarations
  105.  
  106.             for (int i = 1; i <= context.declaration().Count - 1; i++)
  107.             {
  108.              
  109.                 //Console.WriteLine(context.nodo_pycoma.Text);
  110.                Visit(context.declaration(i));
  111.                
  112.  
  113.             }
  114.             cont--;
  115.  
  116.            
  117.  
  118.  
  119.             //  context.declaration(0); // Accede al primer elemento de declarations
  120.             return null;
  121.  
  122.         }
  123.        
  124.         public override Object VisitIntDeclAST([NotNull] Ejemplo1Parser.IntDeclASTContext context)
  125.         {
  126.  
  127.             /*
  128.              
  129.             declaration : nodo_int=INT idlist       #intDeclAST
  130.             | nodo_string=STRING idlist #strDeclAST
  131.             ;
  132.              
  133.              */
  134.             cont++; printtab();
  135.             //Console.WriteLine(context.GetType().Name); // IntDeclASTContext
  136.             Console.WriteLine("Declaracion de Enteros");
  137.  
  138.  
  139.             cont++; printtab();
  140.             Console.WriteLine(context.nodo_int.Text);
  141.             Visit(context.idlist());
  142.             cont--;
  143.  
  144.            
  145.             return null;
  146.  
  147.         }
  148.        
  149.         public override Object VisitStrDeclAST([NotNull] Ejemplo1Parser.StrDeclASTContext context)
  150.         {
  151.  
  152.             cont++; printtab();
  153.            // Console.WriteLine(context.GetType().Name); // StrDeclASTContext
  154.  
  155.             Console.WriteLine("Declaracion de Strings");
  156.  
  157.             cont++; printtab();
  158.             Console.WriteLine(context.nodo_string.Text);
  159.             Visit(context.idlist());
  160.            
  161.             cont--;
  162.  
  163.            
  164.            
  165.             return null;
  166.  
  167.         }
  168.  
  169.  
  170.         public override Object VisitStatAST([NotNull] Ejemplo1Parser.StatASTContext context)
  171.         {
  172.  
  173.             /*
  174.  
  175.              statements : statement (nodo_pycoma=PyCOMA statement)* #statAST
  176.             ;
  177.              
  178.              */
  179.             cont++; printtab();
  180.             //Console.WriteLine(context.GetType().Name); // StatASTContext
  181.             Console.WriteLine("Statements");
  182.  
  183.  
  184.             //Console.WriteLine(context.nodo_pycoma.Text);
  185.             Visit(context.statement(0));
  186.  
  187.             for (int i = 1; i <= context.statement().Count - 1; i++)
  188.             {
  189.  
  190.                 Visit(context.statement(i));
  191.             }
  192.             cont--;
  193.             return null;
  194.            
  195.  
  196.         }
  197.  
  198.  
  199.         public override Object VisitAssignStatAST([NotNull] Ejemplo1Parser.AssignStatASTContext context)
  200.         {
  201.  
  202.             cont++; printtab();
  203.            // Console.WriteLine(context.GetType().Name); // AssignStatASTContext
  204.             Console.WriteLine("Asignaciones");
  205.  
  206.             cont++; printtab();
  207.             Console.WriteLine("'" + context.nodo_id.Text + "'");
  208.             printtab();
  209.             Console.WriteLine(context.nodo_equals.Text);
  210.             printtab();
  211.             Console.WriteLine("Expression");
  212.             Visit(context.expression());
  213.             cont--; cont--;
  214.             return null;
  215.  
  216.         }
  217.        
  218.         public override Object VisitExprStatAST([NotNull] Ejemplo1Parser.ExprStatASTContext context)
  219.         { // COntext es el nodo, es un nodo de tipo ExprStatASTContext
  220.  
  221.             cont++; printtab();
  222.             //Console.WriteLine(context.GetType().Name); // ExprStatASTContext
  223.  
  224.             Console.WriteLine("Expresion");
  225.  
  226.             //print(contenedor, context.GetType().Name, true);
  227.            
  228.          
  229.             Visit(context.expression());
  230.  
  231.             cont--;
  232.  
  233.             return null;
  234.  
  235.         }
  236.  
  237.  
  238.         public override Object VisitEpsStatAST([NotNull] Ejemplo1Parser.EpsStatASTContext context)
  239.         {
  240.  
  241.             /*
  242.              
  243.              statement  : ID EQUALS expression  #assignStatAST
  244.             | expression            #exprStatAST
  245.             |                       #epsStatAST
  246.             ;
  247.              
  248.              */
  249.  
  250.             Console.WriteLine(context.GetType().Name); // EpsStatASTContext
  251.  
  252.          
  253.             Console.WriteLine("Epsilon");
  254.          
  255.             return null;
  256.  
  257.         }
  258.  
  259.  
  260.         public override Object VisitTermStatAST([NotNull] Ejemplo1Parser.TermStatASTContext context)
  261.         {
  262.  
  263.  
  264.             cont++; printtab();
  265.             //Console.WriteLine(context.GetType().Name); // TermStatASTContext
  266.            
  267.             Console.WriteLine("Termino");
  268.            
  269.             Visit(context.term(0));
  270.            
  271.             for (int i = 1; i <= context.term().Count - 1; i++)
  272.             {
  273.                 printtab();
  274.                
  275.                 Console.WriteLine(context.nodo_add.Text);
  276.                 Visit(context.term(i));
  277.  
  278.  
  279.             }
  280.          
  281.             cont--;
  282.  
  283.             return null;
  284.  
  285.         }
  286.  
  287.  
  288.         public override Object VisitTermsAST([NotNull] Ejemplo1Parser.TermsASTContext context)
  289.         {
  290.             cont++; printtab();
  291.  
  292.             //Console.WriteLine(context.GetType().Name); // TermsASTContext
  293.             Console.WriteLine("Factor");
  294.             //printtab(contenedor, context.GetType().Name, true);
  295.  
  296.            
  297.          
  298.           //  printtab();
  299.             //Console.WriteLine(context.factor(0).GetText());
  300.             Visit(context.factor(0));
  301.             for (int i = 1; i <= context.factor().Count - 1; i++)
  302.             {
  303.                 printtab();
  304.  
  305.                 //Console.WriteLine(context.factor(i));
  306.                 Console.WriteLine(context.nodo_mul.Text);
  307.                 Visit(context.factor(i));
  308.  
  309.  
  310.             }
  311.          
  312.             cont--;
  313.  
  314.             return null;
  315.  
  316.         }
  317.                
  318.         public override Object VisitIdFactAST([NotNull] Ejemplo1Parser.IdFactASTContext context)
  319.         {
  320.  
  321.             cont++; printtab();
  322.  
  323.             Console.WriteLine(context.GetType().Name); // IdFactASTContext
  324.  
  325.             Console.WriteLine(context.nodo_id.Text);
  326.             cont--;
  327.  
  328.             return null;
  329.  
  330.         }
  331.        
  332.         public override Object VisitNumFactAST([NotNull] Ejemplo1Parser.NumFactASTContext context)
  333.         {
  334.  
  335.             cont++; printtab();
  336.  
  337.             //Console.WriteLine(context.GetType().Name); // IdFactASTContext
  338.             Console.WriteLine("Num");
  339.             cont++;  printtab();
  340.             Console.WriteLine(context.nodo_num.Text);
  341.             cont--; cont--;
  342.  
  343.             return null;
  344.  
  345.         }
  346.        
  347.         public override Object VisitStrFactAST([NotNull] Ejemplo1Parser.StrFactASTContext context)
  348.         {
  349.  
  350.             cont++; printtab();
  351.  
  352.             Console.WriteLine(context.GetType().Name);
  353.                      
  354.             Console.WriteLine(context.nodo_str.Text);
  355.             cont--;
  356.      
  357.             return null;
  358.  
  359.         }
  360.        
  361.         public override Object VisitIdlistsAST([NotNull] Ejemplo1Parser.IdlistsASTContext context)
  362.         {
  363.  
  364.             /*
  365.              
  366.             idlist      : nodo_id=ID (nodo_pycoma=PyCOMA ID)* #idlistsAST
  367.             ;
  368.              
  369.              */
  370.            printtab();
  371.            //Console.WriteLine(context.GetType().Name); //  IdlistsASTContext
  372.            Console.WriteLine("Identificadores");
  373.          
  374.             Visit(context.ID(0));
  375.             cont++;
  376.             printtab();
  377.             Console.WriteLine("'" + context.ID(0).Symbol.Text + "'");
  378.            
  379.             for (int i = 1; i <= context.ID().Count - 1; i++)
  380.             {
  381.                 printtab();
  382.  
  383.                 Console.WriteLine("'" + context.ID(i).Symbol.Text + "'");
  384.  
  385.                 Visit(context.ID(i));
  386.                 cont--;    
  387.             }
  388.  
  389.             cont--;
  390.  
  391.             return null;
  392.  
  393.         }
  394.  
  395.         public override Object VisitExprFactAST([NotNull] Ejemplo1Parser.ExprFactASTContext context)
  396.         {
  397.             cont++; printtab();
  398.          
  399.             Console.WriteLine(context.GetType().Name);
  400.  
  401.            
  402.  
  403.             Visit(context.expression());
  404.        
  405.             cont--;
  406.            
  407.  
  408.             return null;
  409.         }
  410.  
  411.     }
  412. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement