modify print

This commit is contained in:
Vu Tuan Minh
2025-04-09 16:06:01 +02:00
parent 3172a914c2
commit 9977e25dcc
3 changed files with 11 additions and 10 deletions

View File

@@ -82,15 +82,15 @@ instruction returns [Instruction out]:
{$out = new DeclarationImp($t.return_type, declare);} {$out = new DeclarationImp($t.return_type, declare);}
| // PRINT | // PRINT
PRINT PRINT
{ArrayList<String> printer= new ArrayList<String>();} {ArrayList<Object> printer= new ArrayList<Object>();}
(t1=TEXT (t1=TEXT
{ {
String text= $t1.getText(); String text= $t1.getText();
printer.add(text.substring(1,text.length()-1)); printer.add(text.substring(1,text.length()-1));
} }
|e1=expression |e1=expression
{ String text_e= $e1.out.toString(); {
printer.add(text_e); printer.add($e1.out);
}) })
(VIRGULE (t2=TEXT (VIRGULE (t2=TEXT
{ {
@@ -99,19 +99,18 @@ instruction returns [Instruction out]:
} }
| e2=expression | e2=expression
{ {
String text_e2= $e2.out.toString(); printer.add($e2.out);
printer.add(text_e2);
} }
))* ))*
{$out = new PrintImp(printer);} {$out = new PrintImp(printer);}
| //READ | //READ
READ i1=ident READ i1=ident
{ {
ArrayList<String> read= new ArrayList<String>(); ArrayList<VarImp> read= new ArrayList<VarImp>();
read.add($i1.out); read.add(new VarImp($i1.out));
}(VIRGULE i2=ident }(VIRGULE i2=ident
{ {
read.add($i2.out); read.add(new VarImp($i1.out));
})* })*
{$out = new ReadImp(read);} {$out = new ReadImp(read);}

View File

@@ -74,14 +74,14 @@ public class Program{
} }
} }
public static record PrintImp(ArrayList<String> t) implements Instruction{ public static record PrintImp(ArrayList<Object> t) implements Instruction{
@Override @Override
public <H, S> S accept(InstrVisitor<H, S> v, H h) { public <H, S> S accept(InstrVisitor<H, S> v, H h) {
return v.visitPrint(this, h); return v.visitPrint(this, h);
} }
} }
public static record ReadImp(ArrayList<String> t) implements Instruction{ public static record ReadImp(ArrayList<VarImp> t) implements Instruction{
@Override @Override
public <H, S> S accept(InstrVisitor<H, S> v, H h) { public <H, S> S accept(InstrVisitor<H, S> v, H h) {
return v.visitRead(this, h); return v.visitRead(this, h);

View File

@@ -31,6 +31,7 @@ public class SymTable {
stackMap.minus(stackMap.indexOf(stackMap.getLast())); stackMap.minus(stackMap.indexOf(stackMap.getLast()));
} }
public PMap<String,Type> peppapeek(){ public PMap<String,Type> peppapeek(){
System.out.print("TEST0");
return stackMap.getLast(); return stackMap.getLast();
} }
@@ -40,6 +41,7 @@ public class SymTable {
pmap= pmap.plus(s/*+"_"+this.id*/,t); pmap= pmap.plus(s/*+"_"+this.id*/,t);
//this.id++; //this.id++;
//Delete old ones //Delete old ones
System.out.print("TEST1");
stackMap.minus(stackMap.indexOf(stackMap.getLast())); stackMap.minus(stackMap.indexOf(stackMap.getLast()));
//Push the new one //Push the new one
stackMap.plus(pmap); stackMap.plus(pmap);