Subversion

guisurfer_software

?curdirlinks? - Rev 1

?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}


Theme by Vikram Singh | Powered by WebSVN v2.3.3