\batchmode
\documentclass[11pt]{article}
\RequirePackage{ifthen}


\usepackage{fullpage}
\usepackage{epsfig}
\usepackage{pstricks}
\usepackage{pst-node}
\usepackage{cite}
\usepackage{fancyvrb}
\usepackage{xspace}
\usepackage{soul}
\usepackage{syntax}
\usepackage{java}


%
\renewcommand{\thetable}{\Roman{table}}

%
\providecommand{\mynote}[1]{}%
\providecommand{\emf}[1]{\textbf{\textit{#1}}} 
\DefineVerbatimEnvironment{myverb}{Verbatim}{fontsize=\small }
\DefineVerbatimEnvironment{myverbfoot}{Verbatim}{fontsize=\small }
\DefineVerbatimEnvironment{boxverb}{Verbatim}{fontsize=\small ,frame=single,numbers=left}


\title{The \texttt{abc} scanner and parser, including an LALR(1) grammar for AspectJ }


\author{Laurie Hendren,  Oege De Moor, Aske Simon Christensen and the \texttt{abc} team}



\usepackage[dvips]{pstcol}


\pagecolor[gray]{.7}

\usepackage[]{inputenc}



\makeatletter

\makeatletter
\count@=\the\catcode`\_ \catcode`\_=8 
\newenvironment{tex2html_wrap}{}{}%
\catcode`\<=12\catcode`\_=\count@
\newcommand{\providedcommand}[1]{\expandafter\providecommand\csname #1\endcsname}%
\newcommand{\renewedcommand}[1]{\expandafter\providecommand\csname #1\endcsname{}%
  \expandafter\renewcommand\csname #1\endcsname}%
\newcommand{\newedenvironment}[1]{\newenvironment{#1}{}{}\renewenvironment{#1}}%
\let\newedcommand\renewedcommand
\let\renewedenvironment\newedenvironment
\makeatother
\let\mathon=$
\let\mathoff=$
\ifx\AtBeginDocument\undefined \newcommand{\AtBeginDocument}[1]{}\fi
\newbox\sizebox
\setlength{\hoffset}{0pt}\setlength{\voffset}{0pt}
\addtolength{\textheight}{\footskip}\setlength{\footskip}{0pt}
\addtolength{\textheight}{\topmargin}\setlength{\topmargin}{0pt}
\addtolength{\textheight}{\headheight}\setlength{\headheight}{0pt}
\addtolength{\textheight}{\headsep}\setlength{\headsep}{0pt}
\setlength{\textwidth}{349pt}
\newwrite\lthtmlwrite
\makeatletter
\let\realnormalsize=\normalsize
\global\topskip=2sp
\def\preveqno{}\let\real@float=\@float \let\realend@float=\end@float
\def\@float{\let\@savefreelist\@freelist\real@float}
\def\liih@math{\ifmmode$\else\bad@math\fi}
\def\end@float{\realend@float\global\let\@freelist\@savefreelist}
\let\real@dbflt=\@dbflt \let\end@dblfloat=\end@float
\let\@largefloatcheck=\relax
\let\if@boxedmulticols=\iftrue
\def\@dbflt{\let\@savefreelist\@freelist\real@dbflt}
\def\adjustnormalsize{\def\normalsize{\mathsurround=0pt \realnormalsize
 \parindent=0pt\abovedisplayskip=0pt\belowdisplayskip=0pt}%
 \def\phantompar{\csname par\endcsname}\normalsize}%
\def\lthtmltypeout#1{{\let\protect\string \immediate\write\lthtmlwrite{#1}}}%
\newcommand\lthtmlhboxmathA{\adjustnormalsize\setbox\sizebox=\hbox\bgroup\kern.05em }%
\newcommand\lthtmlhboxmathB{\adjustnormalsize\setbox\sizebox=\hbox to\hsize\bgroup\hfill }%
\newcommand\lthtmlvboxmathA{\adjustnormalsize\setbox\sizebox=\vbox\bgroup %
 \let\ifinner=\iffalse \let\)\liih@math }%
\newcommand\lthtmlboxmathZ{\@next\next\@currlist{}{\def\next{\voidb@x}}%
 \expandafter\box\next\egroup}%
\newcommand\lthtmlmathtype[1]{\gdef\lthtmlmathenv{#1}}%
\newcommand\lthtmllogmath{\dimen0\ht\sizebox \advance\dimen0\dp\sizebox
  \ifdim\dimen0>.95\vsize
   \lthtmltypeout{%
*** image for \lthtmlmathenv\space is too tall at \the\dimen0, reducing to .95 vsize ***}%
   \ht\sizebox.95\vsize \dp\sizebox\z@ \fi
  \lthtmltypeout{l2hSize %
:\lthtmlmathenv:\the\ht\sizebox::\the\dp\sizebox::\the\wd\sizebox.\preveqno}}%
\newcommand\lthtmlfigureA[1]{\let\@savefreelist\@freelist
       \lthtmlmathtype{#1}\lthtmlvboxmathA}%
\newcommand\lthtmlpictureA{\bgroup\catcode`\_=8 \lthtmlpictureB}%
\newcommand\lthtmlpictureB[1]{\lthtmlmathtype{#1}\egroup
       \let\@savefreelist\@freelist \lthtmlhboxmathB}%
\newcommand\lthtmlpictureZ[1]{\hfill\lthtmlfigureZ}%
\newcommand\lthtmlfigureZ{\lthtmlboxmathZ\lthtmllogmath\copy\sizebox
       \global\let\@freelist\@savefreelist}%
\newcommand\lthtmldisplayA{\bgroup\catcode`\_=8 \lthtmldisplayAi}%
\newcommand\lthtmldisplayAi[1]{\lthtmlmathtype{#1}\egroup\lthtmlvboxmathA}%
\newcommand\lthtmldisplayB[1]{\edef\preveqno{(\theequation)}%
  \lthtmldisplayA{#1}\let\@eqnnum\relax}%
\newcommand\lthtmldisplayZ{\lthtmlboxmathZ\lthtmllogmath\lthtmlsetmath}%
\newcommand\lthtmlinlinemathA{\bgroup\catcode`\_=8 \lthtmlinlinemathB}
\newcommand\lthtmlinlinemathB[1]{\lthtmlmathtype{#1}\egroup\lthtmlhboxmathA
  \vrule height1.5ex width0pt }%
\newcommand\lthtmlinlineA{\bgroup\catcode`\_=8 \lthtmlinlineB}%
\newcommand\lthtmlinlineB[1]{\lthtmlmathtype{#1}\egroup\lthtmlhboxmathA}%
\newcommand\lthtmlinlineZ{\egroup\expandafter\ifdim\dp\sizebox>0pt %
  \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetinline}
\newcommand\lthtmlinlinemathZ{\egroup\expandafter\ifdim\dp\sizebox>0pt %
  \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetmath}
\newcommand\lthtmlindisplaymathZ{\egroup %
  \centerinlinemath\lthtmllogmath\lthtmlsetmath}
\def\lthtmlsetinline{\hbox{\vrule width.1em \vtop{\vbox{%
  \kern.1em\copy\sizebox}\ifdim\dp\sizebox>0pt\kern.1em\else\kern.3pt\fi
  \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}}
\def\lthtmlsetmath{\hbox{\vrule width.1em\kern-.05em\vtop{\vbox{%
  \kern.1em\kern0.8 pt\hbox{\hglue.17em\copy\sizebox\hglue0.8 pt}}\kern.3pt%
  \ifdim\dp\sizebox>0pt\kern.1em\fi \kern0.8 pt%
  \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}}
\def\centerinlinemath{%
  \dimen1=\ifdim\ht\sizebox<\dp\sizebox \dp\sizebox\else\ht\sizebox\fi
  \advance\dimen1by.5pt \vrule width0pt height\dimen1 depth\dimen1 
 \dp\sizebox=\dimen1\ht\sizebox=\dimen1\relax}

\def\lthtmlcheckvsize{\ifdim\ht\sizebox<\vsize 
  \ifdim\wd\sizebox<\hsize\expandafter\hfill\fi \expandafter\vfill
  \else\expandafter\vss\fi}%
\providecommand{\selectlanguage}[1]{}%
\makeatletter \tracingstats = 1 
\providecommand{\Beta}{\textrm{B}}
\providecommand{\Mu}{\textrm{M}}
\providecommand{\Kappa}{\textrm{K}}
\providecommand{\Rho}{\textrm{R}}
\providecommand{\Epsilon}{\textrm{E}}
\providecommand{\Chi}{\textrm{X}}
\providecommand{\Iota}{\textrm{J}}
\providecommand{\omicron}{\textrm{o}}
\providecommand{\Zeta}{\textrm{Z}}
\providecommand{\Eta}{\textrm{H}}
\providecommand{\Nu}{\textrm{N}}
\providecommand{\Omicron}{\textrm{O}}
\providecommand{\Tau}{\textrm{T}}
\providecommand{\Alpha}{\textrm{A}}


\begin{document}
\pagestyle{empty}\thispagestyle{empty}\lthtmltypeout{}%
\lthtmltypeout{latex2htmlLength hsize=\the\hsize}\lthtmltypeout{}%
\lthtmltypeout{latex2htmlLength vsize=\the\vsize}\lthtmltypeout{}%
\lthtmltypeout{latex2htmlLength hoffset=\the\hoffset}\lthtmltypeout{}%
\lthtmltypeout{latex2htmlLength voffset=\the\voffset}\lthtmltypeout{}%
\lthtmltypeout{latex2htmlLength topmargin=\the\topmargin}\lthtmltypeout{}%
\lthtmltypeout{latex2htmlLength topskip=\the\topskip}\lthtmltypeout{}%
\lthtmltypeout{latex2htmlLength headheight=\the\headheight}\lthtmltypeout{}%
\lthtmltypeout{latex2htmlLength headsep=\the\headsep}\lthtmltypeout{}%
\lthtmltypeout{latex2htmlLength parskip=\the\parskip}\lthtmltypeout{}%
\lthtmltypeout{latex2htmlLength oddsidemargin=\the\oddsidemargin}\lthtmltypeout{}%
\makeatletter
\if@twoside\lthtmltypeout{latex2htmlLength evensidemargin=\the\evensidemargin}%
\else\lthtmltypeout{latex2htmlLength evensidemargin=\the\oddsidemargin}\fi%
\lthtmltypeout{}%
\makeatother
\setcounter{page}{1}
\onecolumn

% !!! IMAGES START HERE !!!

\stepcounter{section}
\stepcounter{section}
\stepcounter{subsection}
{\newpage\clearpage
\lthtmlpictureA{tex2html_wrap397}%
\framebox{
\begin{minipage}{6in}
\begin{java}
\\
{\bf import} java.lang.*;\\
\\
{\bf class} OrdinaryJavaClass \{\\
\hspace{1.0em}{\bf public} {\bf int} x;\\
\hspace{1.0em}{\bf public} {\bf int} y;\\
\\
\hspace{1.0em}String foo({\bf int} x) \\
\hspace{2.5em}\{ {\bf return} ("The value of x + 1 is " + (x + 1));\\
\hspace{2.5em}\}\\
\}\\
\\
{\bf privileged} {\bf aspect} {\textit{/* a privileged aspect with a per declaration in the header */}}\\
\end{java}
\par
\framebox{
\begin{minipage}{4.7in}
\begin{java}
\\
\hspace{1.0em}OrdinaryAspect {\bf percflow} \framebox{ ( {\bf call}({\bf void} Foo.m()) )} \\
\hspace{1.0em}\{ \\
\hspace{2.0em}{\textit{/* declare declaration */}}\\
\hspace{2.0em}{\bf declare} \framebox{{\bf warning}: {\bf call}(*1.Foo+.{\bf new}(..)): \textit{{``pkg ending in 1, class or subclass of Foo"}};}\\
\\
\hspace{2.0em}{\textit{/* pointcut declarations */}}\\
\hspace{2.0em}{\bf pointcut} \framebox{notKeywords(): {\bf call}({\bf void} *if*..*while*({\bf int},{\bf boolean},*for*));}\\
\\
\hspace{2.0em}{\bf pointcut} \framebox{hasSpecialIf(): {\bf if}\framebox{(Tracing.isEnabled())};}\\
\\
\hspace{2.0em}{\textit{/* advice declaration */}}\\
\hspace{2.0em}{\bf after}\framebox{(Point p) {\bf returning}({\bf int} x): {\bf target}(p) \&\& {\bf call}({\bf int} getX())} \\
\hspace{3.0em}\{\\
\hspace{4.0em}System.out.println(\textit{{``Returning int value "}} + x + \textit{{`` for p = "}} + p);\\
\hspace{3.0em}\}\\
\\
\hspace{2.0em}{\textit{/* inter-type member declaration */}}\\
\hspace{2.0em}{\bf int} OrdinaryJavaClass.incr2({\bf int} i)\\
\hspace{3.5em}\{ {\bf return}(x+2);\\
\hspace{3.5em}\} \\
\\
\hspace{2.0em}{\textit{/* ordinary Java declarations */}}\\
\hspace{2.0em}{\bf int} x;\\
\\
\hspace{2.0em}{\bf static} {\bf int} incr3({\bf int} x)\\
\hspace{3.0em}\{ {\bf return}(x+3);\\
\hspace{3.0em}\}\\
\\
\hspace{2.0em}{\textit{/* a nested class */}}\\
\hspace{2.0em}{\bf class} \\
\end{java}
\par
\framebox{
\begin{minipage}{4.5in}
\begin{java}
\\
\hspace{3.0em}NestedClass \{\\
\hspace{3.0em}{\textit{/* In Java mode, after and before are not keywords. */}} \\
\hspace{4.0em}{\bf public} {\bf int} after;\\
\hspace{4.0em}{\bf public} {\bf int} getBefore()\\
\hspace{4.0em}\{ {\bf return}(OtherClass.before);\\
\hspace{4.0em}\}\\
\hspace{2.5em}\} {\textit{// end of NestedClass }}\\
\end{java}
\end{minipage}
}
\par
\begin{java}
\hspace{1.0em}\} {\textit{// end of OrdinaryAspect}}\\
\end{java}
\end{minipage}
}
\end{minipage}
}%
\lthtmlpictureZ
\lthtmlcheckvsize\clearpage}

\stepcounter{subsubsection}
\stepcounter{subsubsection}
\stepcounter{subsubsection}
\stepcounter{subsubsection}
\stepcounter{subsection}
\stepcounter{subsection}
\stepcounter{subsubsection}
\stepcounter{subsubsection}
\stepcounter{section}
\stepcounter{subsection}
{\newpage\clearpage
\lthtmlfigureA{grammar711}%
\begin{grammar}
\begin{blue}
<{\red type_declaration}> ::= <aspect_declaration>
\par
<{\red class_member_declaration}> ::= <aspect_declaration>
                            \alt      <pointcut_declaration>
\par
<{\red interface_member_declaration}> ::= <aspect_declaration>
                                 \alt     <pointcut_declaration>
\par
<{\red method_invocation}> ::= 'proceed' '(' {\red <argument_list_opt>} ')'
\par
\end{blue}
\end{grammar}%
\lthtmlfigureZ
\lthtmlcheckvsize\clearpage}

\stepcounter{subsection}
{\newpage\clearpage
\lthtmlfigureA{grammar726}%
\begin{grammar}
\begin{blue}
<aspect_declaration> ::= \hspace{1in} \\
        {\red <modifiers_opt>} 'privileged' {\red <modifiers_opt>} 'aspect' {\sc{Identifier}} 
          {\red <super_opt> <interfaces_opt>} <perclause_opt> <aspect_body>
\alt
        {\red <modifiers_opt>} 'aspect' {\sc{Identifier}}
        {\red<super_opt> <interfaces_opt>} <perclause_opt> <aspect_body>
\end{blue}
\end{grammar}%
\lthtmlfigureZ
\lthtmlcheckvsize\clearpage}

\stepcounter{subsubsection}
{\newpage\clearpage
\lthtmlfigureA{blue743}%
\begin{blue}
\begin{grammar}
<perclause_opt> ::= $\epsilon$\  |  <perclause> 
\par
<perclause> ::= \hspace{1in} \\
                'pertarget' '(' {\blue <pointcut_expr>} ')'
         \alt   'perthis' '(' {\blue <pointcut_expr>} ')'
         \alt   'percflow' '(' {\blue <pointcut_expr>} ')'
         \alt   'percflowbelow' '(' {\blue <pointcut_expr>} ')'
         \alt   'issingleton'  
         \alt   'issingleton' '(' ')'
\end{grammar}
\end{blue}%
\lthtmlfigureZ
\lthtmlcheckvsize\clearpage}

\stepcounter{subsubsection}
{\newpage\clearpage
\lthtmlfigureA{blue757}%
\begin{blue}
\begin{grammar}
<aspect_body> ::= '{' '}' | '{' <aspect_body_declarations> '}'
\par
<aspect_body_declarations> ::= \hspace{1in} \\
                  <aspect_body_declarations> 
          \alt    <aspect_body_declarations> <aspect_body_declaration>
\par
<aspect_body_declaration> ::= \hspace{1in} \\
                  {\red <class_body_declaration>}
          \alt    <declare_declaration>
          \alt    <advice_declaration>
          \alt    <intertype_member_declaration>
\end{grammar}
\end{blue}%
\lthtmlfigureZ
\lthtmlcheckvsize\clearpage}

\stepcounter{subsection}
\stepcounter{subsubsection}
{\newpage\clearpage
\lthtmlfigureA{blue771}%
\begin{blue}
\begin{grammar}
<declare_declaration> ::= \hspace{1in} \\
       'declare' 'parents' ':' {\blue <classname_pattern_expr>} 'extends' 
           {\red <class_type_list>} ';' 
\alt   'declare' 'parents' ':' {\blue <classname_pattern_expr>} 'implements'
           {\red <interface_type_list>}
\alt   'declare' 'warning' ':' {\blue <pointcut_expr>} ':'
                                            {\sc{StringLiteral}} ';'
\alt   'declare' 'error' ':' {\blue <pointcut_expr>} ':' 
                                            {\sc{StringLiteral}} ';'
\alt   'declare' 'soft' ':' {\blue <pointcut_expr>} ';'
\alt   'declare' 'precedence' ':' {\blue <classname_pattern_expr_list>} ';'
\end{grammar}
\end{blue}%
\lthtmlfigureZ
\lthtmlcheckvsize\clearpage}

\stepcounter{subsubsection}
{\newpage\clearpage
\lthtmlfigureA{blue790}%
\begin{blue}
\begin{grammar}
<pointcut_declaration> ::= \hspace{1in} \\
      {\red <modifiers_opt>} 'pointcut' {\sc{Identifier}} 
             '(' {\red <formal_parameter_list_opt>} ')' ';'
\alt  {\red <modifiers_opt>} 'pointcut' {\sc{Identifier}} 
             '(' {\red <formal_parameter_list_opt>} ')' 
             ':' {\blue <pointcut_expr>} ';'
\end{grammar}
\end{blue}%
\lthtmlfigureZ
\lthtmlcheckvsize\clearpage}

\stepcounter{subsubsection}
{\newpage\clearpage
\lthtmlfigureA{blue810}%
\begin{blue}
\begin{grammar}
<advice_declaration> ::= \hspace{1in} \\
      {\red <modifiers_opt>} <advice_spec> {\red <throws_opt>} ':'
      {\blue <pointcut_expr>} {\red <method_body>}
\par
<advice_spec> :=  \hspace{1in} \\
       'before' '(' {\red <formal_parameter_list_opt>} ')'
\alt   'after'  '(' {\red <formal_parameter_list_opt>} ')'
\alt   'after'  '(' {\red <formal_parameter_list_opt>} ')' 'returning'
\alt   'after'  '(' {\red <formal_parameter_list_opt>} ')' 'returning' '(' ')'
\alt   'after'  '(' {\red <formal_parameter_list_opt>} ')' 'returning'
             '(' {\red <formal_parameter>} ')'
\alt   'after'  '(' {\red <formal_parameter_list_opt>} ')' 'throwing'
\alt   'after'  '(' {\red <formal_parameter_list_opt>} ')' 'throwing' '(' ')'
\alt   'after'  '(' {\red <formal_parameter_list_opt>} ')' 'throwing'
             '(' {\red <formal_parameter>} ')'
\alt   {\red <type>} 'around' '(' {\red <formal_parameter_list_opt>} ')'
\alt   {\red 'void'} 'around' '(' {\red <formal_parameter_list_opt>} ')'
\end{grammar}
\end{blue}%
\lthtmlfigureZ
\lthtmlcheckvsize\clearpage}

\stepcounter{subsubsection}
{\newpage\clearpage
\lthtmlfigureA{blue845}%
\begin{blue}
\begin{grammar}
<intertype_member_declaration> ::= \hspace{1in} \\
     {\red <modifiers_opt>} 'void' {\red <name>} '.' {\sc{Identifier}}
     '(' {\red <formal_parameter_list_opt>} ')' {\red <throws_opt>}
     {\red <method_body>}
\alt 
     {\red <modifiers_opt>} {\red <type>} {\red <name>} '.' {\sc{Identifier}}
     '(' {\red <formal_parameter_list_opt>} ')' {\red <throws_opt>}
     {\red <method_body>}
\alt 
     {\red <modifiers_opt>} {\red <name>} '.' 'new' 
     '(' {\red <formal_parameter_list_opt>} ')' {\red <throws_opt>}
     {\red <constructor_body>}
\alt
     {\red <modifiers_opt>} {\red <type>} {\red <name>} '.' 
     {\sc{Identifier}} ';'
\alt
     {\red <modifiers_opt>} {\red <type>} {\red <name>} '.' 
     {\sc{Identifier}} '=' {\red <variable_initializer>} ';'
\end{grammar}
\end{blue}%
\lthtmlfigureZ
\lthtmlcheckvsize\clearpage}

\stepcounter{subsection}
{\newpage\clearpage
\lthtmlfigureA{grammar881}%
\begin{grammar}
\begin{blue}
<pointcut_expr> ::= \hspace{1in} \\
       <or_pointcut_expr> 
\alt   <pointcut_expr> '\&\&' <or_pointcut_expr>
\par
<or_pointcut_expr> ::= \hspace{1in} \\
       <unary_pointcut_expr> 
\alt   <or_pointcut_expr> '||' <unary_pointcut_expr>
\par
<unary_pointcut_expr> ::= \hspace{1in} \\
       <basic_pointcut_expr> 
\alt   '!' <unary_pointcut_expr>
\end{blue}
\end{grammar}%
\lthtmlfigureZ
\lthtmlcheckvsize\clearpage}

{\newpage\clearpage
\lthtmlfigureA{blue891}%
\begin{blue}
\begin{grammar}
<basic_pointcut_expr> ::= \hspace{1in} \\
       '(' <pointcut_expr> ')'
\alt   'call' '(' <method_constructor_pattern> ')'
\alt   'execution' '(' <method_constructor_pattern> ')'
\alt   'initialization' '(' <constructor_pattern> ')'
\alt   'preinitialization' '(' <constructor_pattern> ')'
\alt   'staticinitialization' '(' <classname_pattern_expr> ')'
\alt   'get' '(' <field_pattern> ')'
\alt   'set' '(' <field_pattern> ')'
\alt   'handler' '(' <classname_pattern_expr> ')'
\alt   'adviceexecution' '(' ')'
\alt   'within' '(' <classname_pattern_expr> ')'
\alt   'withincode' '(' <method_constructor_pattern> ')'
\alt   'cflow' '(' <pointcut_expr> ')'
\alt   'cflowbelow' '(' <pointcut_expr> ')'
\alt   'if' '(' {\red <expression> } ')'
\alt   'this' '(' <type_id_star> ')'
\alt   'target' '(' <type_id_star> ')'
\alt   'args' '(' <type_id_star_list_opt> ')'
\alt   {\red <name>} '(' <type_id_star_list_opt> ')'
\end{grammar}
\end{blue}%
\lthtmlfigureZ
\lthtmlcheckvsize\clearpage}

\stepcounter{subsection}
\stepcounter{subsubsection}
{\newpage\clearpage
\lthtmlfigureA{grammar904}%
\begin{grammar}
\begin{blue}
\par
<name_pattern> ::=  \hspace{1in} \\
      <simple_name_pattern>
\alt  <name_pattern> '.'  <simple_name_pattern>
\alt  <name_pattern> '..' <simple_name_pattern>
\par
<simple_name_pattern> ::= \hspace{1in} \\
      '*'
\alt  {\sc{Identifier}}
\alt  {\sc{IdentifierPattern}}
\alt  <aspectj_reserved_identifier>
\par
<aspectj_reserved_identifier> ::= \hspace{1in} \\
   'aspect' | 'privileged' 
\alt 'adviceexecution' | 'args' | 'call' | 'cflow' | 'cflowbelow' | 'error'
\alt 'execution' | 'get' | 'handler' | 'initialization' | 'parents' 
\alt 'precedence' | 'preinitialization' | 'returning' | 'set' 
\alt 'soft' | 'staticinitialization' | 'target' | 'throwing' 
\alt 'warning' | 'withincode'
\end{blue}
\end{grammar}%
\lthtmlfigureZ
\lthtmlcheckvsize\clearpage}

{\newpage\clearpage
\lthtmlfigureA{grammar921}%
\begin{grammar}
\begin{blue}
\par
<classtype_dot_id> ::= \hspace{1in} \\
      <simple_name_pattern>
\alt  <name_pattern> '.' <simple_name_pattern>
\alt  <name_pattern> '+' '.' <simple_name_pattern>
\alt  <name_pattern> '..' <simple_name_pattern>
\alt '(' <type_pattern_expr> ')' '.' <simple_name_pattern> 
\par
<classtype_dot_new> ::= \hspace{1in} \\
\alt 'new'
\alt <name_pattern> '.' 'new'
\alt <name_pattern> '+' '.' 'new'
\alt <name_pattern> '..' 'new'
\alt '(' <type_pattern_expr> ')' '.' 'new'
\par
\end{blue}
\end{grammar}%
\lthtmlfigureZ
\lthtmlcheckvsize\clearpage}

\stepcounter{subsubsection}
{\newpage\clearpage
\lthtmlfigureA{blue931}%
\begin{blue}
\begin{grammar}
<type_pattern_expr> ::= \hspace{1in} \\
     <or_type_pattern_expr>
\alt <type_pattern_expr> '\&\&' <or_type_pattern_expr>
\par
<or_type_pattern_expr> ::= \hspace{1in} \\
     <unary_type_pattern_expr>
\alt <or_type_pattern_expr> '||' <unary_type_pattern_expr>
\par
<unary_type_pattern_expr> ::= \hspace{1in} \\
     <basic_type_pattern>
\alt '!' <unary_type_pattern_expr>
\par
<basic_type_pattern> ::=  \hspace{1in} \\
     'void'
\alt <base_type_pattern>
\alt <base_type_pattern> {\red <dims>}
\alt '(' <type_pattern_expr> ')'
\par
<base_type_pattern> ::= \hspace{1in} \\
     {\red <primitive_type>} 
\alt <name_pattern>
\alt <name_pattern> '+'
\end{grammar}
\end{blue}%
\lthtmlfigureZ
\lthtmlcheckvsize\clearpage}

\stepcounter{subsubsection}
{\newpage\clearpage
\lthtmlfigureA{blue947}%
\begin{blue}
\begin{grammar}
<classname_pattern_expr_list> ::= \hspace{1in} \\
     <classname_pattern_expr> 
\alt <classname_pattern_expr_list> ',' <classname_pattern_expr>
\par
<classname_pattern_expr> ::= \hspace{1in} \\
     <and_classname_pattern_expr>
\alt <classname_pattern_expr> '||' <and_classname_pattern_expr>
\par
<and_classname_pattern_expr> ::= \hspace{1in} \\
     <unary_classname_pattern_expr>
\alt <and_classname_pattern_expr> '\&\&' <unary_classname_pattern_expr>
\par
<unary_classname_pattern_expr> ::= \hspace{1in} \\
     <basic_classname_pattern>
\alt '!' <unary_classname_pattern_expr>
\par
<basic_classname_pattern> ::=  \hspace{1in} \\
     <name_pattern>
\alt <name_pattern> '+'
\alt '(' <classname_pattern_expr> ')'
\end{grammar}
\end{blue}%
\lthtmlfigureZ
\lthtmlcheckvsize\clearpage}

{\newpage\clearpage
\lthtmlfigureA{blue959}%
\begin{blue}
\begin{grammar}
<classname_pattern_expr_nobang> ::= \hspace{1in} \\
    <and_classname_pattern_expr_nobang>
\alt <classname_pattern_expr_nobang '||' <and_classname_pattern_expr>
\par
<and_classname_pattern_expr_nobang> ::= \hspace{1in} \\
     <basic_classname_pattern>
\alt <and_classname_pattern_expr_nobang> '\&\&' <unary_classname_pattern_expr>
\end{grammar}
\end{blue}%
\lthtmlfigureZ
\lthtmlcheckvsize\clearpage}

\stepcounter{subsubsection}
{\newpage\clearpage
\lthtmlfigureA{blue969}%
\begin{blue}
\begin{grammar}
<method_constructor_pattern> ::= \hspace{1in} \\
     <method_pattern>
\alt <constructor_pattern>
\par
<method_pattern> ::= \hspace{1in} \\
     <modifier_pattern_expr> <type_pattern_expr> <classtype_dot_id> \\
     '(' <formal_pattern_list_opt> ')' <throws_pattern_list_opt>
\alt <type_pattern_expr> <classtype_dot_id> \\
     '(' <formal_pattern_list_opt> ')' <throws_pattern_list_opt>
\par
<constructor_pattern> ::= \hspace{1in} \\
     <modifier_pattern_expr> <classtype_dot_new> \\
     '(' <formal_pattern_list_opt> ')' <throws_pattern_expr_opt>
\alt <classtype_dot_new> \\
     '(' <formal_pattern_list_opt> ')' <throws_pattern_expr_opt>
\par
<field_pattern> ::= \hspace{1in} \\
     <modifier_pattern_expr> <type_pattern_expr> <classtype_dot_id>
\alt <type_pattern_expr> <classtype_dot_id>
\end{grammar}
\end{blue}%
\lthtmlfigureZ
\lthtmlcheckvsize\clearpage}

\stepcounter{subsubsection}
{\newpage\clearpage
\lthtmlfigureA{blue981}%
\begin{blue}
\begin{grammar}
<modifier_pattern_expr> ::= \hspace{1in} \\
     {\red <modifier>}
\alt '!' {\red <modifier>}
\alt <modifier_pattern_expr> {\red <modifier>}
\alt <modifier_pattern_expr> '!' {\red <modifier>}
\end{grammar} 
\end{blue}%
\lthtmlfigureZ
\lthtmlcheckvsize\clearpage}

\stepcounter{subsubsection}
{\newpage\clearpage
\lthtmlfigureA{blue994}%
\begin{blue}
\begin{grammar}
<throws_pattern_list_opt> ::= \hspace{1in} \\
    $\epsilon$
\alt 'throws' <throws_pattern_list>
\par
<throws_pattern_list> ::= \hspace{1in} \\
    <throws_pattern>
\alt <throws_pattern_list> ',' <throws_pattern>
\par
<throws_pattern> ::= \hspace{1in} \\
      <classname_pattern_expr_nobang>
\alt  '!' <classname_pattern_expr>
\end{grammar} 
\end{blue}%
\lthtmlfigureZ
\lthtmlcheckvsize\clearpage}

\stepcounter{subsubsection}
{\newpage\clearpage
\lthtmlfigureA{blue1006}%
\begin{blue}
\begin{grammar}
  <formal_pattern_list_opt> ::= \hspace{1in} \\
     $\epsilon$ 
\alt <formal_pattern_list>
\par
<formal_pattern_list> ::=  \hspace{1in} \\
      <formal_pattern> 
\alt  <formal_pattern_list> ',' <formal_pattern>
\par
<formal_pattern> ::=  \hspace{1in} \\
    '..' 
\alt '.' '.' 
\alt  <type_pattern_expr>
\end{grammar} 
\end{blue}%
\lthtmlfigureZ
\lthtmlcheckvsize\clearpage}

{\newpage\clearpage
\lthtmlfigureA{blue1017}%
\begin{blue}
\begin{grammar}
  <type_id_star_list_opt> ::= \hspace{1in} \\
     $\epsilon$ 
\alt <type_id_star_list>
\par
<type_id_star_list> ::=  \hspace{1in} \\
      <type_id_star> 
\alt  <type_id_star_list> ',' <type_id_star>
\par
<type_id_star> ::=  \hspace{1in} \\
    '*' 
\alt '..' 
\alt {\red <type>}
\alt {\red <type>} '+' 
\end{grammar} 
\end{blue}%
\lthtmlfigureZ
\lthtmlcheckvsize\clearpage}


\end{document}
