Skip to content

Commit

Permalink
criado classe de test analise semantica
Browse files Browse the repository at this point in the history
  • Loading branch information
lgsanjos committed Oct 19, 2011
1 parent 3ee4859 commit af62281
Show file tree
Hide file tree
Showing 14 changed files with 630 additions and 34 deletions.
1 change: 0 additions & 1 deletion output/ASA_Search.txt
Expand Up @@ -137,7 +137,6 @@ module
variableList
IDENTIFIER.result
SYMBOL.)
block
definitionPart
definition
variableDef
Expand Down
Expand Up @@ -6,29 +6,46 @@
import analise.sintatica.ArvoreSintaticaAbstrataNo;
import analise.semantica.validacoes.*;

public class AnaliseSemantica {
public class AnalisadorSemantico {

private final ArvoreSintaticaAbstrataNo no;
private StringList ListaDeErros;
private LinkedList<AnaliseSemanticaAcaoAbstrata> acoes;

public AnaliseSemantica() {
public AnalisadorSemantico(ArvoreSintaticaAbstrataNo no) {
this.ListaDeErros = new StringList();

this.acoes = new LinkedList<AnaliseSemanticaAcaoAbstrata>();
this.acoes.add(new AnaliseSemanticaAdicionaTabelaDeSimbolos());

this.no = no;
}

public AnalisadorSemantico() {
this(null);
}


public void analisaNo() {
if (this.no != null)
this.analisaNo(this.no);
}

private void analisaNo(ArvoreSintaticaAbstrataNo no) {

for (int i = 0; i <= this.acoes.size(); i++) {
for (AnaliseSemanticaAcaoAbstrata acao : this.acoes) {
try {
this.acoes.get(i).executa(no);
acao.executa(no);
} catch (AnaliseSemanticaException e) {
this.ListaDeErros.add(e.getMessage());
}
}

for (ArvoreSintaticaAbstrataNo noFilho : no.getListaDeNos()) {
this.analisaNo(noFilho);
}
}

private void navegaNaArvore(ArvoreSintaticaAbstrataNo raiz) {

ArvoreSintaticaAbstrataNo no = raiz;
this.analisaNo(no);

for (int i = 0; i <= no.quatidadeNosFilhos(); i++ ) {
Expand All @@ -37,7 +54,6 @@ private void navegaNaArvore(ArvoreSintaticaAbstrataNo raiz) {
}

public boolean analisarASA(ArvoreSintaticaAbstrataNo raiz) {

this.ListaDeErros.clear();
this.navegaNaArvore(raiz);

Expand Down
@@ -1,15 +1,28 @@
package analise.semantica.validacoes;

import analise.TabelaDeSimbolos;
import analise.exceptions.AnaliseSemanticaException;
import analise.sintatica.ArvoreSintaticaAbstrataNo;
import coretypes.Token;
import coretypes.gcl.GCLTokenTypes;

public class AnaliseSemanticaAdicionaTabelaDeSimbolos extends AnaliseSemanticaAcaoAbstrata {

@Override
@Override
public void executa(ArvoreSintaticaAbstrataNo no) throws AnaliseSemanticaException {

Token token = no.getToken();
if (token != null && token.getTokenType().equals(GCLTokenTypes.IDENTIFIER)) {
this.identificaNoPai(no);
}

}

private void identificaNoPai(ArvoreSintaticaAbstrataNo no) {

if (no.getNoPai().getNome().equalsIgnoreCase("constantName")) {

}
/*
if (no.getNome().equalsIgnoreCase("constantName")) {
ArvoreSintaticaAbstrataNo constante = no.getListaDeNos().get(0);
TabelaDeSimbolos.getInstance().add(constante.getToken());
Expand All @@ -29,8 +42,7 @@ public void executa(ArvoreSintaticaAbstrataNo no) throws AnaliseSemanticaExcepti
if (no.getNome().equalsIgnoreCase("paramDef")) {
}

} */
}

}
Expand Up @@ -13,7 +13,7 @@ public class ArvoreSintaticaAbstrataNo {

public ArvoreSintaticaAbstrataNo() {
this.listaDeNosFilhos = new LinkedList<ArvoreSintaticaAbstrataNo>();
}
}

public ArvoreSintaticaAbstrataNo(String tipoDoNo) {
this();
Expand Down
@@ -1,18 +1,17 @@
package analise.sintatica;

package analise;

import java.io.IOException;
import java.io.InputStream;

import coretypes.gcl.GCLTokenTypes;


import junit.framework.TestCase;
import utils.Utils;
import analise.sintatica.AnaliseSintatica;
import analise.lexica.AnaliseLexica;
import junit.framework.TestCase;
import analise.semantica.AnalisadorSemantico;
import analise.sintatica.AnaliseSintatica;
import analise.sintatica.ArvoreSintaticaAbstrataNo;
import coretypes.gcl.GCLTokenTypes;

public class AnaliseSintaticaTest extends TestCase {
public class AnaliseTestCase extends TestCase {

protected AnaliseSintatica analisador;

Expand Down Expand Up @@ -46,6 +45,17 @@ protected AnaliseLexica buildAnaliseLexica(String codigoFonte){

protected AnaliseSintatica buildAnaliseSintatica(String codigoFonte) {
return new AnaliseSintatica( this.buildAnaliseLexica(codigoFonte));
}
}

protected AnalisadorSemantico buildAnalisadorSemantico(String codigoFonte) {
ArvoreSintaticaAbstrataNo no;
try {
no = this.buildAnaliseSintatica(codigoFonte).gerarArvore();
return new AnalisadorSemantico(no);
} catch (Exception e) {
return null;
}

}

}
2 changes: 1 addition & 1 deletion src/test/java/analise/lexica/AnaliseLexicaTest.java
@@ -1,11 +1,11 @@
package analise.lexica;

import junit.framework.TestCase;
import analise.exceptions.EndOfBufferException;
import analise.exceptions.InvalidTokenException;
import analise.lexica.AnaliseLexica;
import coretypes.Token;
import coretypes.gcl.GCLTokenTypes;
import junit.framework.TestCase;

public class AnaliseLexicaTest extends TestCase {

Expand Down
16 changes: 16 additions & 0 deletions src/test/java/analise/semantica/AnalisadorSemanticoTest.java
@@ -0,0 +1,16 @@
package analise.semantica;

import analise.AnaliseTestCase;

public class AnalisadorSemanticoTest extends AnaliseTestCase {

public void testAddTSConstantName() {
String codigoFonte = this.loadResourceNamed("semantica/constantName.gcl");
AnalisadorSemantico analisador = this.buildAnalisadorSemantico(codigoFonte);
analisador.analisaNo();

}



}
@@ -1,9 +1,10 @@
package analise.sintatica;

import analise.AnaliseTestCase;
import analise.exceptions.InvalidTokenException;
import analise.exceptions.ProducaoSintaticaException;

public class AnaliseSintaticaIntegracaoTest extends AnaliseSintaticaTest {
public class AnaliseSintaticaIntegracaoTest extends AnaliseTestCase {

public void testValidaArquivo_Simples() {
String source = this.loadResourceNamed("simples.gcl");
Expand Down
@@ -1,10 +1,11 @@
package analise.sintatica;

import analise.AnaliseTestCase;
import analise.exceptions.InvalidTokenException;
import analise.exceptions.ProducaoSintaticaException;


public class AnaliseSintaticaUnitarioTest extends AnaliseSintaticaTest {
public class AnaliseSintaticaUnitarioTest extends AnaliseTestCase {


public void testaModuleBasico(){
Expand Down
@@ -1,11 +1,12 @@
package analise.sintatica;

import analise.AnaliseTestCase;
import analise.exceptions.InvalidTokenException;
import analise.exceptions.ProducaoSintaticaException;
import coretypes.Token;
import coretypes.gcl.GCLTokenTypes;

public class ArvoreSintaticaAbstrataTest extends AnaliseSintaticaTest {
public class ArvoreSintaticaAbstrataTest extends AnaliseTestCase {

public void testPrintSimplesPacas() {

Expand Down
7 changes: 0 additions & 7 deletions src/test/resources/asa_simples.txt

This file was deleted.

0 comments on commit af62281

Please sign in to comment.