\[
\newcommand{\tr}{\Rightarrow}
\newcommand{\trs}{\tr^{\!\ast}}
\newcommand{\rlnm}[1]{\mathsf{(#1)}}
\newcommand{\rred}[1]{\xrightarrow{#1}}
\newcommand{\rreds}[1]{\mathrel{\xrightarrow{#1}\!\!^*}}
\newcommand{\cl}{\mathsf{Cl}}
\newcommand{\pow}{\mathcal{P}}
\newcommand{\matches}{\mathrel{\mathsf{matches}}}
\newcommand{\kw}[1]{\mathsf{#1}}
\newcommand{\andop}{\mathrel{\&\!\&}}
\newcommand{\orop}{\mathrel{\|}}
\newcommand{\ff}{\mathsf{false}}
\newcommand{\tt}{\mathsf{true}}
\newcommand{\abra}[1]{\langle #1 \rangle}
\newcommand{\bnfnt}[1]{\abra{\small \textsf{#1}}}
\newcommand{\llbracket}{[\![}
\newcommand{\rrbracket}{]\!]}
\newcommand{\first}{\mathsf{First}}
\newcommand{\nullable}{\mathsf{Nullable}}
\newcommand{\follow}{\mathsf{Follow}}
\newcommand{\tm}[1]{\mathsf{#1}}
\]
|
( |
) |
$\andop$ |
$\orop$ |
$\tt$ |
$\ff$ |
$\tm{id}$ |
\$ |
$S$ |
$S \longrightarrow D$$ |
|
|
|
$S \longrightarrow D$$ |
$S \longrightarrow D$$ |
$S \longrightarrow D$$ |
|
$D$ |
$D \longrightarrow CD’$ |
|
|
|
$D \longrightarrow CD’$ |
$D \longrightarrow CD’$ |
$D \longrightarrow CD’$ |
|
$D’$ |
|
$D’ \longrightarrow \epsilon$ |
|
$D’ \longrightarrow \mathord{\orop}\,C\,D’$ |
|
|
|
$D’ \longrightarrow \epsilon$ |
$C$ |
$C \longrightarrow A\,C’$ |
|
|
|
$C \longrightarrow A\,C’$ |
$C \longrightarrow A\,C’$ |
$C \longrightarrow A\,C’$ |
|
$C’$ |
|
$C’ \longrightarrow \epsilon$ |
$C’ \longrightarrow \mathord{\andop}\,A\,C’$ |
$C’ \longrightarrow \epsilon$ |
|
|
|
$C’ \longrightarrow \epsilon$ |
$A$ |
$A \longrightarrow (D)$ |
|
|
|
$A \longrightarrow \tt$ |
$A \longrightarrow \ff$ |
$A \longrightarrow \tm{id}$ |
|