Académique Documents
Professionnel Documents
Culture Documents
java
Pgina 1 de 8
/********************************************************************************* * * * * * esta classe herda da clase Analiza e recebe como argumento pelo seu construtor, uma string formada * pelo codigo lido do arquivo informado pelo usurio. * * o mtodo principal da classe o nucleoDeAnalise() responsvel pela analise lxica proprimente dita. * * * * */
import java.io.FileNotFoundException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.Scanner;
if( codigo == null ){ System.out.print("\n\num erro ocorreu na referenciacao do arquivo!"); return; } if( !erro() ) geraTabelaDeSimbolos( nome_do_arquivo_do_codigo );
Arquivo: /home/aluno/Download/Hotmail/AnalisadorLexico.java
Pgina 2 de 8
return; }
public boolean erro(){ /* * retorna false se nenhum erro lexico for encontrado, ou true se houver erro. * * */
AnalisadorDeErro
String nome_do_arquivo_do_codigo ){
= = = = =
PrintWriter Scanner
tabela entrada
try{ tabela = new PrintWriter( String.format("%s_tabela_de_simbolos.txt", nome_do_arquivo_do_codigo)); } catch( SecurityException exception1 ){} catch( FileNotFoundException exception2 ){}
Arquivo: /home/aluno/Download/Hotmail/AnalisadorLexico.java
token_pal_reserv.add( "\r\n====================== token_identif.add( "\r\n====================== \n" );
Pgina 3 de 8
token_const_num.add( "\r\n====================== \r\nCONSTANTES NUMERICAS\r\n======================\r\n\r \n" ); token_opera.add( "\r\n====================== \r\nOPERADORES\r\n======================\r\n\r \n" ); token_st_saida.add( "\r\n====================== \r\nSTRINGS DE SAIDA\r\n======================\r\n\r\n" );
);
+ + + + +
); ); ); ); );
System.out.print("mostrar tabela de simbolos? ( 1 - sim , 0 - nao )" ); if( entrada.nextInt() == 1 ){ System.out.print( "\n\n\n============= System.out.print( System.out.print( System.out.print( System.out.print( System.out.print( } token_pal_reserv token_identif token_const_num token_opera token_st_saida + + + + + TABELA DE SIMBOLOS "\n\n" "\n\n" "\n\n" "\n\n" "\n\n" ); ); ); ); ); =============\n\n\n" );
private final void analisador( List < String > token_pal_reserv, List < String List < String List < String List < String
){
Arquivo: /home/aluno/Download/Hotmail/AnalisadorLexico.java
Pgina 4 de 8
= ""; = "";
// recebe o codigo sem comentarios nem strings de // recebe o token para ser gravado na sua respectiva = ' '; // caractere corrente. // contem a posicao corrente.
car_lido
'A','B','C','D','E','F','G','H','I','J','L','M','N','O','P','Q','R' 'S','T','U','V','X','Y','K','W','Z'};
char
simbolo_inicial_2[]
= { '0','1','2','3','4','5','6','7','8','9' };
<
super.codigo.length() ;
super.codigo.length() ;
if( super.codigo.charAt( cursor ) == ']') break; } continue; } if( super.codigo.charAt( cursor ) == '"'){ de saida string_aux = ""; string_aux += super.codigo.charAt( cursor ); for( cursor++ ; cursor < super.codigo.length() ; cursor++ ){ // e grava as strings
string_aux += super.codigo.charAt( cursor ); if( super.codigo.charAt( cursor ) == '"') break; } string_aux += "\r\n";
Arquivo: /home/aluno/Download/Hotmail/AnalisadorLexico.java
if( !jaIncluidoEmLista( string_aux , token_st_saida.add( string_aux); continue; } codigo += super.codigo.charAt( cursor ); } token_st_saida ) )
Pgina 5 de 8
for( cursor = 0 ;
|| car_lido == '\n'|| '(' || car_lido == ')' || '{' || car_lido == '}' || ' ' )
for( cursor++ ; cursor < codigo.length() ; cursor++ ){ car_lido = codigo.charAt( cursor ); if( car_lido == ' ' car_lido == car_lido == car_lido == break; string_aux += car_lido; } string_aux += "\r\n"; if( !jaIncluidoEmLista( string_aux , token_pal_reserv.add( string_aux); continue; } token_pal_reserv ) ) || car_lido == '\n'|| '(' || car_lido == ')' || '{' || car_lido == '}' || ' ' )
Arquivo: /home/aluno/Download/Hotmail/AnalisadorLexico.java
Pgina 6 de 8
for( int i = 0 ; i < simbolo_inicial_1.length ; i++ ){ // grava identificadores. if( car_lido == simbolo_inicial_1[i] ){ string_aux = ""; identificador = true; string_aux += car_lido; for( cursor++ ; cursor < codigo.length() ; cursor++ ){ car_lido = codigo.charAt( cursor ); if( car_lido == ' ' car_lido == car_lido == car_lido == break; string_aux += car_lido; } string_aux += "\r\n"; break; } } if( identificador ){ identificador = false; if( !jaIncluidoEmLista( string_aux , token_identif ) ) token_identif.add( string_aux ); continue; } || car_lido == '\n'|| '(' || car_lido == ')' || '{' || car_lido == '}' || ' ' )
Arquivo: /home/aluno/Download/Hotmail/AnalisadorLexico.java
if( car_lido == simbolo_inicial_2[i] ){ string_aux = ""; const_numerica = true; string_aux += car_lido;
Pgina 7 de 8
for( cursor++ ; cursor < codigo.length() ; cursor++ ){ car_lido = codigo.charAt( cursor ); if( car_lido == ' ' car_lido == car_lido == car_lido == break; string_aux += car_lido; } string_aux += "\r\n"; break; } } if( const_numerica ){ const_numerica = false; if( !jaIncluidoEmLista( string_aux , token_const_num ) ) token_const_num.add( string_aux ); continue; } || car_lido == '\n'|| '(' || car_lido == ')' || '{' || car_lido == '}' || ' ' )
if( car_lido == '<' || car_lido == '!' || car_lido == '>' || car_lido == '=' || ){ car_lido == '|' string_aux = ""; string_aux += car_lido; car_lido = codigo.charAt( ++cursor ); if( car_lido != ' ' && car_lido != '\n'&& car_lido != '(' && car_lido != ')' && ' ) car_lido != ' string_aux += car_lido; string_aux += "\r\n"; if( !jaIncluidoEmLista( string_aux , token_opera ) ) token_opera.add( string_aux );
// trata operadores
Arquivo: /home/aluno/Download/Hotmail/AnalisadorLexico.java
continue; } } return; }
Pgina 8 de 8
private final boolean jaIncluidoEmLista( String token , List < String > lista ){
for( int i = 0 ; i < lista.size() ; i++ ){ if( token.equals( lista.get( i )) ) return true; }
return false; }