Skip to content

Commit eadcc26

Browse files
committed
[ADD] Compiler .py
1 parent bf75a43 commit eadcc26

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+211
-12
lines changed

.idea/uiDesigner.xml

Lines changed: 124 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/java/Files/Compiler.java

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package Files;
2+
3+
import java.io.BufferedReader;
4+
import java.io.BufferedWriter;
5+
import java.io.File;
6+
import java.io.FileWriter;
7+
import java.io.IOException;
8+
import java.io.InputStreamReader;
9+
import javax.swing.JTextArea;
10+
11+
public class Compiler {
12+
13+
private String code;
14+
private JTextArea console;
15+
16+
public Compiler(String code, JTextArea txtConsole) {
17+
this.code = code;
18+
this.console = txtConsole;
19+
}
20+
21+
public void compileCode() {
22+
String pythonFilePath = "./src/main/java/Files/code.py";
23+
24+
// Crear .py
25+
try (BufferedWriter writer = new BufferedWriter(new FileWriter(pythonFilePath))) {
26+
writer.write(code);
27+
} catch (IOException e) {
28+
System.err.println("Error al guardar el archivo .py: " + e.getMessage());
29+
return;
30+
}
31+
32+
ProcessBuilder processBuilder = new ProcessBuilder("python", pythonFilePath);
33+
processBuilder.redirectErrorStream(true);
34+
35+
try {
36+
Process process = processBuilder.start();
37+
38+
// Leer y mostrar la salida del script de python
39+
try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
40+
String line;
41+
console.append("--- INICIO DE EJECUCION ---\n");
42+
while ((line = reader.readLine()) != null) {
43+
console.append(line + "\n");
44+
}
45+
console.append("--- FIN DE EJECUCION ---\n");
46+
}
47+
} catch (IOException e) {
48+
System.err.println("Error al ejecutar el script Python: " + e.getMessage());
49+
} finally {
50+
new File(pythonFilePath).delete();
51+
}
52+
}
53+
}
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
class ciclo_simple:
22
cont = 12
3-
while True:
4-
if cont != 123:
5-
print("Valido:", cont)
3+
flag = True
4+
while flag:
5+
if cont != 100:
6+
print("Invalido:", cont)
67
cont += 1
78
else:
8-
print("Invalido:", cont)
9+
print("Valido:", cont)
10+
flag = False

src/main/java/Files/code.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
class for_statement:
2+
for i in range(12):
3+
print("El valor es: ", i)

src/main/java/GUI/MainFrame.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import javax.swing.table.TableCellRenderer;
2020
import javax.swing.table.TableColumn;
2121
import javax.swing.table.TableColumnModel;
22+
import Files.Compiler;
23+
import java.awt.Color;
2224

2325
public class MainFrame extends javax.swing.JFrame {
2426

@@ -28,6 +30,7 @@ public class MainFrame extends javax.swing.JFrame {
2830
private Parser parser;
2931
// private VariableCheck var;
3032
private VariableAssignment semantic;
33+
private Compiler compiler;
3134

3235
public MainFrame() {
3336
initComponents();
@@ -421,6 +424,14 @@ private void btnAnalizeActionPerformed(java.awt.event.ActionEvent evt) {// GEN-F
421424
semantic = new VariableAssignment(txtConsole, lexer.getTokenList());
422425
semantic.analizeSemantic();
423426
fillVar();
427+
428+
if (txtConsole.getText().isBlank()) {
429+
txtConsole.setForeground(Color.GREEN);
430+
compiler = new Compiler(txtCode.getText(), txtConsole);
431+
compiler.compileCode();
432+
} else {
433+
txtConsole.setForeground(new Color(255, 96, 96));
434+
}
424435
} else {
425436
jLabel1.setText("Output");
426437
JOptionPane.showMessageDialog(null, "No hay código en el editor", "Atención!",
@@ -485,7 +496,7 @@ public void fillTable() {
485496
tbModel.addColumn("Columna");
486497

487498
for (Token lex : lexer.getTokenList()) {
488-
tbModel.addRow(new Object[] { lex.getLexeme(), lex.getToken(), lex.getRow(), lex.getColumn() });
499+
tbModel.addRow(new Object[]{lex.getLexeme(), lex.getToken(), lex.getRow(), lex.getColumn()});
489500
}
490501

491502
DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
@@ -521,7 +532,7 @@ public void fillVar() {
521532

522533
for (Variable var : semantic.getVariables()) {
523534
tbModel.addRow(
524-
new Object[] { var.getVarName(), var.getType(), var.getValue(), var.getState(), var.getRow() });
535+
new Object[]{var.getVarName(), var.getType(), var.getValue(), var.getState(), var.getRow()});
525536
}
526537

527538
DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
-1.9 KB
Binary file not shown.
-1.3 KB
Binary file not shown.
-2.64 KB
Binary file not shown.
-1.23 KB
Binary file not shown.
-9.76 KB
Binary file not shown.

0 commit comments

Comments
 (0)