Skip to content

Commit

Permalink
Add bnf latex file for source 4 GPU (source-academy#588)
Browse files Browse the repository at this point in the history
  • Loading branch information
rrtheonlyone authored Apr 30, 2020
1 parent 19b5b92 commit 345f9ef
Showing 1 changed file with 71 additions and 0 deletions.
71 changes: 71 additions & 0 deletions docs/specs/source_gpu_bnf.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
\begin{alignat*}{9}
&& \textit{gpu\_statement}
&&\quad ::= &\quad
&& \textbf{\texttt{for}}\ \textbf{\texttt{(}}
\ \textit{gpu\_for\_let} \textbf{\texttt{;}} \\
&& && &\quad && \ \ \ \ \ \ \ \ \textit{gpu\_condition} \textbf{\texttt{;}} \\
&& && &\quad && \ \ \ \ \ \ \ \ \textit{gpu\_for\_assignment} \ \textbf{\texttt{)}} \ gpu\_block \textbf{\texttt{;}} \\
&& \textit{gpu\_for\_let}
&&\quad ::= &\quad
&& \textbf{\texttt{let}}\ \textit{name} \
\textbf{\texttt{=}}\ \textbf{\texttt{0}} \ \textbf{\texttt{;}} \\
&& \textit{gpu\_for\_condition}
&&\quad ::= &\quad
&& \textit{name} \
\textbf{\texttt{<}}\ (\textit{number} \ | \ \textit{name})\ \textbf{\texttt{;}} \\
&& && | &\quad && \textit{name} \ \textbf{\texttt{<=}}\ (\textit{number} \ | \ \textit{name})\ \textbf{\texttt{;}} \\
&& \textit{gpu\_for\_assignment}
&&\quad ::= &\quad
&& \textit{name} \ \textbf{\texttt{=}}\ \textit{name} \ \textbf{\texttt{+}} \ \textbf{\texttt{1}} \ \textbf{\texttt{;}} \\
&& \textit{gpu\_block}
&&\quad ::= &\quad
&& \{ \ \textit{gpu\_statement} \ \} \ | \ \{ \ \textit{core\_statements} \ \} \\
&& \textit{core\_statements}
&&\quad ::= &\quad
&& \textit{core\_statement} {\ldots} \ \textit{gpu\_result\_assignment} \\
&& \textit{gpu\_result\_assignment}
&&\quad ::= &\quad
&& \textit{gpu\_access} \textbf{\texttt{[}} \textit{gpu\_name} \textbf{\texttt{]}}\ \textbf{\texttt{=}}\ \textit{gpu\_result} \ \textbf{\texttt{;}} \\
&& \textit{gpu\_access}
&&\quad ::= &\quad && \textit{name} \ | \
\textit{gpu\_access} \textbf{\texttt{[}} \textit{gpu\_name} \textbf{\texttt{]}}\ \\
&& \textit{gpu\_result}
&&\quad ::= &\quad && \textit{number} \ | \
\textbf{\texttt{[}}\ \textit{gpu\_result} {\ldots}\ \textbf{\texttt{]}}\ \\
&& \textit{core\_statement}
&&\quad ::= &\quad
&& \textbf{\texttt{const}}\ \textit{name} \
\textbf{\texttt{=}}\ \textit{gpu\_expression} \ \textbf{\texttt{;}} \\
&& && | &\quad && \textit{gpu\_let} \ \textbf{\texttt{;}} \\
&& && | &\quad && \textit{gpu\_assignment} \ \textbf{\texttt{;}} \\
&& && | &\quad && \textit{gpu\_expression} \textbf{\texttt{[}} \textit{gpu\_expression} \textbf{\texttt{]}}\ \textbf{\texttt{=}}\ \textit{gpu\_expression} \ \textbf{\texttt{;}} \\
&& && | &\quad && \textbf{\texttt{while}} \textbf{\texttt{(}}\ \textit{gpu\_expression} \ \textbf{\texttt{)}} \ \textit{gpu\_block} \\
&& && | &\quad && \textbf{\texttt{for}}\ \textbf{\texttt{(}}
\ ( \ \textit{gpu\_assignment} \ | \ \textit{gpu\_let} \ )\textbf{\texttt{;}} \\
&& && &\quad && \ \ \ \ \ \ \ \ \textit{gpu\_expression} \textbf{\texttt{;}} \\
&& && &\quad && \ \ \ \ \ \ \ \ \textit{gpu\_assignment} \ ) \ gpu\_block \\
&& \textit{gpu\_assignment}
&&\quad ::= &\quad
&& \textit{name} \ \textbf{\texttt{=}}\ \textit{gpu\_expression} \\
&& \textit{gpu\_let}
&&\quad ::= &\quad
&& \textbf{\texttt{let}} \ \textit{name} \ \textbf{\texttt{=}}\ \textit{gpu\_expression} \\
&& \textit{gpu\_expression}
&&\quad ::= &\quad
&& \textit{number} \\
&& && | &\quad && \textbf{\texttt{true}} \ | \ \textbf{\texttt{false}} \\
&& && | &\quad && \textbf{\texttt{null}} \\
&& && | &\quad && \textit{name}\\
&& && | &\quad && \textit{string}\\
&& && | &\quad && \textit{gpu\_expression} \ \textit{binary\_operator} \ \textit{gpu\_expression} \\
&& && | &\quad && \textit{unary\_operator} \ \textit{gpu\_expression} \\
&& && | &\quad && \textit{gpu\_function} ( \ \textit{gpu\_expressions} \ ) \\
&& && | &\quad && \textit{gpu\_expression} \ \textbf{\texttt{?}} \ \textit{gpu\_expression} \ \textbf{\texttt{:}} \ \textit{gpu\_expression} \\
&& && | &\quad && \textit{gpu\_expression} \ [ \ \ \textit{gpu\_expression} \ ] \ \\
&& && | &\quad && [ \ \ \textit{gpu\_expressions} \ ] \ \\
&& && | &\quad && ( \ \ \textit{gpu\_expression} \ ) \ \\
&& \textit{gpu\_expressions}
&&\quad ::= &\quad
&& \epsilon \ | \ \textit{gpu\_expression} \ ( \ \ , \ \textit{gpu\_expression} \ )
\ {\ldots}
\end{alignat*}

0 comments on commit 345f9ef

Please sign in to comment.