Groovy for Domain-specific Languages - Second Edition

(nextflipdebug2) #1

Integrating It All


[ 324 ]

void setCompilationUnit(CompilationUnit unit) {
compilationUnit = unit
}
}

You will immediately notice the similarity between this transformation class and
the state machine transformation in Chapter 8, AST Transformations. We follow the
same steps as before. We first parse the AST nodes to build an interim model that
represents the game engine. We then use that model to build the game engine
pattern classes:


class GameEngineModel {
def pages
def events
def stateDeclarations
def eventStatements

def GameEngineModel() {
pages = []
events = [:]
stateDeclarations = []
eventStatements = [:]
}
def getStartPage() {
pages[0]
}
def addPage( page ) {
if (!pages.contains(page))
pages << page
}
def addEvent(event) {
events[ "$event" ] = [:]
}
def getEvents() {
events.keySet()
}
def addStateDeclaration(declaration) {
stateDeclarations << declaration
}
def addEventStatement(event, stmnt) {
if (!eventStatements["$event"])
eventStatements["$event"] = []

eventStatements["$event"] << stmnt
}
}

http://www.ebook3000.com
Free download pdf