The NEURON MODeling language
The NMODL Framework is able to parse all language features and constructs of the NMODL DSL. The programmer is thus able to parse any mechanism file with the NMODL Framework and process the AST data structures with a few notable exceptions (mainly VERBATIM C blocks).
The Framework however still lacks code generation support for a some of the language constructs. In the following table we summarize the various NMODL DSL constructs and their support in the framework. Code generation information is related to CoreNEURON backend.
NMODL DSL construct |
parsing supported |
codegen supported |
AST docs available |
---|---|---|---|
Blocks |
|||
PARAMETER |
yes |
yes |
yes |
ASSIGNED |
yes |
yes |
yes |
STATE |
yes |
yes |
yes |
INITIAL |
yes |
yes |
yes |
DERIVATIVE |
yes |
yes |
yes |
LINEAR |
yes |
yes |
yes |
NONLINEAR |
yes |
yes |
yes |
FUNCTION |
yes |
yes |
no |
PROCEDURE |
yes |
yes |
no |
NET_RECEIVE |
yes |
yes |
no |
SOLVE |
yes |
yes |
no |
BREAKPOINT |
yes |
yes |
yes |
KINETIC |
yes |
yes |
no |
UNITS |
yes |
yes |
no |
NEURON |
yes |
yes |
yes |
VERBATIM |
yes |
yes |
no |
CONSTANT |
yes |
no |
no |
BEFORE |
yes |
no |
no |
AFTER |
yes |
no |
no |
STEP |
yes |
no |
no |
DISCRETE |
yes |
no |
no |
FUNCTION_TABLE |
yes |
yes |
no |
CONSTRUCTOR |
yes |
no |
yes |
DESTRUCTOR |
yes |
yes |
yes |
INDEPENDENT |
yes |
no |
yes |
Control Flow |
|||
WHILE |
yes |
yes |
no |
IF |
yes |
yes |
no |
ELSE IF |
yes |
yes |
no |
ELSE |
yes |
yes |
no |
Other |
|||
~ |
yes |
yes |
no |
-> |
yes |
yes |
no |
FOR_NETCONS |
yes |
yes |
no |
LOCAL |
yes |
yes |
no |
TITLE |
yes |
yes |
no |
DEFINE |
yes |
yes |
no |
INCLUDE |
yes |
yes |
no |
SWEEP |
yes |
yes |
no |
CONDUCTANCE |
yes |
yes |
no |
PROTECT |
yes |
no |
no |
FROM |
yes |
yes |
no |
WATCH |
yes |
yes |
no |
MUTEXLOCK |
yes |
no |
no |
MUTEXUNLOCK |
yes |
no |
no |
CONSERVE |
yes |
yes |
no |
COMPARTMENT |
yes |
yes |
no |
LONGITUDINAL_DIFFUSION |
yes |
no |
no |
LAG |
yes |
no |
no |
TABLE |
yes |
yes |
no |
USEION |
yes |
yes |
no |
READ |
yes |
yes |
no |
WRITE |
yes |
yes |
no |
VALENCE |
yes |
yes |
no |
REPRESENTS |
yes |
yes |
no |
NONSPECIFIC_CURRENT |
yes |
yes |
no |
ELECTRODE_CURRENT |
yes |
yes |
no |
SUFFIX |
yes |
yes |
no |
POINT_PROCESS |
yes |
yes |
no |
RANGE |
yes |
yes |
no |
GLOBAL |
yes |
yes |
no |
POINTER |
yes |
yes |
no |
BBCOREPOINTER |
yes |
yes |
no |
EXTERNAL |
yes |
no |
no |
THREADSAFE |
yes |
yes |
no |
COMMENT |
yes |
yes |
no |
SOLVE METHODs |
|||
cnexp |
yes |
yes |
|
euler |
yes |
yes |
|
derivimplicit |
yes |
yes |
|
sparse |
yes |
yes |
|
runge |
yes |
no |
|
after_cvode |
yes |
no |
|
simeq |
yes |
no |
|
cvode_t |
yes |
no |
|
cvode_v |
yes |
no |