pTopLevelDecl :: MParser [LocDecl LocE]
pTopLevelDecl = singleton <$> addLocation (choice
  [pExternalFunction
  ,pFunction
  ,pTypedef (\name typ -> Decl name (TypeDef typ))
  ]) <|>
    pVarDecl (\typ name e -> Decl name (VarDef typ e))
pTopLevelDecl :: MParser [LocDecl LocE]
pTopLevelDecl = singleton <$> addLocation (choice
  [pExternalFunction
  ,pFunction
  ,pTypedef (\name typ -> Decl name (TypeDef typ))
  ]) <|>
    pVarDecl (\typ name e -> Decl name (VarDef typ e))
pTopLevelDecl = singleton <$> addLocation (choice
  [pExternalFunction
  ,pFunction
  ,pTypedef (\name typ -> Decl name (TypeDef typ))
  ]) <|>
    pVarDecl (\typ name e -> Decl name (VarDef typ e))