File: language.rst

package info (click to toggle)
nmodl 0.6-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,992 kB
  • sloc: cpp: 28,492; javascript: 9,841; yacc: 2,804; python: 1,967; lex: 1,674; xml: 181; sh: 136; ansic: 37; makefile: 18; pascal: 7
file content (170 lines) | stat: -rw-r--r-- 14,567 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
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                |                     |
+------------------------+-------------------+-------------------+---------------------+