<s> '''<STR_LIT>''' <EOL> import pseudo . api_translators <EOL> import pseudo . api_translators . ruby_translator <EOL> import pseudo . api_translators . python_translator <EOL> import pseudo . api_translators . js_translator <EOL> import pseudo . api_translators . csharp_translator <EOL> import pseudo . api_translators . cpp_translator <EOL> import pseudo . api_translators . golang_translator <EOL> import pseudo . generators <EOL> import pseudo . generators . ruby_generator <EOL> import pseudo . generators . python_generator <EOL> import pseudo . generators . js_generator <EOL> import pseudo . generators . csharp_generator <EOL> import pseudo . generators . cpp_generator <EOL> import pseudo . generators . golang_generator <EOL> import pseudo . loader <EOL> from pseudo . pseudo_tree import Node , to_node , call , method_call , attr , assignment , local <EOL> SUPPORTED_FORMATS = { '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT:rb>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' } <EOL> FILE_EXTENSIONS = { '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT:rb>' : '<STR_LIT:rb>' , '<STR_LIT>' : '<STR_LIT:rb>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' } <EOL> FULL_NAMES = { '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT:rb>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' } <EOL> NAMES = { '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT:rb>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' } <EOL> API_TRANSLATORS = { <EOL> format : getattr ( <EOL> getattr ( <EOL> pseudo . api_translators , <EOL> '<STR_LIT>' % NAMES [ format ] . lower ( ) ) , <EOL> '<STR_LIT>' % NAMES [ format ] ) <EOL> for format in SUPPORTED_FORMATS <EOL> } <EOL> GENERATORS = { <EOL> format : getattr ( <EOL> getattr ( <EOL> pseudo . generators , <EOL> '<STR_LIT>' % NAMES [ format ] . lower ( ) ) , <EOL> '<STR_LIT>' % NAMES [ format ] ) <EOL> for format in SUPPORTED_FORMATS <EOL> } <EOL> def generate_main ( main , language ) : <EOL> '''<STR_LIT>''' <EOL> base = { '<STR_LIT:type>' : '<STR_LIT>' , '<STR_LIT>' : [ ] , '<STR_LIT>' : [ ] , '<STR_LIT>' : [ ] , '<STR_LIT>' : [ ] , '<STR_LIT>' : '<STR_LIT>' } <EOL> base_node = pseudo . loader . convert_to_syntax_tree ( base ) <EOL> if isinstance ( main , dict ) : <EOL> base [ '<STR_LIT>' ] = [ main ] <EOL> elif isinstance ( main , list ) : <EOL> if main and isinstance ( main [ <NUM_LIT:0> ] , dict ) : <EOL> base [ '<STR_LIT>' ] = main <EOL> else : <EOL> base_node . main = main <EOL> elif isinstance ( main , pseudo . pseudo_tree . Node ) : <EOL> base_node . main = [ main ] <EOL> if base [ '<STR_LIT>' ] : <EOL> q = pseudo . loader . convert_to_syntax_tree ( base ) <EOL> else : <EOL> q = base_node <EOL> return generate ( q , language ) <EOL> def generate_from_yaml ( pseudo_ast , language ) : <EOL> '''<STR_LIT>''' <EOL> return pseudo . generate ( pseudo . loader . as_tree ( pseudo_ast ) , language ) <EOL> def generate ( pseudo_ast , language ) : <EOL> '''<STR_LIT>''' <EOL> if isinstance ( pseudo_ast , dict ) : <EOL> pseudo_ast = pseudo . loader . convert_to_syntax_tree ( pseudo_ast ) <EOL> translated_ast = API_TRANSLATORS [ language ] ( pseudo_ast ) . api_translate ( ) <EOL> return GENERATORS [ language ] ( ) . generate ( translated_ast ) </s>
