44import GUI .CustomComponents .NumeroLinea ;
55import LexerOperations .Lexer ;
66import ParserOperations .Parser ;
7+ import SemanticOperations .Variable ;
8+ import SemanticOperations .VariableCheck ;
79import Tokens .Token ;
810import java .awt .Component ;
911import java .awt .Toolkit ;
@@ -24,6 +26,7 @@ public class MainFrame extends javax.swing.JFrame {
2426 private DefaultTableModel tbModel ;
2527 private Lexer lexer ;
2628 private Parser parser ;
29+ private VariableCheck var ;
2730
2831 public MainFrame () {
2932 initComponents ();
@@ -58,16 +61,20 @@ private void initComponents() {
5861 btnFOR = new GUI .CustomComponents .Button ();
5962 btnWHILE = new GUI .CustomComponents .Button ();
6063 btnSWITCH = new GUI .CustomComponents .Button ();
61- pnlCodeArea = new GUI .CustomComponents .PanelRound ();
62- scrollCode = new javax .swing .JScrollPane ();
63- txtCode = new javax .swing .JTextArea ();
64+ jPanel3 = new javax .swing .JPanel ();
6465 pnlLexer = new GUI .CustomComponents .PanelRound ();
6566 scrollTokens = new javax .swing .JScrollPane ();
6667 tableTokens = new javax .swing .JTable ();
68+ pnlSemantic = new GUI .CustomComponents .PanelRound ();
69+ scrollVariables = new javax .swing .JScrollPane ();
70+ tableVariables = new javax .swing .JTable ();
6771 pnlParser = new GUI .CustomComponents .PanelRound ();
6872 scrollCode1 = new javax .swing .JScrollPane ();
6973 txtConsole = new javax .swing .JTextArea ();
7074 jLabel1 = new javax .swing .JLabel ();
75+ pnlCodeArea = new GUI .CustomComponents .PanelRound ();
76+ scrollCode = new javax .swing .JScrollPane ();
77+ txtCode = new javax .swing .JTextArea ();
7178
7279 setDefaultCloseOperation (javax .swing .WindowConstants .EXIT_ON_CLOSE );
7380
@@ -233,26 +240,8 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
233240
234241 pnlMain .add (pnlNavBar , java .awt .BorderLayout .NORTH );
235242
236- pnlCodeArea .setBackground (new java .awt .Color (23 , 21 , 23 ));
237- pnlCodeArea .setBorder (javax .swing .BorderFactory .createEmptyBorder (10 , 10 , 10 , 10 ));
238- pnlCodeArea .setRound (10 );
239- pnlCodeArea .setLayout (new java .awt .GridLayout (1 , 0 ));
240-
241- scrollCode .setBackground (new java .awt .Color (23 , 21 , 23 ));
242- scrollCode .setBorder (javax .swing .BorderFactory .createLineBorder (new java .awt .Color (40 , 137 , 199 )));
243- scrollCode .setPreferredSize (new java .awt .Dimension (800 , 400 ));
244-
245- txtCode .setBackground (new java .awt .Color (23 , 21 , 23 ));
246- txtCode .setColumns (20 );
247- txtCode .setFont (new java .awt .Font ("Monospaced" , 0 , 16 )); // NOI18N
248- txtCode .setRows (5 );
249- txtCode .setTabSize (4 );
250- txtCode .setBorder (javax .swing .BorderFactory .createEmptyBorder (2 , 2 , 2 , 2 ));
251- scrollCode .setViewportView (txtCode );
252-
253- pnlCodeArea .add (scrollCode );
254-
255- pnlMain .add (pnlCodeArea , java .awt .BorderLayout .CENTER );
243+ jPanel3 .setOpaque (false );
244+ jPanel3 .setLayout (new java .awt .GridLayout (2 , 1 , 5 , 5 ));
256245
257246 pnlLexer .setBackground (new java .awt .Color (23 , 21 , 23 ));
258247 pnlLexer .setBorder (javax .swing .BorderFactory .createEmptyBorder (10 , 10 , 10 , 10 ));
@@ -277,7 +266,35 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
277266
278267 pnlLexer .add (scrollTokens );
279268
280- pnlMain .add (pnlLexer , java .awt .BorderLayout .EAST );
269+ jPanel3 .add (pnlLexer );
270+
271+ pnlSemantic .setBackground (new java .awt .Color (23 , 21 , 23 ));
272+ pnlSemantic .setBorder (javax .swing .BorderFactory .createEmptyBorder (10 , 10 , 10 , 10 ));
273+ pnlSemantic .setPreferredSize (new java .awt .Dimension (200 , 220 ));
274+ pnlSemantic .setRound (10 );
275+ pnlSemantic .setLayout (new java .awt .GridLayout ());
276+
277+ scrollVariables .setBorder (javax .swing .BorderFactory .createLineBorder (new java .awt .Color (40 , 137 , 199 )));
278+ scrollVariables .setPreferredSize (new java .awt .Dimension (452 , 200 ));
279+
280+ tableVariables .setBackground (new java .awt .Color (23 , 21 , 23 ));
281+ tableVariables .setFont (new java .awt .Font ("Roboto" , 0 , 14 )); // NOI18N
282+ tableVariables .setModel (new javax .swing .table .DefaultTableModel (
283+ new Object [][] {
284+ {null , null , null , null , null }
285+ },
286+ new String [] {
287+ "Variable" , "Tipo" , "Valor" , "Estado" , "Fila"
288+ }
289+ ));
290+ tableVariables .setEnabled (false );
291+ scrollVariables .setViewportView (tableVariables );
292+
293+ pnlSemantic .add (scrollVariables );
294+
295+ jPanel3 .add (pnlSemantic );
296+
297+ pnlMain .add (jPanel3 , java .awt .BorderLayout .EAST );
281298
282299 pnlParser .setBackground (new java .awt .Color (23 , 21 , 23 ));
283300 pnlParser .setBorder (javax .swing .BorderFactory .createEmptyBorder (10 , 10 , 10 , 10 ));
@@ -308,11 +325,32 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
308325
309326 pnlMain .add (pnlParser , java .awt .BorderLayout .PAGE_END );
310327
328+ pnlCodeArea .setBackground (new java .awt .Color (23 , 21 , 23 ));
329+ pnlCodeArea .setBorder (javax .swing .BorderFactory .createEmptyBorder (10 , 10 , 10 , 10 ));
330+ pnlCodeArea .setRound (10 );
331+ pnlCodeArea .setLayout (new java .awt .GridLayout (1 , 0 ));
332+
333+ scrollCode .setBackground (new java .awt .Color (23 , 21 , 23 ));
334+ scrollCode .setBorder (javax .swing .BorderFactory .createLineBorder (new java .awt .Color (40 , 137 , 199 )));
335+ scrollCode .setPreferredSize (new java .awt .Dimension (800 , 400 ));
336+
337+ txtCode .setBackground (new java .awt .Color (23 , 21 , 23 ));
338+ txtCode .setColumns (20 );
339+ txtCode .setFont (new java .awt .Font ("Monospaced" , 0 , 16 )); // NOI18N
340+ txtCode .setRows (5 );
341+ txtCode .setTabSize (4 );
342+ txtCode .setBorder (javax .swing .BorderFactory .createEmptyBorder (2 , 2 , 2 , 2 ));
343+ scrollCode .setViewportView (txtCode );
344+
345+ pnlCodeArea .add (scrollCode );
346+
347+ pnlMain .add (pnlCodeArea , java .awt .BorderLayout .CENTER );
348+
311349 javax .swing .GroupLayout layout = new javax .swing .GroupLayout (getContentPane ());
312350 getContentPane ().setLayout (layout );
313351 layout .setHorizontalGroup (
314352 layout .createParallelGroup (javax .swing .GroupLayout .Alignment .LEADING )
315- .addComponent (pnlMain , javax .swing .GroupLayout .DEFAULT_SIZE , 1000 , Short .MAX_VALUE )
353+ .addComponent (pnlMain , javax .swing .GroupLayout .DEFAULT_SIZE , 950 , Short .MAX_VALUE )
316354 );
317355 layout .setVerticalGroup (
318356 layout .createParallelGroup (javax .swing .GroupLayout .Alignment .LEADING )
@@ -350,6 +388,11 @@ private void btnAnalizeActionPerformed(java.awt.event.ActionEvent evt) {// GEN-F
350388 // ANALIZADOR SINTACTICO
351389 parser = new Parser (lexer .getTokenList (), txtConsole );
352390 parser .parseCode ();
391+
392+ // ANALIZADOR SEMANTICO
393+ var = new VariableCheck (lexer .getTokenList (), txtConsole );
394+ var .check ();
395+ fillVar ();
353396 } else {
354397 jLabel1 .setText ("Output" );
355398 JOptionPane .showMessageDialog (null , "No hay código en el editor" , "Atención!" ,
@@ -438,6 +481,41 @@ public void fillTable() {
438481 tableColumn .setPreferredWidth (preferredWidth );
439482 }
440483 }
484+
485+ public void fillVar () {
486+ tbModel = new DefaultTableModel ();
487+ tbModel .setRowCount (0 );
488+ tbModel .addColumn ("Variable" );
489+ tbModel .addColumn ("Tipo" );
490+ tbModel .addColumn ("Valor" );
491+ tbModel .addColumn ("Estado" );
492+ tbModel .addColumn ("Fila" );
493+
494+ for (Variable var : var .getVariables ()) {
495+ tbModel .addRow (new Object []{var .getName (), var .getType (), var .getValue (), var .getState (), var .getRow ()});
496+ }
497+
498+ DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer ();
499+ centerRenderer .setHorizontalAlignment (JLabel .CENTER );
500+ tableVariables .setDefaultRenderer (Object .class , centerRenderer );
501+
502+ tableVariables .setModel (tbModel );
503+
504+ TableColumnModel columnModel = tableVariables .getColumnModel ();
505+ for (int column = 0 ; column < tableVariables .getColumnCount (); column ++) {
506+ TableColumn tableColumn = columnModel .getColumn (column );
507+ int preferredWidth = 0 ;
508+
509+ for (int i = 0 ; i < tableVariables .getRowCount (); i ++) {
510+ TableCellRenderer cellRenderer = tableVariables .getCellRenderer (i , column );
511+ Component c = tableVariables .prepareRenderer (cellRenderer , i , column );
512+ int width = c .getPreferredSize ().width + tableVariables .getIntercellSpacing ().width ;
513+ preferredWidth = Math .max (preferredWidth , width );
514+ }
515+
516+ tableColumn .setPreferredWidth (preferredWidth );
517+ }
518+ }
441519
442520 /**
443521 * @param args the command line arguments
@@ -491,15 +569,19 @@ public void run() {
491569 private javax .swing .JLabel jLabel1 ;
492570 private javax .swing .JPanel jPanel1 ;
493571 private javax .swing .JPanel jPanel2 ;
572+ private javax .swing .JPanel jPanel3 ;
494573 private GUI .CustomComponents .PanelRound pnlCodeArea ;
495574 private GUI .CustomComponents .PanelRound pnlLexer ;
496575 private javax .swing .JPanel pnlMain ;
497576 private GUI .CustomComponents .PanelRound pnlNavBar ;
498577 private GUI .CustomComponents .PanelRound pnlParser ;
578+ private GUI .CustomComponents .PanelRound pnlSemantic ;
499579 private javax .swing .JScrollPane scrollCode ;
500580 private javax .swing .JScrollPane scrollCode1 ;
501581 private javax .swing .JScrollPane scrollTokens ;
582+ private javax .swing .JScrollPane scrollVariables ;
502583 private javax .swing .JTable tableTokens ;
584+ private javax .swing .JTable tableVariables ;
503585 private javax .swing .JTextArea txtCode ;
504586 private javax .swing .JTextArea txtConsole ;
505587 // End of variables declaration//GEN-END:variables
0 commit comments