Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Annotation of /branches/vis12-cl/doc/report/grammar-defs.tex
ViewVC logotype

Annotation of /branches/vis12-cl/doc/report/grammar-defs.tex

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3226 - (view) (download) (as text)

1 : jhr 97 %!TEX root = report.tex
2 :     %
3 :     % Macros for the various rules of the Diderot grammar. We collect the
4 :     % grammer into these macros to ensure consistency between the collected
5 :     % syntax and the body of the text.
6 :     %
7 :     \newcommand{\ProgramRULES}{
8 :     \begin{Rules}{Program}
9 : jhr 2276 \RHS{\LIST{\nt{GlobalDecl}} \nt{StrandDecl} \nt{InitialDecl}}
10 : jhr 97 \end{Rules}}
11 : jhr 2276 \newcommand{\GlobalDeclRULES}{
12 : jhr 97 \begin{Rules}{Declaration}
13 : jhr 2276 \RHS{\nt{VarDecl}}
14 : jhr 97 \RHS{\nt{InputDecl}}
15 : jhr 2275 \RHS{\nt{FuncDecl}}
16 : jhr 97 \end{Rules}}
17 :     \newcommand{\InputDeclRULES}{
18 :     \begin{Rules}{InputDecl}
19 : jhr 2276 \RHS{\kw{input} \nt{Type} \term{Id} \OPTGRP{\kw{(} \term{String} \kw{)}} \OPTGRP{\kw{=} \nt{Initializer}} \kw{;}}
20 : jhr 97 \end{Rules}}
21 : jhr 2275 \newcommand{\FuncDeclRULES}{
22 :     \begin{Rules}{FuncDecl}
23 :     \RHS{\kw{function} \nt{Type} \term{Id} \kw{(} \nt{Params} \kw{)} \kw{=} \nt{Expr} \kw{;}}
24 :     \RHS{\kw{function} \nt{Type} \term{Id} \kw{(} \nt{Params} \kw{)} \nt{Block}}
25 :     \end{Rules}}
26 : jhr 97 \newcommand{\ParamsRULES}{
27 :     \begin{Rules}{Params}
28 :     \RHS{\OPTGRP{\nt{Param} \LISTGRP{\kw{,} \nt{Param}}}}
29 :     \end{Rules}}
30 :     \newcommand{\ParamRULES}{
31 :     \begin{Rules}{Param}
32 : jhr 101 \RHS{\nt{ValueType} \term{Id}}
33 : jhr 97 \end{Rules}}
34 : jhr 2276 \newcommand{\StrandDeclRULES}{
35 :     \begin{Rules}{StrandDecl}
36 :     \RHS{\kw{strand} \term{Id} \kw{(} \nt{Params} \kw{)} \kw{\{} \LISTGRP{\nt{StrandStateDecl}} \LISTONEGRP{\nt{StrandMethod}} \kw{\}}}
37 :     \end{Rules}}
38 : jhr 1116 \newcommand{\StrandStateDeclRULES}{
39 :     \begin{Rules}{StrandStateDecl}
40 : jhr 162 \RHS{\OPT{\kw{output}} \nt{VarDecl}}
41 :     \end{Rules}}
42 : jhr 1116 \newcommand{\StrandMethodRULES}{
43 :     \begin{Rules}{StrandMethod}
44 : jhr 335 \RHS{\nt{MethodId} \nt{Block}}
45 : jhr 97 \end{Rules}}
46 : jhr 335 \newcommand{\MethodIdRULES}{
47 :     \begin{Rules}{MethodId}
48 :     \RHS{\kw{update}}
49 :     \RHS{\kw{stabilize}}
50 :     \RHS{\term{Id}}
51 :     \end{Rules}}
52 : jhr 97 \newcommand{\BlockRULES}{
53 :     \begin{Rules}{Block}
54 :     \RHS{\kw{\{} \LISTGRP{\nt{Stmt}} \kw{\}}}
55 :     \end{Rules}}
56 :     \newcommand{\StmtRULES}{
57 :     \begin{Rules}{Stmt}
58 :     \RHS{\nt{Block}}
59 :     \RHS{\nt{VarDecl}}
60 : jhr 3226 \RHS{\kw{continue} \kw{;}}
61 : jhr 97 \RHS{\kw{stabilize} \kw{;}}
62 :     \RHS{\kw{die} \kw{;}}
63 : jhr 2275 \RHS{\kw{return} \nt{Expr} \kw{;}}
64 : jhr 97 \RHS{\kw{new} \term{Id} \kw{(} \nt{Arguments} \kw{)} \kw{;}}
65 :     \RHS{\term{Id} \kw{=} \nt{Expr} \kw{;}}
66 :     \RHS{\kw{if} \kw{(} \nt{Expr} \kw{)} \nt{Stmt} \kw{else} \nt{Stmt}}
67 :     \RHS{\kw{if} \kw{(} \nt{Expr} \kw{)} \nt{Stmt}}
68 :     \end{Rules}}
69 :     \newcommand{\VarDeclRULES}{
70 :     \begin{Rules}{VarDecl}
71 :     \RHS{\nt{Type} \term{Id} \kw{=} \nt{Expr} \kw{;}}
72 :     \end{Rules}}
73 :     \newcommand{\TypeRULES}{
74 :     \begin{Rules}{Type}
75 : jhr 101 \RHS{\kw{image} \kw{(} \term{Int} \kw{)} \nt{Dimensions}}
76 :     \RHS{\kw{field} \kw{\#} \term{Int} \kw{(} \term{Int} \kw{)} \nt{Dimensions}}
77 :     \RHS{\kw{kernel} \kw{\#} \term{Int}}
78 : jhr 1116 \RHS{\nt{ValueType} \LISTGRP{\kw{\{} \term{Int} \kw{\}}}}
79 : jhr 97 \end{Rules}}
80 : jhr 98 \newcommand{\ValueTypeRULES}{
81 :     \begin{Rules}{ValueType}
82 : jhr 1116 \RHS{\kw{tensor} \nt{Dimensions}}
83 : jhr 101 \RHS{\kw{real}}
84 : jhr 98 \RHS{\kw{vec2}}
85 :     \RHS{\kw{vec3}}
86 :     \RHS{\kw{vec4}}
87 : jhr 1116 \RHS{\kw{bool}}
88 :     \RHS{\kw{int}}
89 :     \RHS{\kw{string}}
90 : jhr 98 \end{Rules}}
91 :     \newcommand{\DimensionsRULES}{
92 :     \begin{Rules}{Dimensions}
93 : jhr 1116 \RHS{\kw{[} \OPTGRP{\term{Int} \LISTGRP{\kw{,} \term{Int}}} \kw{]}}
94 : jhr 98 \end{Rules}}
95 : jhr 2276 \newcommand{\InitialDeclRULES}{
96 :     \begin{Rules}{InitialDecl}
97 : jhr 97 \RHS{\kw{initially} \nt{\GRP{\nt{Array} $\;|\;$ \nt{Collection}}} \kw{;}}
98 :     \end{Rules}}
99 :     \newcommand{\ArrayRULES}{
100 :     \begin{Rules}{Array}
101 :     \RHS{\kw{[} \nt{Create} \kw{|} \nt{Iterations} \kw{]}}
102 :     \end{Rules}}
103 :     \newcommand{\CollectionRULES}{
104 :     \begin{Rules}{Collection}
105 :     \RHS{\kw{\{} \nt{Create} \kw{|} \nt{Iterations} \kw{]}}
106 :     \end{Rules}}
107 :     \newcommand{\CreateRULES}{
108 :     \begin{Rules}{Create}
109 :     \RHS{\term{Id} \kw{(} \nt{Arguments} \kw{)}}
110 :     \end{Rules}}
111 :     \newcommand{\IterationsRULES}{
112 :     \begin{Rules}{Iterations}
113 :     \RHS{\nt{Iteration} \LISTONEGRP{\kw{,} \nt{Iteration}}}
114 :     \end{Rules}}
115 :     \newcommand{\IterationRULES}{
116 :     \begin{Rules}{Iteration}
117 :     \RHS{\term{Id} \kw{in} \nt{Expr} \kw{..} \nt{Expr}}
118 :     \end{Rules}}
119 :     \newcommand{\ExprRULES}{
120 :     \begin{Rules}{Expr}
121 : jhr 2275 \RHS{\nt{OrExpr} \OPTGRP{\kw{if} \nt{Expr} \kw{else} \nt{Expr}}}
122 : jhr 378 \end{Rules}}
123 : jhr 2275 \newcommand{\OrExprRULES}{
124 :     \begin{Rules}{OrExpr}
125 : jhr 97 \RHS{\nt{AndExpr} \LISTGRP{\kw{||} \nt{AndExpr}}}
126 :     \end{Rules}}
127 :     \newcommand{\AndExprRULES}{
128 :     \begin{Rules}{AndExpr}
129 :     \RHS{\nt{CmpExpr} \LISTGRP{\kw{\&\&} \nt{CmpExpr}}}
130 :     \end{Rules}}
131 :     \newcommand{\CmpExprRULES}{
132 : jhr 378 \begin{Rules}{CmpExpr}
133 : jhr 97 \RHS{\nt{AddExpr} \LISTGRP{\nt{CmpOp} \nt{AddExpr}}}
134 :     \end{Rules}}
135 :     \newcommand{\AddExprRULES}{
136 :     \begin{Rules}{AddExpr}
137 :     \RHS{\nt{MulExpr} \LISTGRP{\nt{AddOp} \nt{MulExpr}}}
138 :     \end{Rules}}
139 :     \newcommand{\MulExprRULES}{
140 :     \begin{Rules}{MulExpr}
141 : jhr 1116 \RHS{\nt{PowerExpr} \LISTGRP{\nt{MulOp} \nt{PowerExpr}}}
142 : jhr 97 \end{Rules}}
143 : jhr 1116 \newcommand{\PowerExprRULES}{
144 :     \begin{Rules}{PowerExpr}
145 :     \RHS{\nt{ProbeExpr} \LISTGRP{\kw{\^} \nt{ProbeExpr}}}
146 :     \end{Rules}}
147 : jhr 386 \newcommand{\ProbeExprRULES}{
148 :     \begin{Rules}{ProbeExpr}
149 :     \RHS{\nt{PrefixExpr} \OPTGRP{\kw{@} \nt{AtomExpr}}}
150 :     \end{Rules}}
151 : jhr 97 \newcommand{\PrefixExprRULES}{
152 :     \begin{Rules}{PrefixExpr}
153 : jhr 1116 \RHS{\nt{SuffixExpr}}
154 : jhr 97 \RHS{\kw{-} \nt{PrefixExpr}}
155 :     \RHS{\kw{!} \nt{PrefixExpr}}
156 :     \RHS{\kw{D} \nt{PrefixExpr}}
157 :     \end{Rules}}
158 : jhr 1116 \newcommand{\SuffixExprRULES}{
159 :     \begin{Rules}{SuffixExpr}
160 :     \RHS{\nt{DerivExpr} \LIST{\nt{Suffix}}}
161 : jhr 97 \end{Rules}}
162 : jhr 1116 \newcommand{\SuffixRULES}{
163 :     \begin{Rules}{Suffix}
164 :     \RHS{\kw{(} \nt{Arguments} \kw{)}}
165 :     \RHS{\kw{[} \nt{Index} \LISTGRP{\kw{,} \nt{Index}} \kw{]}}
166 :     \RHS{\kw{\{} Expr \kw{\}}}
167 :     \end{Rules}}
168 : jhr 386 \newcommand{\IndexRULES}{
169 :     \begin{Rules}{Index}
170 :     \RHS{\kw{:}}
171 :     \RHS{\nt{Expr}}
172 :     \end{Rules}}
173 : jhr 1116 \newcommand{\DerivExprRULES}{
174 :     \begin{Rules}{DerivExpr}
175 :     \RHS{\nt{AtomExpr}}
176 :     \RHS{\nt{$\mathbf{\nabla}$} \nt{AtomExpr}}
177 :     \RHS{\nt{$\mathbf{\nabla\otimes}$} \nt{DerivExpr}}
178 :     \RHS{\nt{$\mathbf{\nabla\times}$} \nt{DerivExpr}}
179 :     \RHS{\nt{$\mathbf{\nabla\bullet}$} \nt{DerivExpr}}
180 :     \end{Rules}}
181 :     \newcommand{\AtomExprRULES}{
182 :     \begin{Rules}{AtomExpr}
183 :     \RHS{\term{Id}}
184 :     \RHS{\kw{identity} \kw{[} \term{Int} \kw{]}}
185 :     \RHS{\kw{zeros} \nt{Dimensions}}
186 : jhr 98 \RHS{\kw{real} \kw{(} \nt{Expr} \kw{)}}
187 : jhr 1116 \RHS{\kw{(} \nt{Expr} \LISTGRP{\kw{,} \nt{Expr}} \kw{)}}
188 :     \RHS{\kw{\{} \nt{Expr} \LISTGRP{\kw{,} \nt{Expr}} \kw{\}}}
189 : jhr 98 \RHS{\kw{[} \nt{Expr} \LISTGRP{\kw{,} \nt{Expr}} \kw{]}}
190 : jhr 97 \RHS{\term{Int}}
191 :     \RHS{\term{Float}}
192 :     \RHS{\term{String}}
193 : jhr 100 \RHS{\kw{|} \nt{Expr} \kw{|}}
194 : jhr 97 \end{Rules}}
195 :     \newcommand{\ArgumentsRULES}{
196 :     \begin{Rules}{Arguments}
197 :     \RHS{\OPTGRP{\nt{Expr} \LISTGRP{\kw{,} \nt{Expr}}}}
198 :     \end{Rules}}
199 :     \newcommand{\CmpOpRULES}{
200 :     \begin{Rules}{CmpOp}
201 :     \RHS{\kw{<}}
202 :     \RHS{\kw{<=}}
203 :     \RHS{\kw{==}}
204 :     \RHS{\kw{!=}}
205 :     \RHS{\kw{>=}}
206 :     \RHS{\kw{>}}
207 :     \end{Rules}}
208 :     \newcommand{\AddOpRULES}{
209 :     \begin{Rules}{AddOp}
210 :     \RHS{\kw{+}}
211 :     \RHS{\kw{-}}
212 :     \end{Rules}}
213 :     \newcommand{\MulOpRULES}{
214 :     \begin{Rules}{MulOp}
215 :     \RHS{\kw{*}}
216 :     \RHS{\kw{/}}
217 : jhr 1116 \RHS{$\mathbf{\circledast}$}
218 :     \RHS{$\mathbf{\otimes}$}
219 :     \RHS{$\mathbf{\bullet}$}
220 : jhr 97 \end{Rules}}

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0