CS269: HW/SW
Engineering of Embedded Systems, Winter02


How to write a back-end?
public interface Backend {
void invoke(List
args, List sources);
}
public class SimulatorBackend implements Backend {
public abstract void
invoke(List args, List sources) {
List flags =
inspectArguments(args);
Iterator iter =
sources.iterator();
while
(iter.hasNext()) {
CompileUnitNode ast = iter.next();
String code
= ast.accept(new SimulatorVisitor(),flags);
printSimulationCode(code);
}
}
}
STEPS
1. Write
a class implements Backend
2.
Write method invoke() in that class
define the arguments
design necessary visitors
3. Write visitors to
traverse ASTs
4. Add
flags to compiler command-line
public class SimulatorVisitor extends MetaModelVisitor {
public Object
visitProcessDeclNode(
ProcessDeclNode
node, List args) { ... }
public Object
visitAwaitStatementNode(
AwaitStatementNode
node, List args) { ... }
...
}