PARSER_BEGIN(html32) class html32 { public static void main(String args[]) { System.out.println("Reading from standard input..."); html32 t = new html32(new java.io.DataInputStream(System.in)); try { SimpleNode n = t.html(); n.dump(""); System.out.println("Thank you."); } catch (Exception e) { System.out.println("Oops."); System.out.println(e.getMessage()); e.printStackTrace(); } } } PARSER_END(html32) // ================================================================ SKIP : { < ( " " | "\t" | "\n" | "\r" )+ > | < ""] )* ">" > } TOKEN : { : TAG | : TAG | } TOKEN [IGNORE_CASE] : { : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST | : ATTLIST } SKIP : { < " " | "\t" | "\n" | "\r" > | < "--" > : ATTCOMM } TOKEN : { " > : DEFAULT | | <#NUM: ["0"-"9"] > | <#ALPHANUM: | > | ( )* > } TOKEN : { ", "\"", "'", " ", "\t", "\n", "\r"] )+ > : ATTLIST } SKIP : { < ( ~["-"] )+ > | < "-" ( ~["-"] )+ > | < "--" > : ATTLIST } // ================================================================ void pcdata() #void : { Token t; } { t= { jjtree.pushNode(new NodePCDATA(t.image)); } } void attribute() #void : { Token n, v = null; } { n= [ v= ] { String attval; if (v == null) { attval = "#DEFAULT"; } else { attval = v.image; } jjtree.pushNode(new NodeAttribute(n.image, attval)); } } void attlist() : {} { ( attribute() )+ } void Eheading() #void : {} { LOOKAHEAD(2) h1() | LOOKAHEAD(2) h2() | LOOKAHEAD(2) h3() | LOOKAHEAD(2) h4() | LOOKAHEAD(2) h5() | h6() } void Epreformatted() #void : {} { pre() } void Elist() #void : {} { LOOKAHEAD(2) ul() | LOOKAHEAD(2) ol() | LOOKAHEAD(2) dir() | menu() } void Efont() #void : {} { LOOKAHEAD(2) tt() | LOOKAHEAD(2) i() | LOOKAHEAD(2) b() | LOOKAHEAD(2) u() | LOOKAHEAD(2) strike() | LOOKAHEAD(2) big() | LOOKAHEAD(2) small() | LOOKAHEAD(2) sub() | sup() } void Ephrase() #void : {} { LOOKAHEAD(2) em() | LOOKAHEAD(2) strong() | LOOKAHEAD(2) dfn() | LOOKAHEAD(2) code() | LOOKAHEAD(2) samp() | LOOKAHEAD(2) kbd() | LOOKAHEAD(2) _var() | cite() } void Especial() #void : {} { LOOKAHEAD(2) a() | LOOKAHEAD(2) img() | LOOKAHEAD(2) applet() | LOOKAHEAD(2) font() | LOOKAHEAD(2) basefont() | LOOKAHEAD(2) br() | LOOKAHEAD(2) script() | map() } void Eform() #void : {} { LOOKAHEAD(2) input() | LOOKAHEAD(2) select() | textarea() } void Etext() #void : {} { pcdata() | LOOKAHEAD(2) Efont() | LOOKAHEAD(2) Ephrase() | LOOKAHEAD(2) Especial() | Eform() } void tt() : {} { [ attlist() ] ( Etext() )* } void i() : {} { [ attlist() ] ( Etext() )* } void b() : {} { [ attlist() ] ( Etext() )* } void u() : {} { [ attlist() ] ( Etext() )* } void strike() : {} { [ attlist() ] ( Etext() )* } void big() : {} { [ attlist() ] ( Etext() )* } void small() : {} { [ attlist() ] ( Etext() )* } void sub() : {} { [ attlist() ] ( Etext() )* } void sup() : {} { [ attlist() ] ( Etext() )* } void em() : {} { [ attlist() ] ( Etext() )* } void strong() : {} { [ attlist() ] ( Etext() )* } void dfn() : {} { [ attlist() ] ( Etext() )* } void code() : {} { [ attlist() ] ( Etext() )* } void samp() : {} { [ attlist() ] ( Etext() )* } void kbd() : {} { [ attlist() ] ( Etext() )* } void _var() : {} { [ attlist() ] ( Etext() )* } void cite() : {} { [ attlist() ] ( Etext() )* } void font() : {} { [ attlist() ] ( Etext() )* } void basefont() : {} { [ attlist() ] } void br() : {} {
[ attlist() ] } void Eblock() #void : {} { LOOKAHEAD(2) p() | LOOKAHEAD(2) Elist() | LOOKAHEAD(2) Epreformatted() | LOOKAHEAD(2) dl() | LOOKAHEAD(2) div() | LOOKAHEAD(2) center() | LOOKAHEAD(2) blockquote() | LOOKAHEAD(2) form() | LOOKAHEAD(2) isindex() | LOOKAHEAD(2) hr() | LOOKAHEAD(2) table() } void Eflow() #void : {} { (LOOKAHEAD(2) ( LOOKAHEAD(2) Etext() | Eblock() ) )* } void Ebody_content() #void : {} { (LOOKAHEAD(2) ( LOOKAHEAD(2) Eheading() | LOOKAHEAD(2) Etext() | LOOKAHEAD(2) Eblock() | address() ) )* } void body() : {} { [ LOOKAHEAD(2) [ attlist() ] ] Ebody_content() [ LOOKAHEAD(2) ] } void address() : {} {
[ attlist() ] ( LOOKAHEAD(2) Etext() | p() )*
} void div() : {} {
[ attlist() ] Ebody_content()
} void center() : {} {
[ attlist() ] Ebody_content()
} // exclusion exception: a() void a() : {} { [ attlist() ] ( Etext() )* } void map() : {} { [ attlist() ] ( area() )* } void area() : {} { [ attlist() ] } void link() : {} { [ attlist() ] } void img() : {} { [ attlist() ] } // inclusion exception: param() void applet() : {} { [ attlist() ] ( LOOKAHEAD(2) param() | Etext() )* } void param() : {} { [ attlist() ] } void hr() : {} {
[ attlist() ] } void p() : {} {

[ attlist() ] ( LOOKAHEAD(2) Etext() )* [ LOOKAHEAD(2)

] } void h1() : {} {

[ attlist() ] ( LOOKAHEAD(2) Etext() )*

} void h2() : {} {

[ attlist() ] ( LOOKAHEAD(2) Etext() )*

} void h3() : {} {

[ attlist() ] ( LOOKAHEAD(2) Etext() )*

} void h4() : {} {

[ attlist() ] ( LOOKAHEAD(2) Etext() )*

} void h5() : {} {
[ attlist() ] ( LOOKAHEAD(2) Etext() )*
} void h6() : {} {
[ attlist() ] ( LOOKAHEAD(2) Etext() )*
} // exclusion exception: img(), big(), small(), sub(), sup(), font() void pre() : {} {
 [ attlist() ] 
	( LOOKAHEAD(2) Etext() )*
	 
 
}


void blockquote() : {}
{
	 
[ attlist() ] Ebody_content()
} void dl() : {} {
[ attlist() ] ( LOOKAHEAD(2) dt() | dd() )*
} void dt() : {} {
[ attlist() ] ( LOOKAHEAD(2) Etext() )* [ LOOKAHEAD(2)
] } void dd() : {} {
[ attlist() ] Eflow() [ LOOKAHEAD(2)
] } void ol() : {} {
    [ attlist() ] ( li() )*
      } void ul() : {} {
        [ attlist() ] ( li() )*
          } // exclusion exception: Eblock() void dir() : {} { [ attlist() ] ( li() )* } // exclusion exception: Eblock() void menu() : {} { [ attlist() ] ( li() )* } void li() : {} {
        • [ attlist() ] Eflow() [ LOOKAHEAD(2)
        • ] } // exclusion exception: form() void form() : {} {
          [ attlist() ] Ebody_content() } void input() : {} { [ attlist() ] } void select() : {} {