@@ -55,6 +55,7 @@ \section{Language grammar}
55
55
\alt `0x' <HexDigit>
56
56
\end {grammar }
57
57
58
+ % XXX: Is this sufficient for a <Identifier>
58
59
\begin {grammar }
59
60
<Identifier> ::= <Word> \{ ( <DecDigitWithZero> | <Word> ) \} ;
60
61
@@ -102,7 +103,6 @@ \section{Language grammar}
102
103
tracing the kernel, but also allows trivial translation to other ABIs. We
103
104
specify \texttt {StructOrUnionSpec } as follows:
104
105
105
- % FIXME: SturctOrUnionSpec should include things like typedef and so on
106
106
\begin {grammar }
107
107
<StructOrUnionSpec> ::= <Modifier> ( `struct' | `union' ) [ <Identifier> ] \newline
108
108
`{' <StructDeclList> `}' [ <VarList> ] `;'
@@ -122,6 +122,7 @@ \section{Language grammar}
122
122
modifiers that may occur before a \texttt {struct } or \texttt {enum } definition.
123
123
It is defined as follows:
124
124
125
+ % XXX: Verify that this is correct
125
126
\begin {grammar }
126
127
<Modifier> ::= `const'
127
128
\alt `volatile'
@@ -140,6 +141,32 @@ \section{Language grammar}
140
141
treat misuse of a modifier as an error. Using these modifiers when not
141
142
applicable is considered undefined behaviour. \newline
142
143
144
+ \noindent
145
+ Since D is a domain-specific language for tracing and provides probes in the
146
+ kenrel, we define the following way of specifying probes:
147
+
148
+ % TODO: Make this render a bit nicer.
149
+ % XXX: Is this correct?
150
+ \begin {grammar }
151
+ <ProbeSpecifier> ::= <Identifier>
152
+ \alt [ <Identifier> ] `:' [ <Identifier> ]
153
+ \alt [ <Identifier> ] `:' [ <Identifier> ] `:' [ <Identifier> ]
154
+ \alt [ <Identifier> ] `:' [ <Identifier> ] `:'
155
+ [ <Identifier> ] `:' [ <Identifier> ]
156
+ \end {grammar }
157
+
158
+ \noindent
159
+ This provides us with a way to specify the \texttt {provider }, \texttt {module },
160
+ \texttt {function } and \texttt {name } of a DTrace probe in D.
161
+
162
+ % TODO: Define <Predicate> and <Statements>
163
+ \begin {grammar }
164
+ <ProbeDefinition> ::= <ProbeSpecifier> [ <Predicate> ] `{' { <Statement> } `}'
165
+ \end {grammar }
166
+
167
+ % TODO: Define all different types of expressions that we can have, assignment
168
+ % operators, conditionals, ...
169
+
143
170
\section {Safety }
144
171
\label {sec:safety }
145
172
0 commit comments