Skip to content

Commit

Permalink
Added Interpreter framework
Browse files Browse the repository at this point in the history
  • Loading branch information
Vanja-S committed May 16, 2023
1 parent b40d939 commit c2b273b
Show file tree
Hide file tree
Showing 10 changed files with 811 additions and 184 deletions.
Binary file modified .DS_Store
Binary file not shown.
Binary file modified src/.DS_Store
Binary file not shown.
22 changes: 20 additions & 2 deletions src/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,11 @@
import compiler.frm.Access;
import compiler.frm.Frame;
import compiler.frm.FrameEvaluator;
import compiler.gen.LinCodeGenerator;
import compiler.gen.Memory;
import compiler.interpret.Interpreter;
import compiler.ir.IRCodeGenerator;
import compiler.ir.IRPrettyPrint;
import compiler.ir.code.IRNode;
import compiler.lexer.Lexer;
import compiler.parser.Parser;
import compiler.parser.ast.def.Def;
Expand Down Expand Up @@ -130,13 +132,29 @@ private static void run(PINS cli, String sourceCode) {
/**
* Generiranje vmesne kode.
*/
var generator = new IRCodeGenerator(new NodeDescription<IRNode>(), frames, accesses, definitions, types);
var generator = new IRCodeGenerator(new NodeDescription<>(), frames, accesses, definitions, types);
ast.accept(generator);
if (cli.dumpPhases.contains(Phase.IMC)) {
new IRPrettyPrint(System.out, 2).print(generator.chunks);
}
if (cli.execPhase == Phase.IMC) {
return;
}
/**
* Linearizacija vmesne kode.
*/
var memory = new Memory(cli.memory);
var mainCodeChunk = new LinCodeGenerator(memory).generateCode(generator.chunks);
if (!cli.dumpPhases.contains(Phase.INT)) {
return;
}
/**
* Izvajanje vmesne kode.
*/
if (mainCodeChunk.isPresent()) {
Optional<PrintStream> outputStream = cli.dumpPhases.contains(Phase.INT) ? Optional.of(System.out) : Optional.empty();
var interpreter = new Interpreter(memory, outputStream);
interpreter.interpret(mainCodeChunk.get());
}
}
}
Binary file added src/cli/.DS_Store
Binary file not shown.
152 changes: 76 additions & 76 deletions src/cli/ForwardingSet.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,81 +3,81 @@
* @Description: Implementacija vmesnika `Set`.
*/

package cli;
package cli;

import java.util.Collection;
import java.util.Iterator;
import java.util.Set;

public class ForwardingSet<T> implements Set<T> {
private Set<T> set;

public ForwardingSet(Set<T> set) {
this.set = set;
}
import java.util.Collection;
import java.util.Iterator;
import java.util.Set;

public class ForwardingSet<T> implements Set<T> {
private Set<T> set;

public ForwardingSet(Set<T> set) {
this.set = set;
}

@Override
public int size() {
return set.size();
}

@Override
public boolean isEmpty() {
return set.isEmpty();
}

@Override
public boolean contains(Object o) {
return set.contains(o);
}

@Override
public Iterator<T> iterator() {
return set.iterator();
}

@Override
public Object[] toArray() {
return set.toArray();
}

@Override
public <R> R[] toArray(R[] a) {
return set.toArray(a);
}

@Override
public boolean add(T e) {
return set.add(e);
}

@Override
public boolean remove(Object o) {
return set.remove(o);
}

@Override
public boolean containsAll(Collection<?> c) {
return set.containsAll(c);
}

@Override
public int size() {
return set.size();
}

@Override
public boolean isEmpty() {
return set.isEmpty();
}

@Override
public boolean contains(Object o) {
return set.contains(o);
}

@Override
public Iterator<T> iterator() {
return set.iterator();
}

@Override
public Object[] toArray() {
return set.toArray();
}

@Override
public <R> R[] toArray(R[] a) {
return set.toArray(a);
}

@Override
public boolean add(T e) {
return set.add(e);
}

@Override
public boolean remove(Object o) {
return set.remove(o);
}

@Override
public boolean containsAll(Collection<?> c) {
return set.containsAll(c);
}

@Override
public boolean addAll(Collection<? extends T> c) {
return set.addAll(c);
}

@Override
public boolean retainAll(Collection<?> c) {
return set.retainAll(c);
}

@Override
public boolean removeAll(Collection<?> c) {
return set.removeAll(c);
}

@Override
public void clear() {
set.clear();
}
}
@Override
public boolean addAll(Collection<? extends T> c) {
return set.addAll(c);
}

@Override
public boolean retainAll(Collection<?> c) {
return set.retainAll(c);
}

@Override
public boolean removeAll(Collection<?> c) {
return set.removeAll(c);
}

@Override
public void clear() {
set.clear();
}
}
Loading

0 comments on commit c2b273b

Please sign in to comment.