Beispiel #1
0
def translate(root):
  glob = {}
  funcs = {}

  init_code = []
  for item in root:
    if item[0] == 'fun':
      func = translate_function(item, glob, funcs)
      funcs[func.name] = func
    elif item[0] == 'declare':
      for var, init in item[2]:
        cvmtype, name = cvmtypes.declarator((item[1], var))
        glob[name] = (cvmtype, init)
        if init:
          init_code.extend(
              translate_declaration(name, (cvmtype, init), glob, funcs))
    else:
      raise Exception('Only function definitions and declarations'
        'are allowed at top level.')

  return glob, funcs, init_code
Beispiel #2
0
def add_declaration(loc, decl):
  for var, init in decl[2]:
    cvmtype, name = cvmtypes.declarator((decl[1], var))
    loc[name] = (cvmtype, init)