?prevdifflink? - Blame
\batchmode
%This Latex file is machine-generated by the BNF-converter
\documentclass[a4paper,11pt]{article}
\author{BNF-converter}
\title{The Language java}
\setlength{\parindent}{0mm}
\setlength{\parskip}{1mm}
\begin{document}
\maketitle
\newcommand{\emptyP}{\mbox{$\epsilon$}}
\newcommand{\terminal}[1]{\mbox{{\texttt {#1}}}}
\newcommand{\nonterminal}[1]{\mbox{$\langle \mbox{{\sl #1 }} \! \rangle$}}
\newcommand{\arrow}{\mbox{::=}}
\newcommand{\delimit}{\mbox{$|$}}
\newcommand{\reserved}[1]{\mbox{{\texttt {#1}}}}
\newcommand{\literal}[1]{\mbox{{\texttt {#1}}}}
\newcommand{\symb}[1]{\mbox{{\texttt {#1}}}}
This document was automatically generated by the {\em BNF-Converter}. It was generated together with the lexer, the parser, and the abstract syntax module, which guarantees that the document matches with the implementation of the language (provided no hand-hacking has taken place).
\section*{The lexical structure of java}
\subsection*{Identifiers}
Identifiers \nonterminal{Ident} are unquoted strings beginning with a letter,
followed by any combination of letters, digits, and the characters {\tt \_ '},
reserved words excluded.
\subsection*{Literals}
String literals \nonterminal{String}\ have the form
\terminal{"}$x$\terminal{"}, where $x$ is any sequence of any characters
except \terminal{"}\ unless preceded by \verb6\6.
Double-precision float literals \nonterminal{Double}\ have the structure
indicated by the regular expression $\nonterminal{digit}+ \mbox{{\it `.'}} \nonterminal{digit}+ (\mbox{{\it `e'}} \mbox{{\it `-'}}? \nonterminal{digit}+)?$ i.e.\
two sequences of digits separated by a decimal point, optionally
followed by an unsigned or negative exponent.
Integer literals \nonterminal{Int}\ are nonempty sequences of digits.
Unsigned literals are recognized by the regular expression
\([\mbox{``123456789''}] {\nonterminal{digit}}* (\mbox{`u'} \mid \mbox{`U'})\)
Long literals are recognized by the regular expression
\([\mbox{``123456789''}] {\nonterminal{digit}}* (\mbox{`l'} \mid \mbox{`L'})\)
UnsignedLong literals are recognized by the regular expression
\([\mbox{``123456789''}] {\nonterminal{digit}}* (\mbox{`u'} \mbox{`l'} \mid \mbox{`U'} \mbox{`L'})\)
Hexadecimal literals are recognized by the regular expression
\(\mbox{`0'} (\mbox{`x'} \mid \mbox{`X'}) ({\nonterminal{digit}} \mid [\mbox{``abcdef''}] \mid [\mbox{``ABCDEF''}])+\)
HexUnsigned literals are recognized by the regular expression
\(\mbox{`0'} (\mbox{`x'} \mid \mbox{`X'}) ({\nonterminal{digit}} \mid [\mbox{``abcdef''}] \mid [\mbox{``ABCDEF''}])+ (\mbox{`u'} \mid \mbox{`U'})\)
HexLong literals are recognized by the regular expression
\(\mbox{`0'} (\mbox{`x'} \mid \mbox{`X'}) ({\nonterminal{digit}} \mid [\mbox{``abcdef''}] \mid [\mbox{``ABCDEF''}])+ (\mbox{`l'} \mid \mbox{`L'})\)
HexUnsLong literals are recognized by the regular expression
\(\mbox{`0'} (\mbox{`x'} \mid \mbox{`X'}) ({\nonterminal{digit}} \mid [\mbox{``abcdef''}] \mid [\mbox{``ABCDEF''}])+ (\mbox{`u'} \mbox{`l'} \mid \mbox{`U'} \mbox{`L'})\)
Octal literals are recognized by the regular expression
\(\mbox{`0'} [\mbox{``01234567''}]*\)
OctalUnsigned literals are recognized by the regular expression
\(\mbox{`0'} [\mbox{``01234567''}]* (\mbox{`u'} \mid \mbox{`U'})\)
OctalLong literals are recognized by the regular expression
\(\mbox{`0'} [\mbox{``01234567''}]* (\mbox{`l'} \mid \mbox{`L'})\)
OctalUnsLong literals are recognized by the regular expression
\(\mbox{`0'} [\mbox{``01234567''}]* (\mbox{`u'} \mbox{`l'} \mid \mbox{`U'} \mbox{`L'})\)
JDouble literals are recognized by the regular expression
\(({\nonterminal{digit}}+ \mbox{`.'} \mid \mbox{`.'} {\nonterminal{digit}}+) ((\mbox{`e'} \mid \mbox{`E'}) \mbox{`{$-$}'}? {\nonterminal{digit}}+)? \mid {\nonterminal{digit}}+ (\mbox{`e'} \mid \mbox{`E'}) \mbox{`{$-$}'}? {\nonterminal{digit}}+ \mid {\nonterminal{digit}}+ \mbox{`.'} {\nonterminal{digit}}+ \mbox{`E'} \mbox{`{$-$}'}? {\nonterminal{digit}}+\)
JFloat literals are recognized by the regular expression
\(({\nonterminal{digit}}+ \mbox{`.'} {\nonterminal{digit}}+ \mid {\nonterminal{digit}}+ \mbox{`.'} \mid \mbox{`.'} {\nonterminal{digit}}+) ((\mbox{`e'} \mid \mbox{`E'}) \mbox{`{$-$}'}? {\nonterminal{digit}}+)? (\mbox{`f'} \mid \mbox{`F'}) \mid {\nonterminal{digit}}+ (\mbox{`e'} \mid \mbox{`E'}) \mbox{`{$-$}'}? {\nonterminal{digit}}+ (\mbox{`f'} \mid \mbox{`F'})\)
JLongDouble literals are recognized by the regular expression
\(({\nonterminal{digit}}+ \mbox{`.'} {\nonterminal{digit}}+ \mid {\nonterminal{digit}}+ \mbox{`.'} \mid \mbox{`.'} {\nonterminal{digit}}+) ((\mbox{`e'} \mid \mbox{`E'}) \mbox{`{$-$}'}? {\nonterminal{digit}}+)? (\mbox{`l'} \mid \mbox{`L'}) \mid {\nonterminal{digit}}+ (\mbox{`e'} \mid \mbox{`E'}) \mbox{`{$-$}'}? {\nonterminal{digit}}+ (\mbox{`l'} \mid \mbox{`L'})\)
UnicodeChar literals are recognized by the regular expression
\(\mbox{`''} \mbox{`$\backslash$'} \mbox{`u'} ({\nonterminal{digit}} \mid [\mbox{``abcdef''}] \mid [\mbox{``ABCDEF''}]) ({\nonterminal{digit}} \mid [\mbox{``abcdef''}] \mid [\mbox{``ABCDEF''}]) ({\nonterminal{digit}} \mid [\mbox{``abcdef''}] \mid [\mbox{``ABCDEF''}]) ({\nonterminal{digit}} \mid [\mbox{``abcdef''}] \mid [\mbox{``ABCDEF''}]) \mbox{`''}\)
JChar literals are recognized by the regular expression
\(\mbox{`''} ({\nonterminal{anychar}} - [\mbox{``'$\backslash$''}] \mid \mbox{`$\backslash$'} [\mbox{``'$\backslash$''}]) \mbox{`''}\)
\subsection*{Reserved words and symbols}
The set of reserved words is the set of terminals appearing in the grammar. Those reserved words that consist of non-letter characters are called symbols, and they are treated in a different way from those that are similar to identifiers. The lexer follows rules familiar from languages like Haskell, C, and Java, including longest match and spacing conventions.
The reserved words used in java are the following: \\
\begin{tabular}{lll}
{\reserved{abstract}} &{\reserved{boolean}} &{\reserved{break}} \\
{\reserved{byte}} &{\reserved{case}} &{\reserved{catch}} \\
{\reserved{char}} &{\reserved{class}} &{\reserved{continue}} \\
{\reserved{default}} &{\reserved{do}} &{\reserved{double}} \\
{\reserved{else}} &{\reserved{extends}} &{\reserved{false}} \\
{\reserved{final}} &{\reserved{finally}} &{\reserved{float}} \\
{\reserved{for}} &{\reserved{if}} &{\reserved{implements}} \\
{\reserved{import}} &{\reserved{instanceof}} &{\reserved{int}} \\
{\reserved{interface}} &{\reserved{long}} &{\reserved{native}} \\
{\reserved{new}} &{\reserved{null}} &{\reserved{package}} \\
{\reserved{private}} &{\reserved{protected}} &{\reserved{public}} \\
{\reserved{return}} &{\reserved{short}} &{\reserved{static}} \\
{\reserved{super}} &{\reserved{switch}} &{\reserved{synchronized}} \\
{\reserved{this}} &{\reserved{throw}} &{\reserved{throws}} \\
{\reserved{transient}} &{\reserved{true}} &{\reserved{try}} \\
{\reserved{volatile}} &{\reserved{while}} & \\
\end{tabular}\\
The symbols used in java are the following: \\
\begin{tabular}{lll}
{\symb{.*}} &{\symb{\{}} &{\symb{\}}} \\
{\symb{;}} &{\symb{(}} &{\symb{)}} \\
{\symb{:}} &{\symb{{$=$}}} &{\symb{,}} \\
{\symb{else if}} &{\symb{[]}} &{\symb{.}} \\
{\symb{?}} &{\symb{{$|$}{$|$}}} &{\symb{\&\&}} \\
{\symb{{$|$}}} &{\symb{\^}} &{\symb{\&}} \\
{\symb{{$=$}{$=$}}} &{\symb{!{$=$}}} &{\symb{{$<$}}} \\
{\symb{{$>$}}} &{\symb{{$<$}{$=$}}} &{\symb{{$>$}{$=$}}} \\
{\symb{{$<$}{$<$}}} &{\symb{{$>$}{$>$}}} &{\symb{{$>$}{$>$}{$>$}}} \\
{\symb{{$+$}}} &{\symb{{$-$}}} &{\symb{*}} \\
{\symb{/}} &{\symb{\%}} &{\symb{{$+$}{$+$}}} \\
{\symb{{$-$}{$-$}}} &{\symb{[}} &{\symb{]}} \\
{\symb{.this}} &{\symb{.class}} &{\symb{\~{}}} \\
{\symb{!}} &{\symb{*{$=$}}} &{\symb{/{$=$}}} \\
{\symb{\%{$=$}}} &{\symb{{$+$}{$=$}}} &{\symb{{$-$}{$=$}}} \\
{\symb{{$<$}{$<$}{$=$}}} &{\symb{{$>$}{$>$}{$=$}}} &{\symb{{$>$}{$>$}{$>$}{$=$}}} \\
{\symb{\&{$=$}}} &{\symb{\^{$=$}}} &{\symb{{$|$}{$=$}}} \\
\end{tabular}\\
\subsection*{Comments}
Single-line comments begin with {\symb{//}}. \\Multiple-line comments are enclosed with {\symb{/**}} and {\symb{**/}}, {\symb{/*}} and {\symb{*/}}.
\section*{The syntactic structure of java}
Non-terminals are enclosed between $\langle$ and $\rangle$.
The symbols {\arrow} (production), {\delimit} (union)
and {\emptyP} (empty rule) belong to the BNF notation.
All other symbols are terminals.\\
\begin{tabular}{lll}
{\nonterminal{ProgramFile}} & {\arrow} &{\terminal{package}} {\nonterminal{ListIdent}} {\nonterminal{ListSemi}} {\nonterminal{ListImport}} {\nonterminal{ListTypeDecl}} \\
& {\delimit} &{\nonterminal{ListImport}} {\nonterminal{ListTypeDecl}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Import}} & {\arrow} &{\terminal{import}} {\nonterminal{ListIdent}} {\nonterminal{ListSemi}} \\
& {\delimit} &{\terminal{import}} {\nonterminal{ListIdent}} {\terminal{.*}} {\nonterminal{ListSemi}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{ListImport}} & {\arrow} &{\emptyP} \\
& {\delimit} &{\nonterminal{Import}} {\nonterminal{ListImport}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{TypeDecl}} & {\arrow} &{\nonterminal{ClassHeader}} {\terminal{\{}} {\nonterminal{ListFieldDeclaration}} {\terminal{\}}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{ListTypeDecl}} & {\arrow} &{\emptyP} \\
& {\delimit} &{\nonterminal{TypeDecl}} {\nonterminal{ListTypeDecl}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{ClassHeader}} & {\arrow} &{\nonterminal{ListModifier}} {\terminal{class}} {\nonterminal{Ident}} \\
& {\delimit} &{\nonterminal{ListModifier}} {\terminal{class}} {\nonterminal{Ident}} {\terminal{extends}} {\nonterminal{ListTypeName}} \\
& {\delimit} &{\nonterminal{ListModifier}} {\terminal{class}} {\nonterminal{Ident}} {\terminal{implements}} {\nonterminal{ListTypeName}} \\
& {\delimit} &{\nonterminal{ListModifier}} {\terminal{class}} {\nonterminal{Ident}} {\terminal{extends}} {\nonterminal{ListTypeName}} {\terminal{implements}} {\nonterminal{ListTypeName}} \\
& {\delimit} &{\nonterminal{ListModifier}} {\terminal{interface}} {\nonterminal{Ident}} \\
& {\delimit} &{\nonterminal{ListModifier}} {\terminal{interface}} {\nonterminal{Ident}} {\terminal{extends}} {\nonterminal{ListTypeName}} \\
& {\delimit} &{\nonterminal{ListModifier}} {\terminal{interface}} {\nonterminal{Ident}} {\terminal{implements}} {\nonterminal{ListTypeName}} \\
& {\delimit} &{\nonterminal{ListModifier}} {\terminal{interface}} {\nonterminal{Ident}} {\terminal{extends}} {\nonterminal{ListTypeName}} {\terminal{implements}} {\nonterminal{ListTypeName}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{FieldDeclaration}} & {\arrow} &{\nonterminal{ListModifier}} {\nonterminal{TypeSpec}} {\nonterminal{ListVarDecl}} {\terminal{;}} \\
& {\delimit} &{\nonterminal{ListModifier}} {\nonterminal{TypeSpec}} {\nonterminal{MethodDecl}} {\nonterminal{MethodBody}} \\
& {\delimit} &{\nonterminal{ListModifier}} {\nonterminal{TypeSpec}} {\nonterminal{MethodDecl}} {\terminal{throws}} {\nonterminal{ListTypeName}} {\nonterminal{MethodBody}} \\
& {\delimit} &{\nonterminal{ListModifier}} {\nonterminal{Ident}} {\terminal{(}} {\nonterminal{ListParameter}} {\terminal{)}} {\nonterminal{Body}} \\
& {\delimit} &{\nonterminal{ListModifier}} {\nonterminal{Ident}} {\terminal{(}} {\nonterminal{ListParameter}} {\terminal{)}} {\terminal{throws}} {\nonterminal{ListTypeName}} {\nonterminal{Body}} \\
& {\delimit} &{\nonterminal{Body}} \\
& {\delimit} &{\nonterminal{TypeDecl}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{ListFieldDeclaration}} & {\arrow} &{\emptyP} \\
& {\delimit} &{\nonterminal{FieldDeclaration}} {\nonterminal{ListFieldDeclaration}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{MethodBody}} & {\arrow} &{\terminal{;}} \\
& {\delimit} &{\nonterminal{Body}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{LVarStatement}} & {\arrow} &{\nonterminal{TypeSpec}} {\nonterminal{ListVarDecl}} {\terminal{;}} \\
& {\delimit} &{\terminal{final}} {\nonterminal{TypeSpec}} {\nonterminal{ListVarDecl}} {\terminal{;}} \\
& {\delimit} &{\nonterminal{Stm}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{ListLVarStatement}} & {\arrow} &{\emptyP} \\
& {\delimit} &{\nonterminal{LVarStatement}} {\nonterminal{ListLVarStatement}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Body}} & {\arrow} &{\terminal{\{}} {\nonterminal{ListLVarStatement}} {\terminal{\}}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Stm}} & {\arrow} &{\terminal{;}} \\
& {\delimit} &{\nonterminal{Ident}} {\terminal{:}} \\
& {\delimit} &{\terminal{case}} {\nonterminal{Exp}} {\terminal{:}} \\
& {\delimit} &{\terminal{default}} {\terminal{:}} \\
& {\delimit} &{\nonterminal{Exp}} {\terminal{;}} \\
& {\delimit} &{\terminal{\{}} {\nonterminal{ListLVarStatement}} {\terminal{\}}} \\
& {\delimit} &{\nonterminal{JumpStm}} \\
& {\delimit} &{\nonterminal{GuardStm}} \\
& {\delimit} &{\nonterminal{IterStm}} \\
& {\delimit} &{\nonterminal{SelectionStm}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{DeclaratorName}} & {\arrow} &{\nonterminal{Ident}} \\
& {\delimit} &{\nonterminal{Ident}} {\nonterminal{ListBracketsOpt}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{VarDecl}} & {\arrow} &{\nonterminal{DeclaratorName}} {\terminal{{$=$}}} {\nonterminal{VariableInits}} \\
& {\delimit} &{\nonterminal{Ident}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{ListVarDecl}} & {\arrow} &{\nonterminal{VarDecl}} \\
& {\delimit} &{\nonterminal{VarDecl}} {\terminal{,}} {\nonterminal{ListVarDecl}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{VariableInits}} & {\arrow} &{\nonterminal{Exp}} \\
& {\delimit} &{\terminal{\{}} {\terminal{\}}} \\
& {\delimit} &{\terminal{\{}} {\nonterminal{ArrayInits}} {\terminal{\}}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{ArrayInits}} & {\arrow} &{\nonterminal{VariableInits}} \\
& {\delimit} &{\nonterminal{ArrayInits}} {\terminal{,}} {\nonterminal{VariableInits}} \\
& {\delimit} &{\nonterminal{ArrayInits}} {\terminal{,}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{MethodDecl}} & {\arrow} &{\nonterminal{DeclaratorName}} {\terminal{(}} {\nonterminal{ListParameter}} {\terminal{)}} \\
& {\delimit} &{\nonterminal{MethodDecl}} {\nonterminal{BracketsOpt}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Parameter}} & {\arrow} &{\nonterminal{TypeSpec}} {\nonterminal{DeclaratorName}} \\
& {\delimit} &{\terminal{final}} {\nonterminal{TypeSpec}} {\nonterminal{DeclaratorName}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{ListParameter}} & {\arrow} &{\emptyP} \\
& {\delimit} &{\nonterminal{Parameter}} \\
& {\delimit} &{\nonterminal{Parameter}} {\terminal{,}} {\nonterminal{ListParameter}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{SelectionStm}} & {\arrow} &{\terminal{if}} {\terminal{(}} {\nonterminal{Exp}} {\terminal{)}} {\nonterminal{Stm}} {\nonterminal{ListElseif}} \\
& {\delimit} &{\terminal{if}} {\terminal{(}} {\nonterminal{Exp}} {\terminal{)}} {\nonterminal{Stm}} {\nonterminal{ListElseif}} {\terminal{else}} {\nonterminal{Stm}} \\
& {\delimit} &{\terminal{switch}} {\terminal{(}} {\nonterminal{Exp}} {\terminal{)}} {\nonterminal{Body}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Elseif}} & {\arrow} &{\terminal{else if}} {\terminal{(}} {\nonterminal{Exp}} {\terminal{)}} {\nonterminal{Stm}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{ListElseif}} & {\arrow} &{\emptyP} \\
& {\delimit} &{\nonterminal{Elseif}} {\nonterminal{ListElseif}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{JumpStm}} & {\arrow} &{\terminal{break}} {\terminal{;}} \\
& {\delimit} &{\terminal{break}} {\nonterminal{Ident}} {\terminal{;}} \\
& {\delimit} &{\terminal{continue}} {\terminal{;}} \\
& {\delimit} &{\terminal{continue}} {\nonterminal{Ident}} {\terminal{;}} \\
& {\delimit} &{\terminal{return}} {\terminal{;}} \\
& {\delimit} &{\terminal{return}} {\nonterminal{Exp}} {\terminal{;}} \\
& {\delimit} &{\terminal{throw}} {\nonterminal{Exp}} {\terminal{;}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{GuardStm}} & {\arrow} &{\terminal{synchronized}} {\terminal{(}} {\nonterminal{Exp}} {\terminal{)}} {\nonterminal{Body}} \\
& {\delimit} &{\terminal{try}} {\nonterminal{Body}} {\nonterminal{ListCatch}} \\
& {\delimit} &{\terminal{try}} {\nonterminal{Body}} {\nonterminal{ListCatch}} {\terminal{finally}} {\nonterminal{Body}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Catch}} & {\arrow} &{\terminal{catch}} {\terminal{(}} {\nonterminal{TypeSpec}} {\nonterminal{Ident}} {\terminal{)}} {\nonterminal{Body}} \\
& {\delimit} &{\terminal{catch}} {\terminal{(}} {\nonterminal{TypeSpec}} {\terminal{)}} {\nonterminal{Body}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{ListCatch}} & {\arrow} &{\emptyP} \\
& {\delimit} &{\nonterminal{Catch}} {\nonterminal{ListCatch}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{IterStm}} & {\arrow} &{\terminal{while}} {\terminal{(}} {\nonterminal{Exp}} {\terminal{)}} {\nonterminal{Stm}} \\
& {\delimit} &{\terminal{do}} {\nonterminal{Stm}} {\terminal{while}} {\terminal{(}} {\nonterminal{Exp}} {\terminal{)}} \\
& {\delimit} &{\terminal{for}} {\terminal{(}} {\nonterminal{ForInit}} {\nonterminal{ListExp}} {\terminal{;}} {\nonterminal{ListExp}} {\terminal{)}} {\nonterminal{Stm}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{ForInit}} & {\arrow} &{\nonterminal{ListExp}} {\terminal{;}} \\
& {\delimit} &{\nonterminal{TypeSpec}} {\nonterminal{ListVarDecl}} {\terminal{;}} \\
& {\delimit} &{\terminal{final}} {\nonterminal{TypeSpec}} {\nonterminal{ListVarDecl}} {\terminal{;}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Modifier}} & {\arrow} &{\terminal{abstract}} \\
& {\delimit} &{\terminal{final}} \\
& {\delimit} &{\terminal{public}} \\
& {\delimit} &{\terminal{protected}} \\
& {\delimit} &{\terminal{private}} \\
& {\delimit} &{\terminal{transient}} \\
& {\delimit} &{\terminal{volatile}} \\
& {\delimit} &{\terminal{native}} \\
& {\delimit} &{\terminal{synchronized}} \\
& {\delimit} &{\terminal{static}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{ListModifier}} & {\arrow} &{\emptyP} \\
& {\delimit} &{\nonterminal{Modifier}} {\nonterminal{ListModifier}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{BasicType}} & {\arrow} &{\terminal{char}} \\
& {\delimit} &{\terminal{short}} \\
& {\delimit} &{\terminal{int}} \\
& {\delimit} &{\terminal{long}} \\
& {\delimit} &{\terminal{float}} \\
& {\delimit} &{\terminal{double}} \\
& {\delimit} &{\terminal{byte}} \\
& {\delimit} &{\terminal{boolean}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{TypeSpec}} & {\arrow} &{\nonterminal{TypeName}} {\nonterminal{ListBracketsOpt}} \\
& {\delimit} &{\nonterminal{TypeName}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{TypeName}} & {\arrow} &{\nonterminal{BasicType}} \\
& {\delimit} &{\nonterminal{ListIdent}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{ListTypeName}} & {\arrow} &{\nonterminal{TypeName}} \\
& {\delimit} &{\nonterminal{TypeName}} {\terminal{,}} {\nonterminal{ListTypeName}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{BracketsOpt}} & {\arrow} &{\terminal{[]}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{ListBracketsOpt}} & {\arrow} &{\nonterminal{BracketsOpt}} \\
& {\delimit} &{\nonterminal{BracketsOpt}} {\nonterminal{ListBracketsOpt}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{ListIdent}} & {\arrow} &{\nonterminal{Ident}} \\
& {\delimit} &{\nonterminal{Ident}} {\terminal{.}} {\nonterminal{ListIdent}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Exp}} & {\arrow} &{\nonterminal{Exp14}} {\nonterminal{Assignment-op}} {\nonterminal{Exp}} \\
& {\delimit} &{\nonterminal{Exp14}} {\terminal{instanceof}} {\nonterminal{TypeName}} \\
& {\delimit} &{\nonterminal{Exp1}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Exp2}} & {\arrow} &{\nonterminal{Exp3}} {\terminal{?}} {\nonterminal{Exp}} {\terminal{:}} {\nonterminal{Exp2}} \\
& {\delimit} &{\nonterminal{Exp3}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Exp3}} & {\arrow} &{\nonterminal{Exp3}} {\terminal{{$|$}{$|$}}} {\nonterminal{Exp4}} \\
& {\delimit} &{\nonterminal{Exp4}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Exp4}} & {\arrow} &{\nonterminal{Exp4}} {\terminal{\&\&}} {\nonterminal{Exp5}} \\
& {\delimit} &{\nonterminal{Exp5}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Exp5}} & {\arrow} &{\nonterminal{Exp5}} {\terminal{{$|$}}} {\nonterminal{Exp6}} \\
& {\delimit} &{\nonterminal{Exp6}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Exp6}} & {\arrow} &{\nonterminal{Exp6}} {\terminal{\^}} {\nonterminal{Exp7}} \\
& {\delimit} &{\nonterminal{Exp7}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Exp7}} & {\arrow} &{\nonterminal{Exp7}} {\terminal{\&}} {\nonterminal{Exp8}} \\
& {\delimit} &{\nonterminal{Exp8}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Exp8}} & {\arrow} &{\nonterminal{Exp8}} {\terminal{{$=$}{$=$}}} {\nonterminal{Exp9}} \\
& {\delimit} &{\nonterminal{Exp8}} {\terminal{!{$=$}}} {\nonterminal{Exp9}} \\
& {\delimit} &{\nonterminal{Exp9}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Exp9}} & {\arrow} &{\nonterminal{Exp9}} {\terminal{{$<$}}} {\nonterminal{Exp10}} \\
& {\delimit} &{\nonterminal{Exp9}} {\terminal{{$>$}}} {\nonterminal{Exp10}} \\
& {\delimit} &{\nonterminal{Exp9}} {\terminal{{$<$}{$=$}}} {\nonterminal{Exp10}} \\
& {\delimit} &{\nonterminal{Exp9}} {\terminal{{$>$}{$=$}}} {\nonterminal{Exp10}} \\
& {\delimit} &{\nonterminal{Exp10}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Exp10}} & {\arrow} &{\nonterminal{Exp10}} {\terminal{{$<$}{$<$}}} {\nonterminal{Exp11}} \\
& {\delimit} &{\nonterminal{Exp10}} {\terminal{{$>$}{$>$}}} {\nonterminal{Exp11}} \\
& {\delimit} &{\nonterminal{Exp10}} {\terminal{{$>$}{$>$}{$>$}}} {\nonterminal{Exp11}} \\
& {\delimit} &{\nonterminal{Exp11}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Exp11}} & {\arrow} &{\nonterminal{Exp11}} {\terminal{{$+$}}} {\nonterminal{Exp12}} \\
& {\delimit} &{\nonterminal{Exp11}} {\terminal{{$-$}}} {\nonterminal{Exp12}} \\
& {\delimit} &{\nonterminal{Exp12}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Exp12}} & {\arrow} &{\nonterminal{Exp12}} {\terminal{*}} {\nonterminal{Exp13}} \\
& {\delimit} &{\nonterminal{Exp12}} {\terminal{/}} {\nonterminal{Exp13}} \\
& {\delimit} &{\nonterminal{Exp12}} {\terminal{\%}} {\nonterminal{Exp13}} \\
& {\delimit} &{\nonterminal{Exp13}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Exp13}} & {\arrow} &{\terminal{(}} {\nonterminal{BasicType}} {\terminal{)}} {\nonterminal{Exp13}} \\
& {\delimit} &{\terminal{(}} {\nonterminal{Exp}} {\terminal{)}} {\nonterminal{Exp15}} \\
& {\delimit} &{\terminal{(}} {\nonterminal{ListIdent}} {\nonterminal{ListBracketsOpt}} {\terminal{)}} {\nonterminal{Exp13}} \\
& {\delimit} &{\nonterminal{Exp14}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Exp14}} & {\arrow} &{\nonterminal{Unary-operator}} {\nonterminal{Exp13}} \\
& {\delimit} &{\terminal{{$+$}{$+$}}} {\nonterminal{Exp14}} \\
& {\delimit} &{\terminal{{$-$}{$-$}}} {\nonterminal{Exp14}} \\
& {\delimit} &{\nonterminal{Exp15}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Exp15}} & {\arrow} &{\nonterminal{Exp15}} {\terminal{{$+$}{$+$}}} \\
& {\delimit} &{\nonterminal{Exp15}} {\terminal{{$-$}{$-$}}} \\
& {\delimit} &{\nonterminal{Exp16}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Exp16}} & {\arrow} &{\nonterminal{SpecName}} \\
& {\delimit} &{\nonterminal{ArrAcc}} \\
& {\delimit} &{\nonterminal{MthCall}} \\
& {\delimit} &{\nonterminal{FieldAcc}} \\
& {\delimit} &{\nonterminal{Constant}} \\
& {\delimit} &{\nonterminal{String}} \\
& {\delimit} &{\nonterminal{Exp17}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Exp17}} & {\arrow} &{\nonterminal{NewAlloc}} \\
& {\delimit} &{\nonterminal{Exp18}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Exp18}} & {\arrow} &{\nonterminal{ListIdent}} \\
& {\delimit} &{\terminal{(}} {\nonterminal{Exp}} {\terminal{)}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{SpecName}} & {\arrow} &{\terminal{super}} \\
& {\delimit} &{\terminal{this}} \\
& {\delimit} &{\terminal{null}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{NewAlloc}} & {\arrow} &{\terminal{new}} {\nonterminal{TypeName}} {\nonterminal{Args}} \\
& {\delimit} &{\terminal{new}} {\nonterminal{TypeName}} {\nonterminal{Args}} {\terminal{\{}} {\nonterminal{ListFieldDeclaration}} {\terminal{\}}} \\
& {\delimit} &{\terminal{new}} {\nonterminal{TypeName}} {\nonterminal{ListDimExpr}} \\
& {\delimit} &{\terminal{new}} {\nonterminal{TypeName}} {\nonterminal{ListDimExpr}} {\terminal{\{}} {\terminal{\}}} \\
& {\delimit} &{\terminal{new}} {\nonterminal{TypeName}} {\nonterminal{ListDimExpr}} {\terminal{\{}} {\nonterminal{ArrayInits}} {\terminal{\}}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{ArrAcc}} & {\arrow} &{\nonterminal{ListIdent}} {\terminal{[}} {\nonterminal{Exp}} {\terminal{]}} \\
& {\delimit} &{\nonterminal{SpecExp}} {\terminal{[}} {\nonterminal{Exp}} {\terminal{]}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{SpecExp}} & {\arrow} &{\terminal{(}} {\nonterminal{Exp}} {\terminal{)}} \\
& {\delimit} &{\nonterminal{SpecExpNP}} \\
& {\delimit} &{\nonterminal{SpecName}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{SpecExpNP}} & {\arrow} &{\nonterminal{Constant}} \\
& {\delimit} &{\nonterminal{ArrAcc}} \\
& {\delimit} &{\nonterminal{MthCall}} \\
& {\delimit} &{\nonterminal{FieldAcc}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{MthCall}} & {\arrow} &{\nonterminal{ListIdent}} {\nonterminal{Args}} \\
& {\delimit} &{\nonterminal{SpecExpNP}} {\nonterminal{Args}} \\
& {\delimit} &{\nonterminal{SpecName}} {\nonterminal{Args}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{FieldAcc}} & {\arrow} &{\nonterminal{SpecExp}} {\terminal{.}} {\nonterminal{Ident}} \\
& {\delimit} &{\nonterminal{NewAlloc}} {\terminal{.}} {\nonterminal{Ident}} \\
& {\delimit} &{\nonterminal{ListIdent}} {\terminal{.this}} \\
& {\delimit} &{\nonterminal{ListIdent}} {\terminal{.class}} \\
& {\delimit} &{\nonterminal{BasicType}} {\terminal{.class}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Args}} & {\arrow} &{\terminal{(}} {\nonterminal{ListExp}} {\terminal{)}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{DimExpr}} & {\arrow} &{\terminal{[}} {\nonterminal{Exp}} {\terminal{]}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{ListDimExpr}} & {\arrow} &{\nonterminal{DimExpr}} \\
& {\delimit} &{\nonterminal{DimExpr}} {\nonterminal{ListDimExpr}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{ListExp}} & {\arrow} &{\emptyP} \\
& {\delimit} &{\nonterminal{Exp}} \\
& {\delimit} &{\nonterminal{Exp}} {\terminal{,}} {\nonterminal{ListExp}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Exp1}} & {\arrow} &{\nonterminal{Exp2}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Constant}} & {\arrow} &{\nonterminal{Double}} \\
& {\delimit} &{\nonterminal{JChar}} \\
& {\delimit} &{\nonterminal{UnicodeChar}} \\
& {\delimit} &{\nonterminal{Unsigned}} \\
& {\delimit} &{\nonterminal{Long}} \\
& {\delimit} &{\nonterminal{UnsignedLong}} \\
& {\delimit} &{\nonterminal{Hexadecimal}} \\
& {\delimit} &{\nonterminal{HexUnsigned}} \\
& {\delimit} &{\nonterminal{HexLong}} \\
& {\delimit} &{\nonterminal{HexUnsLong}} \\
& {\delimit} &{\nonterminal{Octal}} \\
& {\delimit} &{\nonterminal{OctalUnsigned}} \\
& {\delimit} &{\nonterminal{OctalLong}} \\
& {\delimit} &{\nonterminal{OctalUnsLong}} \\
& {\delimit} &{\nonterminal{JDouble}} \\
& {\delimit} &{\nonterminal{JFloat}} \\
& {\delimit} &{\nonterminal{JLongDouble}} \\
& {\delimit} &{\nonterminal{Integer}} \\
& {\delimit} &{\terminal{true}} \\
& {\delimit} &{\terminal{false}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Unary-operator}} & {\arrow} &{\terminal{{$+$}}} \\
& {\delimit} &{\terminal{{$-$}}} \\
& {\delimit} &{\terminal{\~{}}} \\
& {\delimit} &{\terminal{!}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Assignment-op}} & {\arrow} &{\terminal{{$=$}}} \\
& {\delimit} &{\terminal{*{$=$}}} \\
& {\delimit} &{\terminal{/{$=$}}} \\
& {\delimit} &{\terminal{\%{$=$}}} \\
& {\delimit} &{\terminal{{$+$}{$=$}}} \\
& {\delimit} &{\terminal{{$-$}{$=$}}} \\
& {\delimit} &{\terminal{{$<$}{$<$}{$=$}}} \\
& {\delimit} &{\terminal{{$>$}{$>$}{$=$}}} \\
& {\delimit} &{\terminal{{$>$}{$>$}{$>$}{$=$}}} \\
& {\delimit} &{\terminal{\&{$=$}}} \\
& {\delimit} &{\terminal{\^{$=$}}} \\
& {\delimit} &{\terminal{{$|$}{$=$}}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{Semi}} & {\arrow} &{\terminal{;}} \\
\end{tabular}\\
\begin{tabular}{lll}
{\nonterminal{ListSemi}} & {\arrow} &{\emptyP} \\
& {\delimit} &{\nonterminal{Semi}} {\nonterminal{ListSemi}} \\
\end{tabular}\\
\end{document}
|