|  | #!/usr/bin/env python | 
|  | import argparse, os | 
|  | import json | 
|  |  | 
|  | def getDomains(scop): | 
|  | statements = scop['statements']; | 
|  | numStatements = len(statements) | 
|  |  | 
|  | output = "%s\n\n" % str(numStatements) | 
|  |  | 
|  | for statement in scop['statements']: | 
|  | output += "%s\n\n" % statement['domain'] | 
|  | output += "0  0  0               # for future options\n\n" | 
|  |  | 
|  |  | 
|  | return output | 
|  |  | 
|  | def getSchedules(scop): | 
|  | statements = scop['statements']; | 
|  | numStatements = len(statements) | 
|  |  | 
|  | output = "%s\n\n" % str(numStatements) | 
|  |  | 
|  | for statement in scop['statements']: | 
|  | output += "%s\n\n" % statement['schedule'] | 
|  |  | 
|  | return output | 
|  |  | 
|  | def writeCloog(scop): | 
|  | template = """ | 
|  | # ---------------------- CONTEXT ---------------------- | 
|  | c # language is C | 
|  |  | 
|  | # Context (no constraints on two parameters) | 
|  | %s | 
|  |  | 
|  | 0 # We do not want to set manually the parameter names | 
|  |  | 
|  | # --------------------- STATEMENTS -------------------- | 
|  | %s | 
|  |  | 
|  | 0 # We do not want to set manually the iterator names | 
|  |  | 
|  | # --------------------- SCATTERING -------------------- | 
|  | %s | 
|  |  | 
|  | 0 # We do not want to set manually the schedule dimension names | 
|  | """ | 
|  |  | 
|  | context = scop['context'] | 
|  | domains = getDomains(scop) | 
|  | schedules = getSchedules(scop) | 
|  | print template % (context, domains, schedules) | 
|  |  | 
|  | def __main__(): | 
|  | description = 'Translate JSCoP into iscc input' | 
|  | parser = argparse.ArgumentParser(description) | 
|  | parser.add_argument('inputFile', metavar='N', type=file, | 
|  | help='The JSCoP file') | 
|  |  | 
|  | args = parser.parse_args() | 
|  | inputFile = args.inputFile | 
|  | scop = json.load(inputFile) | 
|  |  | 
|  | writeCloog(scop) | 
|  |  | 
|  | __main__() | 
|  |  |