On April 12, 2017 10:24:31 AM GMT+02:00, Andre Groenewald <adres.is.ge...@gmail.com> wrote: >I am a bit stuck on global, file and local name spaces and scopes. > >Normally my expression bindings is associated with a function, which >makes the function the scope of all the variables. > >my front end can parse something like this: > >int testfunc(int parmVar) >{ > int testfuncVar; >} > >int testfunc2(int funcVar) >{ > int testfuncVar2; >} > >Every function is individually gimplified and added and finalized. >Everything is chained and bind correctly. > >parser->Fndecl = build_fn_decl(functionName, fnDeclType); >.... >gimplify_function_tree(parser->Fndecl); >cgraph_node::finalize_function(parser->Fndecl, true); > >I want to expand my front end to something like this: > >module TestModule >{ > int moduleVariable; > class TestClass > { > int classVariable; > int testfunc(int parmVar) > { > int testfuncVar; > } > } >} > >The question is what should TestModule be declared as, what tree type >or declaration function, and also TestClass. How should TestModule be >gimplified and then finalized.
TestModule should be context of TestClass which should be context of testFunc which is the only thing gimplified. For TestModule you have the choice of NAMESPACE_DECL and TRANSLATION_UNIT_DECL. Richard. >Thank you >André