Skip to content

Commit fe723e0

Browse files
committed
[Add] final Gramatica, avance sintactico
1 parent 4713328 commit fe723e0

36 files changed

+10965
-16205
lines changed

proyectoCompilador/src/MyListener.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from services.myantlr4.MyJavaListener import MyJavaListener
2+
from services.myantlr4.MyJavaParser import MyJavaParser
3+
4+
class MyListener(MyJavaListener):
5+
def __init__(self) -> None:
6+
super().__init__()
7+
8+
def enterCompilationUnit(self, ctx: MyJavaParser.CompilationUnitContext):
9+
print("Entra en la unidad de compilacion")
10+
return super().enterCompilationUnit(ctx)
11+
def exitCompilationUnit(self, ctx: MyJavaParser.CompilationUnitContext):
12+
return super().exitCompilationUnit(ctx)
13+
def enterClassDeclaration(self, ctx: MyJavaParser.ClassDeclarationContext):
14+
print("Entra en el cuerpo de una clase")
15+
return super().enterClassDeclaration(ctx)

proyectoCompilador/src/main.py

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,29 @@
11
import view.vista_principal as v
22
import flet as ft
3-
def main():
3+
# from antlr4 import *
4+
# from services.myantlr4.MyJavaLexer import MyJavaLexer as JavaLexer
5+
# from services.myantlr4.MyJavaParser import MyJavaParser as JavaParser
6+
# from MyListener import MyListener
7+
def main():
48
ft.app(v.vista)
9+
# input_stream = FileStream("src/prueba.txt")
10+
# lexer = JavaLexer(input_stream)
11+
# token_stream = CommonTokenStream(lexer)
12+
# token_stream.fill()
13+
# parser = JavaParser(token_stream)
14+
# tree = parser.compilationUnit()
15+
16+
# if parser.getNumberOfSyntaxErrors()>0:
17+
# print("Error de sintaxis")
18+
# else:
19+
# tokenTypes = lexer.symbolicNames
20+
# for token in token_stream.tokens:
21+
# print(f"{tokenTypes[token.type]}: \t --> \t{token.text}")
22+
# linterp =MyListener()
23+
# walker = ParseTreeWalker()
24+
# walker.walk(linterp,tree)
25+
26+
527

628
if __name__ == "__main__":
7-
main()
29+
main()

proyectoCompilador/src/prueba.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
class programa{
2+
var hola = 6;
3+
println hola;
4+
println y;
5+
}

proyectoCompilador/src/resources/decAsig.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@
44
public class decAsig {
55
private int numero = 5;
66
private String cadena = "hola mundo";
7+
private static final String prueba = "adios mundo";
78
}
Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1-
package resources;
2-
3-
import java.util.*;
1+
package hola.paquete;
2+
import java.util.List;
3+
import java.util.ArrayList;
44
public class input {
5-
public static int NUMERO=11,NUmero2 = 10;
6-
public String p = "hola";
7-
8-
}
5+
int numero;
6+
private static int numero2 = 10,numero3=12;
7+
public static void main(String[] args) {
8+
final int x = 5;
9+
final String p = "hola";
10+
}
11+
}

proyectoCompilador/src/services/myAnalizador/MyLexer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from antlr4 import *
2-
from services.myantlr4.JavaLexer import JavaLexer
2+
from services.myantlr4.MyJavaLexer import MyJavaLexer as JavaLexer
33
def MyLexer(filePath:str)->str:
44
input_stream = FileStream(filePath)
55
lexer = JavaLexer(input_stream)
Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import sys
2-
from antlr4 import *
3-
from myantlr4.JavaParser import JavaParser
4-
from myantlr4.JavaListener import JavaListener
1+
# import sys
2+
# from antlr4 import *
3+
# from myantlr4.JavaParser import JavaParser
4+
# from myantlr4.JavaListener import JavaListener
55

6-
class ListenerInterp(JavaListener):
7-
def __init__(self) -> None:
8-
self.result = {}
6+
# class ListenerInterp(JavaListener):
7+
# def __init__(self) -> None:
8+
# self.result = {}
99

10-
def enterCompilationUnit(self, ctx:JavaParser.CompilationUnitContext):
11-
print("Analisis sintactico iniciado")
10+
# def enterCompilationUnit(self, ctx:JavaParser.CompilationUnitContext):
11+
# print("Analisis sintactico iniciado")
1212

1313

Lines changed: 14 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
from antlr4 import *
2-
from services.myantlr4.JavaLexer import JavaLexer
3-
from services.myantlr4.JavaParser import JavaParser
2+
from services.myantlr4.MyJavaLexer import MyJavaLexer as JavaLexer
3+
from services.myantlr4.MyJavaParser import MyJavaParser as JavaParser
44
from services.myAnalizador.MyVisitor import VisitorInterp as MyVisitor
55
from services.myAnalizador.MyErrorListener import MyErrorListener
6-
6+
visitor = MyVisitor()
77
def MyParser(filePath:str)->str:
88
input_stream = FileStream(filePath)
99
lexer = JavaLexer(input_stream)
@@ -14,41 +14,14 @@ def MyParser(filePath:str)->str:
1414
error = MyErrorListener()
1515
parser.addErrorListener(error)
1616
tree = parser.compilationUnit()
17-
18-
19-
20-
class MyParser():
21-
def __init__(self) -> None:
22-
self.input_stream
23-
self.lexer
24-
# Obtener todos los tokens
25-
self.tokenStream
26-
self.parser
27-
self.error
28-
self.tree
29-
self.visitor
30-
31-
def getSintaxis(self,filePath)->str:
32-
self.input_stream = FileStream(filePath)
33-
self.lexer = JavaLexer(self.input_stream)
34-
# Obtener todos los tokens
35-
self.tokenStream = CommonTokenStream(self.lexer)
36-
self.parser = JavaParser(self.tokenStream)
37-
self.parser.removeErrorListeners()
38-
self.error = MyErrorListener()
39-
self.parser.addErrorListener(self.error)
40-
self.tree = self.parser.compilationUnit()
41-
self.visitor = MyVisitor()
42-
if self.parser.getNumberOfSyntaxErrors() > 0:
43-
return ("Error de sintaxis ".join(self.error.getErrores()))
44-
else:
45-
# linterp = MyListener()
46-
# walker = ParseTreeWalker()
47-
# walker.walk(linterp,tree)
48-
self.visitor.visit(tree=self.tree)
49-
out = ""
50-
out = out.join(self.visitor.analisiSintactico)
51-
return out
52-
53-
def getFields(self)->dict:
54-
return self.visitor.fields
17+
visitor.analisiSintactico = []
18+
if parser.getNumberOfSyntaxErrors() > 0:
19+
return ("Error de sintaxis ".join(error.getErrores()))
20+
else:
21+
# linterp = MyListener()
22+
# walker = ParseTreeWalker()
23+
# walker.walk(linterp,tree)
24+
visitor.visit(tree=tree)
25+
out = ""
26+
out = out.join(visitor.analisiSintactico)
27+
return out

0 commit comments

Comments
 (0)