![]() |
User Guide
|
#include <string>
#include <vector>
#include <CLI/CLI.hpp>
#include <filesystem>
#include "ast/program.hpp"
#include "codegen/codegen_acc_visitor.hpp"
#include "codegen/codegen_compatibility_visitor.hpp"
#include "codegen/codegen_coreneuron_cpp_visitor.hpp"
#include "codegen/codegen_neuron_cpp_visitor.hpp"
#include "codegen/codegen_transform_visitor.hpp"
#include "config/config.h"
#include "parser/nmodl_driver.hpp"
#include "pybind/pyembed.hpp"
#include "utils/common_utils.hpp"
#include "utils/logger.hpp"
#include "visitors/after_cvode_to_cnexp_visitor.hpp"
#include "visitors/ast_visitor.hpp"
#include "visitors/constant_folder_visitor.hpp"
#include "visitors/cvode_visitor.hpp"
#include "visitors/function_callpath_visitor.hpp"
#include "visitors/global_var_visitor.hpp"
#include "visitors/implicit_argument_visitor.hpp"
#include "visitors/indexedname_visitor.hpp"
#include "visitors/inline_visitor.hpp"
#include "visitors/json_visitor.hpp"
#include "visitors/kinetic_block_visitor.hpp"
#include "visitors/local_to_assigned_visitor.hpp"
#include "visitors/local_var_rename_visitor.hpp"
#include "visitors/localize_visitor.hpp"
#include "visitors/longitudinal_diffusion_visitor.hpp"
#include "visitors/loop_unroll_visitor.hpp"
#include "visitors/neuron_solve_visitor.hpp"
#include "visitors/nmodl_visitor.hpp"
#include "visitors/perf_visitor.hpp"
#include "visitors/rename_function_arguments.hpp"
#include "visitors/semantic_analysis_visitor.hpp"
#include "visitors/solve_block_visitor.hpp"
#include "visitors/steadystate_visitor.hpp"
#include "visitors/sympy_conductance_visitor.hpp"
#include "visitors/sympy_solver_visitor.hpp"
#include "visitors/symtab_visitor.hpp"
#include "visitors/units_visitor.hpp"
#include "visitors/verbatim_var_rename_visitor.hpp"
#include "visitors/verbatim_visitor.hpp"
#include "visitors/visitor_utils.hpp"
Go to the source code of this file.
Functions | |
int | run_nmodl (int argc, const char *argv[]) |
int | main (int argc, const char *argv[]) |
int run_nmodl | ( | int | argc, |
const char * | argv[] | ||
) |
list of mod files to process
true if debug logger statements should be shown
true if code is to be generated for NEURON
true if code is to be generated for CoreNEURON
true if serial C++ code to be generated
true if c code with openacc to be generated
true if sympy should be used for solving ODEs analytically
true if Pade approximation to be used
true if CSE (temp variables) to be used
true if conductance keyword can be added to breakpoint
true if inlining at nmodl level to be done
true if unroll at nmodl level to be done
true if perform constant folding at nmodl level to be done
true if range variables to be converted to local
true if global variables to be converted to range
true if top level local variables to be converted to range
true if CVODE should be emitted
true if localize variables even if verbatim block is used
true if local variables to be renamed
true if inline even if verbatim block exist
true if verbatim blocks
true if code generation is forced to happen even if there is any incompatibility
true if we want to only check compatibility without generating code
true if ion variable copies should be avoided
directory where code will be generated
directory where intermediate file will be generated
directory where units lib file is located
true if ast should be converted to json
true if ast should be converted to nmodl
true if performance stats should be converted to json
true if symbol table should be printed
floating point data type
which line to run blame for
write ast to nmodl
create file path for nmodl file
driver object creates lexer and parser, just call parser method
parse mod file and construct ast
whether to update existing symbol table or create new one whenever we run symtab visitor.
construct symbol table
Check some rules that ast should follow
use cnexp instead of after_cvode solve method
GLOBAL to RANGE rename visitor
LOCAL to ASSIGNED visitor
note that we can not symtab visitor in update mode as we replace kinetic block with derivative block of same name in global scope
Parsing units fron "nrnunits.lib" and mod files
once we start modifying (especially removing) older constructs from ast then we should run symtab visitor in update mode so that old symbols (e.g. prime variables) are not lost