Skip to content
Snippets Groups Projects
Commit 93524f66 authored by s21232465's avatar s21232465
Browse files

test

parent 7626d9c9
Branches
Tags
No related merge requests found
//import org.apache.xerces.parsers.*;
//import org.w3c.dom.*;
import sa.*;
import ts.*;
import util.Type;
/*public class SaVM {
public static String getType(Node node){
return ((Element)node).getAttribute("type");
}
public static String getNom(Node node){
return ((Element)node).getAttribute("nom");
}
public static String getTaille(Node node){
return ((Element)node).getAttribute("taille");
}
public static String getVal(Node node){
return ((Element)node).getAttribute("val");
}
public static Type getTypeVariable(Node node){
String typeVariable = ((Element)node).getAttribute("typeVariable");
if(typeVariable.equals("bool")) return Type.BOOL;
if(typeVariable.equals("entier")) return Type.ENTIER;
return Type.NUL; //if(typeVariable.equals("nul")) return Type.NUL;
}
public static Type getTypeRetour(Node node){
String typeRetour = ((Element)node).getAttribute("typeRetour");
if(typeRetour.equals("bool")) return Type.BOOL;
if(typeRetour.equals("entier")) return Type.ENTIER;
return Type.NUL; //if(typeRetour.equals("nul")) return Type.NUL;
}
public static SaProg processSaProg(Node node){
SaLDecVar variables = null;
SaLDecFonc fonctions = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("variables"))
variables = processSaLDecVar(child);
else if(child.getNodeName().equals("fonctions"))
fonctions = processSaLDecFonc(child);
}
return new SaProg(variables, fonctions);
}
/* les listes */
/* public static SaLDec processSaLDec(Node node){
SaDec tete = null;
SaLDec queue = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("tete"))
tete = processSaDec(child);
else if(child.getNodeName().equals("queue"))
queue = processSaLDec(child);
}
return new SaLDec(tete, queue);
}*/
/* public static SaLDecVar processSaLDecVar(Node node){
SaDecVar tete = null;
SaLDecVar queue = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("tete"))
tete = processSaDecVar(child);
else if(child.getNodeName().equals("queue"))
queue = processSaLDecVar(child);
}
return new SaLDecVar(tete, queue);
}
public static SaLDecFonc processSaLDecFonc(Node node){
SaDecFonc tete = null;
SaLDecFonc queue = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("tete"))
tete = processSaDecFonc(child);
else if(child.getNodeName().equals("queue"))
queue = processSaLDecFonc(child);
}
return new SaLDecFonc(tete, queue);
}
public static SaLExp processSaLExp(Node node){
SaExp tete = null;
SaLExp queue = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("tete"))
tete = processSaExp(child);
else if(child.getNodeName().equals("queue"))
queue = processSaLExp(child);
}
return new SaLExp(tete, queue);
}
public static SaLInst processSaLInst(Node node){
SaInst tete = null;
SaLInst queue = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("tete"))
tete = processSaInst(child);
else if(child.getNodeName().equals("queue"))
queue = processSaLInst(child);
}
return new SaLInst(tete, queue);
}
/* declarations */
/*
public static SaDec processSaDec(Node node){
String decType = getType(node);
if(decType.equals("SaDecFonc"))
return processSaDecFonc(node);
if(decType.equals("SaDecVarSimple"))
return processSaDecVarSimple(node);
if(decType.equals("SaDecTab"))
return processSaDecTab(node);
return null;
}*/
/*public static SaDecVar processSaDecVar(Node node){
String decType = getType(node);
if(decType.equals("SaDecVarSimple"))
return processSaDecVarSimple(node);
if(decType.equals("SaDecTab"))
return processSaDecTab(node);
return null;
}
public static SaDecVarSimple processSaDecVarSimple(Node node){
return new SaDecVarSimple(getNom(node), getTypeVariable(node));
}
public static SaDecTab processSaDecTab(Node node){
return new SaDecTab(getNom(node), getTypeVariable(node), Integer.parseInt(getTaille(node)));
}
public static SaDecFonc processSaDecFonc(Node node){
String nom = getNom(node);
Type typeRetour = getTypeRetour(node);
SaLDecVar parametres = null;
SaLDecVar variables = null;
SaInst corps = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("parametres"))
parametres = processSaLDecVar(child);
else if(child.getNodeName().equals("variables"))
variables = processSaLDecVar(child);
else if(child.getNodeName().equals("corps"))
corps = processSaInst(child);
}
return new SaDecFonc(nom, typeRetour, parametres, variables, corps);
}
/* instructions */
/*public static SaInst processSaInst(Node node){
String instType = getType(node);
if(instType.equals("SaInstAffect"))
return processSaInstAffect(node);
if(instType.equals("SaInstTantQue"))
return processSaInstTantQue(node);
if(instType.equals("SaInstBloc"))
return processSaInstBloc(node);
if(instType.equals("SaInstEcriture"))
return processSaInstEcriture(node);
if(instType.equals("SaInstRetour"))
return processSaInstRetour(node);
if(instType.equals("SaInstSi"))
return processSaInstSi(node);
if(instType.equals("SaAppel"))
return processSaAppel(node);
return null;
}
public static SaInstAffect processSaInstAffect(Node node){
SaVar lhs = null;
SaExp rhs = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("lhs"))
lhs = processSaVar(child);
else if(child.getNodeName().equals("rhs"))
rhs = processSaExp(child);
}
return new SaInstAffect(lhs, rhs);
}
public static SaInstTantQue processSaInstTantQue(Node node){
SaExp test = null;
SaInst faire = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("test"))
test = processSaExp(child);
else if(child.getNodeName().equals("faire"))
faire = processSaInst(child);
}
return new SaInstTantQue(test, faire);
}
public static SaInstBloc processSaInstBloc(Node node){
SaLInst val = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("val"))
val = processSaLInst(child);
}
return new SaInstBloc(val);
}
public static SaInstEcriture processSaInstEcriture(Node node){
SaExp arg = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("arg"))
arg = processSaExp(child);
}
return new SaInstEcriture(arg);
}
public static SaInstRetour processSaInstRetour(Node node){
SaExp val = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("val"))
val = processSaExp(child);
}
return new SaInstRetour(val);
}
public static SaInstSi processSaInstSi(Node node){
SaExp test = null;
SaInst alors = null;
SaInst sinon = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("test"))
test = processSaExp(child);
else if(child.getNodeName().equals("alors"))
alors = processSaInst(child);
else if(child.getNodeName().equals("sinon"))
sinon = processSaInst(child);
}
return new SaInstSi(test, alors, sinon);
}
/* appel de fonction */
/* public static SaAppel processSaAppel(Node node){
String nom = getNom(node);
SaLExp arguments = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("arguments"))
arguments = processSaLExp(child);
}
return new SaAppel(nom, arguments);
}
/* expressions */
/* public static SaExp processSaExp(Node node){
String expType = getType(node);
if(expType.equals("SaExpAdd"))
return processSaExpAdd(node);
if(expType.equals("SaExpSub"))
return processSaExpSub(node);
if(expType.equals("SaExpMult"))
return processSaExpMult(node);
if(expType.equals("SaExpDiv"))
return processSaExpDiv(node);
if(expType.equals("SaExpAnd"))
return processSaExpAnd(node);
if(expType.equals("SaExpOr"))
return processSaExpOr(node);
if(expType.equals("SaExpNot"))
return processSaExpNot(node);
if(expType.equals("SaExpInf"))
return processSaExpInf(node);
if(expType.equals("SaExpEqual"))
return processSaExpEqual(node);
if(expType.equals("SaExpVar"))
return processSaExpVar(node);
if(expType.equals("SaExpVrai"))
return processSaExpVrai(node);
if(expType.equals("SaExpFaux"))
return processSaExpFaux(node);
if(expType.equals("SaExpInt"))
return processSaExpInt(node);
if(expType.equals("SaExpLire"))
return processSaExpLire(node);
if(expType.equals("SaExpAppel"))
return processSaExpAppel(node);
return null;
}
public static SaExpInf processSaExpInf(Node node){
SaExp op1 = null;
SaExp op2 = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("op1"))
op1 = processSaExp(child);
else if(child.getNodeName().equals("op2"))
op2 = processSaExp(child);
}
return new SaExpInf(op1, op2);
}
public static SaExpVar processSaExpVar(Node node){
SaVar var = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("var"))
var = processSaVar(child);
}
return new SaExpVar(var);
}
public static SaExpInt processSaExpInt(Node node){
return new SaExpInt(Integer.parseInt(getVal(node)));
}
public static SaExpVrai processSaExpVrai(Node node){
return new SaExpVrai();
}
public static SaExpFaux processSaExpFaux(Node node){
return new SaExpFaux();
}
public static SaExpAdd processSaExpAdd(Node node){
SaExp op1 = null;
SaExp op2 = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("op1"))
op1 = processSaExp(child);
else if(child.getNodeName().equals("op2"))
op2 = processSaExp(child);
}
return new SaExpAdd(op1, op2);
}
public static SaExpAnd processSaExpAnd(Node node){
SaExp op1 = null;
SaExp op2 = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("op1"))
op1 = processSaExp(child);
else if(child.getNodeName().equals("op2"))
op2 = processSaExp(child);
}
return new SaExpAnd(op1, op2);
}
public static SaExpLire processSaExpLire(Node node){
return new SaExpLire();
}
public static SaExpAppel processSaExpAppel(Node node){
SaAppel val = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("val"))
val = processSaAppel(child);
}
return new SaExpAppel(val);
}
public static SaExpNot processSaExpNot(Node node){
SaExp op1 = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("op1"))
op1 = processSaExp(child);
}
return new SaExpNot(op1);
}
public static SaExpDiv processSaExpDiv(Node node){
SaExp op1 = null;
SaExp op2 = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("op1"))
op1 = processSaExp(child);
else if(child.getNodeName().equals("op2"))
op2 = processSaExp(child);
}
return new SaExpDiv(op1, op2);
}
public static SaExpOr processSaExpOr(Node node){
SaExp op1 = null;
SaExp op2 = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("op1"))
op1 = processSaExp(child);
else if(child.getNodeName().equals("op2"))
op2 = processSaExp(child);
}
return new SaExpOr(op1, op2);
}
public static SaExpMult processSaExpMult(Node node){
SaExp op1 = null;
SaExp op2 = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("op1"))
op1 = processSaExp(child);
else if(child.getNodeName().equals("op2"))
op2 = processSaExp(child);
}
return new SaExpMult(op1, op2);
}
public static SaExpEqual processSaExpEqual(Node node){
SaExp op1 = null;
SaExp op2 = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("op1"))
op1 = processSaExp(child);
else if(child.getNodeName().equals("op2"))
op2 = processSaExp(child);
}
return new SaExpEqual(op1, op2);
}
public static SaExpSub processSaExpSub(Node node){
SaExp op1 = null;
SaExp op2 = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("op1"))
op1 = processSaExp(child);
else if(child.getNodeName().equals("op2"))
op2 = processSaExp(child);
}
return new SaExpSub(op1, op2);
}
/* acces aux variables */
/*public static SaVar processSaVar(Node node){
String typeVariable = getType(node);
if(typeVariable.equals("SaVarIndicee"))
return processSaVarIndicee(node);
if(typeVariable.equals("SaVarSimple"))
return processSaVarSimple(node);
return null;
}
public static SaVarIndicee processSaVarIndicee(Node node){
String nom = getNom(node);
SaExp indice = null;
for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
if(child.getNodeName().equals("indice"))
indice = processSaExp(child);
}
return new SaVarIndicee(nom, indice);
}
public static SaVarSimple processSaVarSimple(Node node){
return new SaVarSimple(getNom(node));
}
public static void main(String[] args) {
Document document = null;
DOMParser parser = null;
int verboseLevel = 0;
String saFileName = null;
try {
for (int i = 0; i < args.length; i++) {
if(args[i].equals("-v"))
verboseLevel = Integer.parseInt(args[++i]);
else if(args[i].equals("-sa"))
saFileName = args[++i];
}
if(saFileName == null){
System.out.println("java -cp \".:../xerces-2_12_1/*\" SaVM -sa saFile -v verboseLevel");
System.exit(1);
}
parser = new DOMParser();
if(verboseLevel > 0)
System.err.println("parsing xml document");
parser.parse(saFileName);
document = parser.getDocument();
Node rootNode=document.getDocumentElement();
if(verboseLevel > 0)
System.err.println("building sa tree");
SaProg prog = processSaProg(rootNode);
if(verboseLevel > 0)
new Sa2Xml(prog, null);
if(verboseLevel > 0)
System.err.println("building symbol table");
Ts tableGlobale = new Sa2ts(prog).getTableGlobale();
if(verboseLevel > 0)
System.err.println("evaluating sa tree");
SaEval saEval = new SaEval(prog, tableGlobale);
saEval.affiche(null);
} catch (Exception e) {
e.printStackTrace();
}
}
}
*/
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment