Znaczenie użytych symboli:
%expression<nazwa> - oznacza stan. Wyrażenia napisane
poniżej to wyrażenia dostępne w danym stanie,
%push <nazwa> - przejście
z obecnego stanu do stanu <nazwa>,
%pop
- przejście do stanu, z którego obecny stan został osiągnięty,
%ignore
- symbol jest ignorowany, nie podlega przetwarzaniu w gramatyce.
Makra zastosowane w wyrażeniach regularnych:
{FNMCHAR} '[a-zA-Z]'
{NMCHAR} '[a-zA-Z0-9\.\-]'
{DIGIT} '[0-9]'
{HEXDIGIT} '[a-fA-F0-9]'
{ps} '[ \t\r\n\f\l]'
Symbole terminalne (leksemy):
%expression Main
'<[aA]' '<A',%push Attr;
'</[aA]' '</A', %push End;
%expression End
%expression Coment
%expression Attr
%expression Val
'[^<&]+' 'DATA';
'<!\-\-' %ignore, %push Coment;
'<![dD][oO][cC][tT][yY][pP][eE] [hH][tT][mM][lL] [pP][uU][bB][lL][iI][cC].*>'
DOCTYPE';
'&{FNMCHAR}{NMCHAR}*' 'DATA';
'&#{NMCHAR}+' 'DATA' ;
'{ps}+' %ignore;
'<[bB]' '<B',%push Attr;
'<[iI]' '<I',%push Attr;
'<[pP]' '<P',%push Attr;
'<[uU]' '<U',%push Attr;
'<[bB][rR]' '<BR',%push Attr;
'<[dD][dD]' '<DD',%push Attr;
'<[dD][lL]' '<DL',%push Attr;
'<[dD][tT]' '<DT',%push Attr;
'<[eE][mM]' '<EM',%push Attr;
'<[hH]1' '<H1',%push Attr;
'<[hH]2' '<H2',%push Attr;
'<[hH]3' '<H3',%push Attr;
'<[hH]4' '<H4',%push Attr;
'<[hH]5' '<H5',%push Attr;
'<[hH]6' '<H6',%push Attr;
'<[hH][rR]' '<HR',%push Attr;
'<[lL][iI]' '<LI',%push Attr;
'<[oO][lL]' '<OL',%push Attr;
'<[tT][dD]' '<TD',%push Attr;
'<[tT][hH]' '<TH',%push Attr;
'<[tT][rR]' '<TR',%push Attr;
'<[tT][tT]' '<TT',%push Attr;
'<[uU][lL]' '<UL',%push Attr;
'<[bB][iI][gG]' '<BIG',%push Attr;
'<[dD][fF][nN]' '<DFN',%push Attr;
'<[dD][iI][rR]' '<DIR',%push Attr;
'<[dD][iI][vV]' '<DIV',%push Attr;
'<[iI][mM][gG]' '<IMG',%push Attr;
'<[kK][bB][dD]' '<KBD',%push Attr;
'<[mM][aA][pP]' '<MAP',%push Attr;
'<[pP][rR][eE]' '<PRE',%push Attr;
'<[sS][uU][bB]' '<SUB',%push Attr;
'<[sS][uU][pP]' '<SUP',%push Attr;
'<[vV][aA][rR]' '<VAR',%push Attr;
'<[aA][rR][eE][aA]' '<AREA',%push Attr;
'<[bB][aA][sS][eE]' '<BASE',%push Attr;
'<[bB][oO][dD][yY]' '<BODY',%push Attr;
'<[cC][iI][tT][eE]' '<CITE',%push Attr;
'<[cC][oO][dD][eE]' '<CODE',%push Attr;
'<[fF][oO][nN][tT]' '<FONT',%push Attr;
'<[fF][oO][rR][mM]' '<FORM',%push Attr;
'<[hH][eE][aA][dD]' '<HEAD',%push Attr;
'<[hH][tT][mM][lL]' '<HTML',%push Attr;
'<[lL][iI][nN][kK]' '<LINK',%push Attr;
'<[mM][eE][nN][uU]' '<MENU',%push Attr;
'<[mM][eE][tT][aA]' '<META',%push Attr;
'<[sS][aA][mM][pP]' '<SAMP',%push Attr;
'<[iI][nN][pP][uU][tT]' '<INPUT',%push Attr;
'<[pP][aA][rR][aA][mM]' '<PARAM',%push Attr;
'<[sS][mM][aA][lL][lL]' '<SMALL',%push Attr;
'<[sS][tT][yY][lL][eE]' '<STYLE',%push Attr;
'<[tT][aA][bB][lL][eE]' '<TABLE',%push Attr;
'<[tT][iI][tT][lL][eE]' '<TITLE',%push Attr;
'<[aA][pP][pP][lL][eE][tT]' '<APPLET',%push Attr;
'<[cC][eE][nN][tT][eE][rR]' '<CENTER',%push Attr;
'<[oO][pP][tT][iI][oO][nN]' '<OPTION',%push Attr;
'<[sS][cC][rR][iI][pP][tT]' '<SCRIPT',%push Attr;
'<[sS][eE][lL][eE][cC][tT]' '<SELECT',%push Attr;
'<[sS][tT][rR][iI][kK][eE]' '<STRIKE',%push Attr;
'<[sS][tT][rR][oO][nN][gG]' '<STRONG',%push Attr;
'<[aA][dD][dD][rR][eE][sS][sS]' '<ADDRESS',%push Attr;
'<[cC][aA][pP][tT][iI][oO][nN]' '<CAPTION',%push Attr;
'<[bB][aA][sS][eE][fF][oO][nN][tT]' '<BASEFONT',%push
Attr;
'<[iI][sS][iI][nN][dD][eE][xX]' '<ISINDEX',%push
Attr;
'<[bB][lL][oO][cC][kK][qQ][uU][oO][tT][eE]' '<BLOCKQUOTE',%push
Attr;
'<[tT][eE][xX][tT][aA][rR][eE][aA]' '<TEXTAREA',%push
Attr;
'{ps}+' %ignore;
'</[bB]' '</B', %push End;
'</[iI]' '</I', %push End;
'</[pP]' '</P', %push End;
'</[uU]' '</U', %push End;
'</[bB][rR]' '</BR', %push End;
'</[dD][dD]' '</DD', %push End;
'</[dD][lL]' '</DL', %push End;
'</[dD][tT]' '</DT', %push End;
'</[eE][mM]' '</EM', %push End;
'</[hH]1' '</H1', %push End;
'</[hH]2' '</H2', %push End;
'</[hH]3' '</H3', %push End;
'</[hH]4' '</H4', %push End;
'</[hH]5' '</H5', %push End;
'</[hH]6' '</H6', %push End;
'</[hH][rR]' '</HR', %push End;
'</[lL][iI]' '</LI', %push End;
'</[oO][lL]' '</OL', %push End;
'</[tT][dD]' '</TD', %push End;
'</[tT][hH]' '</TH', %push End;
'</[tT][rR]' '</TR', %push End;
'</[tT][tT]' '</TT', %push End;
'</[uU][lL]' '</UL', %push End;
'</[bB][iI][gG]' '</BIG', %push End;
'</[dD][fF][nN]' '</DFN', %push End;
'</[dD][iI][rR]' '</DIR', %push End;
'</[dD][iI][vV]' '</DIV', %push End;
'</[iI][mM][gG]' '</IMG', %push End;
'</[kK][bB][dD]' '</KBD', %push End;
'</[mM][aA][pP]' '</MAP', %push End;
'</[pP][rR][eE]' '</PRE', %push End;
'</[sS][uU][bB]' '</SUB', %push End;
'</[sS][uU][pP]' '</SUP', %push End;
'</[vV][aA][rR]' '</VAR', %push End;
'</[aA][rR][eE][aA]' '</AREA', %push End;
'</[bB][aA][sS][eE]' '</BASE', %push End;
'</[bB][oO][dD][yY]' '</BODY', %push End;
'</[cC][iI][tT][eE]' '</CITE', %push End;
'</[cC][oO][dD][eE]' '</CODE', %push End;
'</[fF][oO][nN][tT]' '</FONT', %push End;
'</[fF][oO][rR][mM]' '</FORM', %push End;
'</[hH][eE][aA][dD]' '</HEAD', %push End;
'</[hH][tT][mM][lL]' '</HTML', %push End;
'</[lL][iI][nN][kK]' '</LINK', %push End;
'</[mM][eE][nN][uU]' '</MENU', %push End;
'</[mM][eE][tT][aA]' '</META', %push End;
'</[sS][aA][mM][pP]' '</SAMP', %push End;
'</[iI][nN][pP][uU][tT]' '</INPUT', %push End;
'</[pP][aA][rR][aA][mM]' '</PARAM', %push End;
'</[sS][mM][aA][lL][lL]' '</SMALL', %push End;
'</[sS][tT][yY][lL][eE]' '</STYLE', %push End;
'</[tT][aA][bB][lL][eE]' '</TABLE', %push End;
'</[tT][iI][tT][lL][eE]' '</TITLE', %push End;
'</[aA][pP][pP][lL][eE][tT]' '</APPLET', %push
End;
'</[cC][eE][nN][tT][eE][rR]' '</CENTER', %push
End;
'</[oO][pP][tT][iI][oO][nN]' '</OPTION', %push
End;
'</[sS][cC][rR][iI][pP][tT]' '</SCRIPT', %push
End;
'</[sS][eE][lL][eE][cC][tT]' '</SELECT', %push
End;
'</[sS][tT][rR][iI][kK][eE]' '</STRIKE', %push
End;
'</[sS][tT][rR][oO][nN][gG]' '</STRONG', %push
End;
'</[aA][dD][dD][rR][eE][sS][sS]' '</ADDRESS', %push
End;
'</[cC][aA][pP][tT][iI][oO][nN]' '</CAPTION', %push
End;
'</[bB][aA][sS][eE][fF][oO][nN][tT]' '</BASEFONT',
%push End;
'</[iI][sS][iI][nN][dD][eE][xX]' '</ISINDEX',
%push End;
'</[bB][lL][oO][cC][kK][qQ][uU][oO][tT][eE]' '</BLOCKQUOTE',
%push End;
'</[tT][eE][xX][tT][aA][rR][eE][aA]' '</TEXTAREA',
%push End;
'{ps}+' %ignore;
'>' '>', %pop;
'.' %ignore ;
'\n' %ignore ;
'\-\->' %ignore, %pop ;
'{ps}+' %ignore;
'=' '=', %push Val;
'>' '>', %pop;
'[aA][lL][tT]' 'ALT';
'[aA][cC][tT][iI][oO][nN]' 'ACTION';
'[aA][lL][iI][gG][nN]' 'ALIGN';
'[aA][lL][iI][nN][kK]' 'ALINK';
'[bB][oO][rR][dD][eE][rR]' 'BORDER';
'[bB][gG][cC][oO][lL][oO][rR]' 'BGCOLOR';
'[bB][aA][cC][kK][gG][rR][oO][uU][nN][dD]' 'BACKGROUND';
'[cC][oO][dD][eE]' 'CODE';
'[cC][oO][lL][sS]' 'COLS';
'[cC][oO][lL][oO][rR]' 'COLOR';
'[cC][lL][eE][aA][rR]' 'CLEAR';
'[cC][oO][oO][rR][dD][sS]' 'COORDS';
'[cC][hH][eE][cC][kK][eE][dD]' 'CHECKED';
'[cC][oO][lL][sS][pP][aA][nN]' 'COLSPAN';
'[cC][oO][mM][pP][aA][cC][tT]' 'COMPACT';
'[cC][oO][nN][tT][eE][nN][tT]' 'CONTENT';
'[cC][oO][dD][eE][bB][aA][sS][eE]' 'CODEBASE';
'[cC][eE][lL][lL][pP][aA][dD][dD][iI][nN][gG]' 'CELLPADDING';
'[cC][eE][lL][lL][sS][pP][aA][cC][iI][nN][gG]' 'CELLSPACING';
'[eE][nN][cC][tT][yY][pP][eE]' 'ENCTYPE';
'[hH][rR][eE][fF]' 'HREF';
'[hH][eE][iI][gG][hH][tT]' 'HEIGHT';
'[hH][sS][pP][aA][cC][eE]' 'HSPACE';
'[hH][tT][tT][pP]\-[eE][qQ][uU][iI][vV]' 'HTTP-EQUIV';
'[iI][sS][mM][aA][pP]' 'ISMAP';
'[lL][iI][nN][kK]' 'LINK';
'[mM][eE][tT][hH][oO][dD]' 'METHOD';
'[mM][uU][lL][tT][iI][pP][lL][eE]' 'MULTIPLE';
'[mM][aA][xX][lL][eE][nN][gG][tT][hH]' 'MAXLENGTH';
'[nN][aA][mM][eE]' 'NAME';
'[nN][oO][wW][rR][aA][pP]' 'NOWRAP';
'[nN][oO][hH][rR][eE][fF]' 'NOHREF';
'[nN][oO][sS][hH][aA][dD][eE]' 'NOSHADE';
'[pP][rR][oO][mM][pP][tT]' 'PROMPT';
'[rR][eE][fF]' 'REF';
'[rR][eE][lL]' 'REL';
'[rR][eE][vV]' 'REV';
'[rR][oO][wW][sS]' 'ROWS';
'[rR][oO][wW][sS][pP][aA][nN]' 'ROWSPAN';
'[sS][rR][cC]' 'SRC';
'[sS][iI][zZ][eE]' 'SIZE';
'[sS][hH][aA][pP][eE]' 'SHAPE';
'[sS][tT][aA][rR][tT]' 'START';
'[sS][eE][lL][eE][cC][tT][eE][dD]' 'SELECTED';
'[tT][eE][xX][tT]' 'TEXT';
'[tT][yY][pP][eE]' 'TYPE';
'[tT][iI][tT][lL][eE]' 'TITLE';
'[uU][sS][eE][mM][aA][pP]' 'USEMAP';
'[vV][aA][lL][uU][eE]' 'VALUE';
'[vV][lL][iI][nN][kK]' 'VLINK';
'[vV][sS][pP][aA][cC][eE]' 'VSPACE';
'[vV][aA][lL][iI][gG][nN]' 'VALIGN';
'[vV][eE][rR][sS][iI][oO][nN]' 'VERSION';
'[wW][iI][dD][tT][hH]' 'WIDTH';
'\"[^\"]*\"' 'STRING' %pop;
'{DIGIT}+' 'NUMBER', %pop;
'{NMCHAR}+' 'STRING', %pop;
'\"#{HEXDIGIT}{HEXDIGIT}{HEXDIGIT}{HEXDIGIT}{HEXDIGIT}{HEXDIGIT}\"'
'RGB', %pop;
'\"[\+\-]{DIGIT}+\"' 'SIZE_VALUE', %pop;
'\"{DIGIT}+\"' 'NUMBER', %pop;
'\"{DIGIT}+%\"' 'PERCENT', %pop;
'[aA][lL][lL]' 'ALL', %pop;
'[aA][qQ][uU][aA]' 'AQUA', %pop;
'[bB][aA][sS][eE][lL][iI][nN][eE]' 'BASELINE', %pop;
'[bB][lL][uU][eE]' 'BLUE', %pop;
'[bB][lL][aA][cC][kK]' 'BLACK', %pop;
'[bB][oO][tT][tT][oO][mM]' 'BOTTOM', %pop;
'[cC][eE][nN][tT][eE][rR]' 'CENTER', %pop;
'[cC][iI][rR][cC][lL][eE]' 'CIRCLE', %pop;
'[cC][oO][mM][pP][aA][cC][tT]' 'COMPACT', %pop;
'[cC][hH][eE][cC][kK][bB][oO][xX]' 'CHECKBOX', %pop;
'[cC][hH][eE][cC][kK][eE][dD]' 'CHECKED', %pop;
'[dD][iI][sS][cC]' 'DISC', %pop;
'[dD][eE][fF][aA][uU][lL][tT]' 'DEFAULT', %pop;
'[fF][iI][lL][eE]' 'FILE', %pop;
'[fF][uU][cC][hH][sS][iI][aA]' 'FUCHSIA', %pop;
'[gG][eE][tT]' 'GET', %pop;
'[gG][rR][aA][yY]' 'GRAY', %pop;
'[gG][rR][eE][eE][nN]' 'GREEN', %pop;
'[hH][iI][dD][dD][eE][nN]' 'HIDDEN', %pop;
'[iI][mM][aA][gG][eE]' 'IMAGE', %pop;
'[iI][sS][mM][aA][pP]' 'ISMAP', %pop;
'[lL][eE][fF][tT]' 'LEFT', %pop;
'[lL][iI][mM][eE]' 'LIME', %pop;
'[mM][aA][rR][oO][oO][nN]' 'MAROON', %pop;
'[mM][iI][dD][dD][lL][eE]' 'MIDDLE', %pop;
'[mM][uU][lL][tT][iI][pP][lL][eE]' 'MULTIPLE', %pop;
'[nN][aA][vV][yY]' 'NAVY', %pop;
'[nN][oO][nN][eE]' 'NONE', %pop;
'[nN][oO][wW][rR][aA][pP]' 'NOWRAP', %pop;
'[nN][oO][hH][rR][eE][fF]' 'NOHREF', %pop;
'[nN][oO][sS][hH][aA][dD][eE]' 'NOSHADE', %pop;
'[oO][lL][iI][vV][eE]' 'OLIVE', %pop;
'[pP][oO][lL][yY]' 'POLY', %pop;
'[pP][oO][sS][tT]' 'POST', %pop;
'[pP][uU][rR][pP][lL][eE]' 'PURPLE', %pop;
'[pP][aA][sS][sS][wW][oO][rR][dD]' 'PASSWORD', %pop;
'[rR][eE][dD]' 'RED', %pop;
'[rR][eE][cC][tT]' 'RECT', %pop;
'[rR][aA][dD][iI][oO]' 'RADIO', %pop;
'[rR][eE][sS][eE][tT]' 'RESET', %pop;
'[rR][iI][gG][hH][tT]' 'RIGHT', %pop;
'[sS][lL][iI][vV][eE][rR]' 'SLIVER', %pop;
'[sS][qQ][uU][aA][rR][eE]' 'SQUARE', %pop;
'[sS][uU][bB][mM][iI][tT]' 'SUBMIT', %pop;
'[sS][eE][lL][eE][cC][tT][eE][dD]' 'SELECTED', %pop;
'[tT][oO][pP]' 'TOP', %pop;
'[tT][eE][aA][lL]' 'TEAL', %pop;
'[tT][eE][xX][tT]' 'TEXT', %pop;
'[wW][hH][iI][tT][eE]' 'WHITE', %pop;
'[yY][eE][lL][lL][oO][wW]' 'YELLOW', %pop;
Wartości w cudzysłowach:
'\"[aA][lL][lL]\"' 'ALL', %pop;
'\"[aA][qQ][uU][aA]\"' 'AQUA', %pop;
'\"[bB][aA][sS][eE][lL][iI][nN][eE]\"' 'BASELINE', %pop;
'\"[bB][lL][uU][eE]\"' 'BLUE', %pop;
'\"[bB][lL][aA][cC][kK]\"' 'BLACK', %pop;
'\"[bB][oO][tT][tT][oO][mM]\"' 'BOTTOM', %pop;
'\"[cC][eE][nN][tT][eE][rR]\"' 'CENTER', %pop;
'\"[cC][iI][rR][cC][lL][eE]\"' 'CIRCLE', %pop;
'\"[cC][oO][mM][pP][aA][cC][tT]\"' 'COMPACT', %pop;
'\"[cC][hH][eE][cC][kK][bB][oO][xX]\"' 'CHECKBOX', %pop;
'\"[cC][hH][eE][cC][kK][eE][dD]\"' 'CHECKED', %pop;
'\"[dD][iI][sS][cC]\"' 'DISC', %pop;
'\"[dD][eE][fF][aA][uU][lL][tT]\"' 'DEFAULT', %pop;
'\"[fF][iI][lL][eE]\"' 'FILE', %pop;
'\"[fF][uU][cC][hH][sS][iI][aA]\"' 'FUCHSIA', %pop;
'\"[gG][eE][tT]\"' 'GET', %pop;
'\"[gG][rR][aA][yY]\"' 'GRAY', %pop;
'\"[gG][rR][eE][eE][nN]\"' 'GREEN', %pop;
'\"[hH][iI][dD][dD][eE][nN]\"' 'HIDDEN', %pop;
'\"[iI][mM][aA][gG][eE]\"' 'IMAGE', %pop;
'\"[iI][sS][mM][aA][pP]\"' 'ISMAP', %pop;
'\"[lL][eE][fF][tT]\"' 'LEFT', %pop;
'\"[lL][iI][mM][eE]\"' 'LIME', %pop;
'\"[mM][aA][rR][oO][oO][nN]\"' 'MAROON', %pop;
'\"[mM][iI][dD][dD][lL][eE]\"' 'MIDDLE', %pop;
'\"[mM][uU][lL][tT][iI][pP][lL][eE]\"' 'MULTIPLE', %pop;
'\"[nN][aA][vV][yY]\"' 'NAVY', %pop;
'\"[nN][oO][nN][eE]\"' 'NONE', %pop;
'\"[nN][oO][wW][rR][aA][pP]\"' 'NOWRAP', %pop;
'\"[nN][oO][hH][rR][eE][fF]\"' 'NOHREF', %pop;
'\"[nN][oO][sS][hH][aA][dD][eE]\"' 'NOSHADE', %pop;
'\"[oO][lL][iI][vV][eE]\"' 'OLIVE', %pop;
'\"[pP][oO][lL][yY]\"' 'POLY', %pop;
'\"[pP][oO][sS][tT]\"' 'POST', %pop;
'\"[pP][uU][rR][pP][lL][eE]\"' 'PURPLE', %pop;
'\"[pP][aA][sS][sS][wW][oO][rR][dD]\"' 'PASSWORD', %pop;
'\"[rR][eE][dD]\"' 'RED', %pop;
'\"[rR][eE][cC][tT]\"' 'RECT', %pop;
'\"[rR][aA][dD][iI][oO]\"' 'RADIO', %pop;
'\"[rR][eE][sS][eE][tT]\"' 'RESET', %pop;
'\"[rR][iI][gG][hH][tT]\"' 'RIGHT', %pop;
'\"[sS][lL][iI][vV][eE][rR]\"' 'SLIVER', %pop;
'\"[sS][qQ][uU][aA][rR][eE]\"' 'SQUARE', %pop;
'\"[sS][uU][bB][mM][iI][tT]\"' 'SUBMIT', %pop;
'\"[sS][eE][lL][eE][cC][tT][eE][dD]\"' 'SELECTED', %pop;
'\"[tT][oO][pP]\"' 'TOP', %pop;
'\"[tT][eE][aA][lL]\"' 'TEAL', %pop;
'\"[tT][eE][xX][tT]\"' 'TEXT', %pop;
'\"[wW][hH][iI][tT][eE]\"' 'WHITE', %pop;
'\"[yY][eE][lL][lL][oO][wW]\"' 'YELLOW', %pop;'[aA][lL][lL]'
ALL, 'ALL', %pop;
Produkcje :
color -> 'RGB';
data -> 'DATA';
align_val -> 'LEFT';
align_special_val -> 'TOP';
httpmethod -> 'GET';
document -> 'DOCTYPE' html ;
html -> html_start head body '</HTML' '>';
html_start -> '<HTML' 'VERSION' '=' 'STRING' '>';
head -> '<HEAD' '>' head_cont '</HEAD' '>';
head_cont -> head_cont title;
title -> '<TITLE' '>' data '</TITLE' '>';
isindex -> '<ISINDEX' 'PROMPT' '=' 'STRING' '>';
base -> '<BASE' 'HREF' '=' 'STRING' '>'; /* STRING -> URL */
script -> '<SCRIPT' '>' data '</SCRIPT' '>';
style -> '<STYLE' '>' data '</STYLE' '>';
meta -> '<META' meta_attr '>';
link -> '<LINK' link_attrs '>';
body -> '<BODY' body_attrs '>' body_cont '</BODY' '>';
body_cont -> body_cont heading ;
heading -> h1;
h1 -> '<H1' h_attr '>' h_cont '</H1' '>';
h_attr -> 'ALIGN' '=' align_val;
h_cont -> ;
text -> data;
font -> tt;
phrase -> em;
special -> a;
forms -> input;
tt -> '<TT' '>' font_phrase_cont '</TT' '>';
em -> '<EM' '>' font_phrase_cont '</EM' '>';
font_phrase_cont -> /*empty*/;
a -> '<A' a_attrs '>' a_cont '</A' '>' ;
a_cont -> ;/*empty*/
img -> '<IMG' img_attrs '>';
applet -> '<APPLET' applet_attrs '>' applet_cont '</APPLET'
'>';
applet_cont -> applet_cont param;
param -> '<PARAM' param_attr '>' ;
fonttag -> '<FONT' font_attr '>' font_cont '</FONT'
'>' ;
font_cont -> font_cont text ;
basefont -> '<BASEFONT' 'SIZE' '=' 'NUMBER' '>' ;
br -> '<BR' 'CLEAR' '=' clear_val '>' ;
map -> '<MAP' 'NAME' '=' 'STRING' '>' map_cont '</MAP' '>';
map_cont -> ;/*empty*/
area -> '<AREA' area_attrs '>' ;
shape_val -> 'RECT';
input -> '<INPUT' input_attrs '>';
type_input_val -> 'TEXT';
select -> '<SELECT' select_attrs '>' select_cont '</SELECT'
'>';
select_cont -> select_cont option;
option -> '<OPTION' option_attr '>' data '</OPTION' '>' ;
option_attr -> 'VALUE' '=' 'STRING' option_attr_selected;
option_attr_selected -> 'SELECTED';
textarea -> '<TEXTAREA' textarea_attr '>' data '</TEXTAREA'
'>';
block -> p;
//p -> '<P' p_attr '>' p_cont;
p_attr -> 'ALIGN' '=' align_val;
p_cont -> text;//bylo empty
list -> ul;
ul -> '<UL' ul_attr '>' ul_cont '</UL' '>';
ul_attr_type -> 'TYPE' '=' ulstyle;
ulstyle -> 'DISC';
ul_cont -> ul_cont ul_li ;
ul_li -> '<LI' ul_li_attr '>' flow '</LI' '>';
ul_li_attr -> 'TYPE' '=' ulstyle;
flow -> flow text;
ol -> '<OL' ol_attrs '>' ol_cont '</OL' '>' ;
ol_cont -> ol_cont ol_li ;
ol_li -> '<LI' ol_li_attr '>' flow '</LI' '>'
;
ol_li_attr_type -> 'TYPE' '=' 'STRING' ;
dir -> '<DIR' dir_menu_attr '>' dir_menu_cont '</DIR' '>'
;
dir_menu_cont -> dir_menu_cont text ;
menu -> '<MENU' dir_menu_attr '>' dir_menu_cont '</MENU' '>';
preformatted -> pre ; /* xmp listing ? */
pre -> '<PRE' pre_attr '>' pre_cont '</PRE' '>' ;
dl -> '<DL' dl_attr '>' dl_cont '</DL' '>' ;
dl_cont -> dl_cont dt ;
dt -> '<DT' '>' dt_cont '</DT' '>' ;
dt_cont -> dt_cont text ;
dd -> '<DD' '>' flow '</DD' '>' ;
div -> '<DIV' 'ALIGN' '=' align_val '>' body_cont '</DIV'
'>' ;
center -> '<CENTER' '>' body_cont '</CENTER' '>' ;
blockquote -> '<BLOCKQUOTE' '>' body_cont '</BLOCKQUOTE' '>'
;
form -> '<FORM' form_attrs '>' form_cont '</FORM'
'>' ;
form_cont -> body_cont ;
hr -> '<HR' hr_attrs '>' ;
table -> '<TABLE' table_attrs '>' table_cont '</TABLE'
'>' ;
table_cont -> caption table_cont1 ;
table_cont1 -> tr ;
caption -> '<CAPTION' caption_attr '>' caption_cont '</CAPTION'
'>' ;
caption_cont -> ;/*empty*/
tr -> '<TR' tr_attr '>' tr_cont '</TR' '>' ;
tr_attr -> 'ALIGN' '=' align_val 'VALIGN' '=' valign_val ;
valign_val -> 'TOP';
tr_cont -> tr_cont td ;
th -> '<TH' th_td_attrs '>' body_cont '</TH' '>' ;
th_td_attrs -> th_td_attr ;
td -> '<TD' th_td_attrs '>' body_cont '</TD' '>' ;
address -> '<ADDRESS' '>' address_cont '</ADDRESS'
'>' ;
color -> 'AQUA';
color -> 'BLACK';
color -> 'BLUE';
color -> 'FUCHSIA';
color -> 'GRAY';
color -> 'GREEN';
color -> 'LIME';
color -> 'MAROON';
color -> 'NAVY';
color -> 'OLIVE';
color -> 'PURPLE';
color -> 'RED';
color -> 'SLIVER';
color -> 'TEAL';
color -> 'WHITE';
color -> 'YELLOW';
align_val -> 'RIGHT';
align_val -> 'CENTER';
align_special_val -> 'MIDDLE';
align_special_val -> 'BOTTOM';
align_special_val -> 'LEFT';
align_special_val -> 'RIGHT';
httpmethod -> 'POST';
html -> head body;
html_start -> '<HTML' '>';
head -> head_cont;
head_cont -> head_cont isindex;
head_cont -> head_cont base;
head_cont -> head_cont script;
head_cont -> head_cont style;
head_cont -> head_cont meta;
head_cont -> head_cont link;
head_cont -> ;
title -> '<TITLE' '>' '</TITLE' '>';
isindex -> '<ISINDEX' '>';
meta_attr -> 'CONTENT' '=' 'STRING' ;
meta_attr -> 'NAME' '=' 'STRING' 'CONTENT' '=' 'STRING' ;
meta_attr -> 'HTTP-EQUIV' '=' 'STRING' 'CONTENT' '=' 'STRING' ;
link_attrs -> link_attr;
link_attr -> link_attr 'REL' '=' 'STRING' ;
link_attr -> link_attr 'REV' '=' 'STRING' ;
link_attr -> link_attr 'HREF' '=' 'STRING' ;
link_attr -> link_attr 'TITLE' '=' 'STRING' ;
link_attr -> ;
body -> body_cont ;
body_attrs -> body_attr;
body_attr -> body_attr 'BACKGROUND' '=' 'STRING';
body_attr -> body_attr 'BGCOLOR' '=' color;
body_attr -> body_attr 'TEXT' '=' color;
body_attr -> body_attr 'LINK' '=' color;
body_attr -> body_attr 'VLINK' '=' color;
body_attr -> body_attr 'ALINK' '=' color;
body_attr -> ;
body_cont -> body_cont text ;
body_cont -> body_cont block ;
body_cont -> body_cont address ;
body_cont -> /*empty*/;
heading -> h2;
heading -> h3;
heading -> h4;
heading -> h5;
heading -> h6;
h2 -> '<H2' h_attr '>' h_cont '</H2' '>';
h3 -> '<H3' h_attr '>' h_cont '</H3' '>';
h4 -> '<H4' h_attr '>' h_cont '</H4' '>';
h5 -> '<H5' h_attr '>' h_cont '</H5' '>';
h6 -> '<H6' h_attr '>' h_cont '</H6' '>';
h_attr -> ;
h_cont -> h_cont text;
text -> font;
text -> phrase;
text -> special;
text -> forms;
font -> i;
font -> b;
font -> u;
font -> strike;
font -> big;
font -> small;
font -> sub;
font -> sup;
phrase -> strong;
phrase -> dfn;
phrase -> code;
phrase -> samp;
phrase -> kbd;
phrase -> var;
phrase -> cite;
special -> img;
special -> applet;
special -> fonttag;
special -> basefont;
special -> br;
special -> script;
special -> map;
forms -> select;
forms -> textarea;
i -> '<I' '>' font_phrase_cont '</I' '>' ;
b -> '<B' '>' font_phrase_cont '</B' '>' ;
u -> '<U' '>' font_phrase_cont '</U' '>' ;
strike -> '<STRIKE' '>' font_phrase_cont '</STRIKE' '>';
big -> '<BIG' '>' font_phrase_cont '</BIG' '>';
small -> '<SMALL' '>' font_phrase_cont '</SMALL' '>';
sub -> '<SUB' '>' font_phrase_cont '</SUB' '>';
sup -> '<SUP' '>' font_phrase_cont '</SUP' '>';
strong -> '<STRONG' '>' font_phrase_cont '</STRONG' '>';
dfn -> '<DFN' '>' font_phrase_cont '</DFN' '>';
code -> '<CODE' '>' font_phrase_cont '</CODE' '>' ;
samp -> '<SAMP' '>' font_phrase_cont '</SAMP' '>' ;
kbd -> '<KBD' '>' font_phrase_cont '</KBD' '>';
var -> '<VAR' '>' font_phrase_cont '</VAR' '>';
cite -> '<CITE' '>' font_phrase_cont '</CITE' '>' ;
font_phrase_cont -> font_phrase_cont text;
a_attrs -> a_attr ;
a_attr -> a_attr 'HREF' '=' 'STRING' ;
a_attr -> a_attr 'NAME' '=' 'STRING' ;
a_attr -> a_attr 'REL' '=' 'STRING' ;
a_attr -> a_attr 'REV' '=' 'STRING' ;
a_attr -> a_attr 'TITLE' '=' 'STRING' ;
a_attr -> ;
a_cont -> a_cont text;/* blad - a nie moze zawierac w sobie innego
a !!! */
img_attrs -> img_attr;
img_attr -> img_attr 'SRC' '=' 'STRING' ;
img_attr -> img_attr 'ALT' '=' 'STRING' ;
img_attr -> img_attr 'ALIGN' '=' align_special_val ;
img_attr -> img_attr 'HEIGHT' '=' 'NUMBER' ;
img_attr -> img_attr 'WIDTH' '=' 'NUMBER' ;
img_attr -> img_attr 'BORDER' '=' 'NUMBER' ;
img_attr -> img_attr 'HSPACE' '=' 'NUMBER' ;
img_attr -> img_attr 'VSPACE' '=' 'NUMBER' ;
img_attr -> img_attr 'USEMAP' '=' 'STRING' ;
img_attr -> img_attr 'ISMAP' ;
img_attr -> img_attr 'ISMAP' '=' 'ISMAP' ;
img_attr -> ;/*empty*/
applet_attrs -> applet_attr ;
applet_attr -> applet_attr 'CODEBASE' '=' 'STRING' ;
applet_attr -> applet_attr 'CODE' '=' 'STRING';
applet_attr -> applet_attr 'NAME' '=' 'STRING';
applet_attr -> applet_attr 'ALT' '=' 'STRING';
applet_attr -> applet_attr 'ALIGN' '=' align_special_val ;
applet_attr -> applet_attr 'HEIGHT' '=' 'NUMBER' ;
applet_attr -> applet_attr 'WIDTH' '=' 'NUMBER' ;
applet_attr -> applet_attr 'HSPACE' '=' 'NUMBER' ;
applet_attr -> applet_attr 'VSPACE' '=' 'NUMBER' ;
applet_attr -> ; /*empty*/
applet_cont -> applet_cont text;
applet_cont -> ; /*empty*/
param_attr -> 'NAME' '=' 'STRING' 'VALUE' '=' 'STRING';
param_attr -> 'NAME' '=' 'STRING' ;
font_attr -> 'SIZE' '=' 'SIZE_VALUE' ;
font_attr -> 'COLOR' '=' color ;
font_attr -> 'COLOR' '=' color 'SIZE' '=' 'SIZE_VALUE';
font_attr -> 'SIZE' '=' 'SIZE_VALUE' 'COLOR' '=' color ;
font_attr -> ;
font_cont -> ; /*empty*/
basefont -> '<BASEFONT' '>' ;
br -> '<BR' '>' ;
clear_val -> 'LEFT' ;
clear_val -> 'RIGHT' ;
clear_val -> 'ALL' ;
clear_val -> 'NONE' ;
map -> '<MAP' '>' map_cont '</MAP' '>';
map_cont -> map_cont area;
area_attrs -> area_attr ;
area_attr -> area_attr 'SHAPE' '=' shape_val;
area_attr -> area_attr 'COORDS' '=' 'STRING';
area_attr -> area_attr 'NOHREF' ;
area_attr -> area_attr 'NOHREF' '=' 'NOHREF' ;
area_attr -> area_attr 'HREF' '=' 'STRING';
area_attr -> area_attr 'ALT' '=' 'STRING';
area_attr -> ;
shape_val -> 'CIRCLE';
shape_val -> 'POLY';
shape_val -> 'DEFAULT';
input_attrs -> input_attr ;
input_attr -> input_attr 'TYPE' '=' type_input_val;
input_attr -> input_attr 'NAME' '=' 'STRING';
input_attr -> input_attr 'VALUE' '=' 'STRING' ;
input_attr -> input_attr 'CHECKED' '=' 'CHECKED' ;
input_attr -> input_attr 'CHECKED' ;
input_attr -> input_attr 'SIZE' '=' 'NUMBER' ;
input_attr -> input_attr 'MAXLENGTH' '=' 'NUMBER' ;
input_attr -> input_attr 'SRC' '=' 'STRING' ;
input_attr -> input_attr 'ALIGN' '=' align_special_val ;
input_attr -> ;
type_input_val -> 'PASSWORD';
type_input_val -> 'CHECKBOX';
type_input_val -> 'RADIO';
type_input_val -> 'SUBMIT';
type_input_val -> 'RESET';
type_input_val -> 'FILE';
type_input_val -> 'HIDDEN';
type_input_val -> 'IMAGE';
select_attrs -> select_attr ;
select_attr -> select_attr 'NAME' '=' 'STRING';
select_attr -> select_attr 'SIZE' '=' 'NUMBER';
select_attr -> select_attr 'MULTIPLE' '=' 'MULTIPLE' ;
select_attr -> select_attr 'MULTIPLE' ;
select_attr -> ; /*empty*/
select_cont -> option;
option -> '<OPTION' option_attr '>' data ;
option_attr -> option_attr_selected 'VALUE' '=' 'STRING';
option_attr -> option_attr_selected ;
option_attr_selected -> 'SELECTED' '=' 'SELECTED';
textarea_attr -> 'NAME' '=' 'STRING' 'ROWS' '=' 'NUMBER' 'COLS'
'=' 'NUMBER';
textarea_attr -> 'NAME' '=' 'STRING' 'COLS' '=' 'NUMBER' 'ROWS'
'=' 'NUMBER';
textarea_attr -> 'ROWS' '=' 'NUMBER' 'NAME' '=' 'STRING' 'COLS'
'=' 'NUMBER';
textarea_attr -> 'ROWS' '=' 'NUMBER' 'COLS' '=' 'NUMBER' 'NAME'
'=' 'STRING';
textarea_attr -> 'COLS' '=' 'NUMBER' 'NAME' '=' 'STRING' 'ROWS'
'=' 'NUMBER';
textarea_attr -> 'COLS' '=' 'NUMBER' 'ROWS' '=' 'NUMBER' 'NAME'
'=' 'STRING';
block -> list;
block -> preformatted;
block -> dl;
block -> div;
block -> center;
block -> blockquote;
block -> form;
block -> isindex;
block -> hr;
block -> table ;
p -> '<P' p_attr '>' p_cont '</P' '>';
p_attr -> ;
p_cont -> p_cont text ;
list -> ol;
list -> dir;
list -> menu;
ul_attr -> ul_attr_compact ul_attr_type;
ul_attr -> ul_attr_type ul_attr_compact;
ul_attr -> ul_attr_compact;
ul_attr -> ul_attr_type;
ul_attr -> ;
ul_attr_compact -> 'COMPACT' '=' 'COMPACT';
ul_attr_compact -> 'COMPACT';
ulstyle -> 'SQUARE';
ulstyle -> 'CIRCLE';
ul_cont -> ; /*empty*/
ul_li -> '<LI' ul_li_attr '>' flow ;
ul_li_attr -> 'VALUE' '=' 'NUMBER' ;
ul_li_attr -> 'VALUE' '=' 'NUMBER' 'TYPE' '=' ulstyle;
ul_li_attr -> 'TYPE' '=' ulstyle 'VALUE' '=' 'NUMBER';
ul_li_attr -> ;
flow -> flow block;
flow -> ; /*empty*/
ol_attrs -> ol_attr ;
ol_attr -> ol_attr 'TYPE' '=' 'STRING';
ol_attr -> ol_attr 'TYPE' '=' 'NUMBER';
ol_attr -> ol_attr 'START' '=' 'NUMBER';
ol_attr -> ol_attr 'COMPACT' '=' 'COMPACT';
ol_attr -> ol_attr 'COMPACT';
ol_attr -> ; /*empty*/
ol_cont -> ;/*empty*/
ol_li -> '<LI' ol_li_attr '>' flow ;
ol_li_attr -> ol_li_attr_type 'VALUE' '=' 'NUMBER' ;
ol_li_attr -> 'VALUE' '=' 'NUMBER' ol_li_attr_type ;
ol_li_attr -> ol_li_attr_type ;
ol_li_attr -> 'VALUE' '=' 'NUMBER' ;
ol_li_attr -> ;
ol_li_attr_type -> 'TYPE' '=' 'NUMBER' ;
dir_menu_attr -> 'COMPACT' '=' 'COMPACT' ;
dir_menu_attr -> 'COMPACT' ;
dir_menu_attr -> ;/*empty*/
dir_menu_cont -> ;
pre_attr -> 'WIDTH' '=' 'NUMBER' ;
pre_attr -> ;/*empty*/
dl_attr -> 'COMPACT' '=' 'COMPACT' ;
dl_attr -> 'COMPACT' ;
dl_attr -> ;/*empty*/
dl_cont -> dl_cont dd ;
dl_cont -> ;/*empty*/
dt -> '<DT' '>' dt_cont ;
dt_cont -> ;/*empty*/
dd -> '<DD' '>' flow ;
div -> '<DIV' '>' body_cont '</DIV' '>' ;
form_attrs -> form_attr ;
form_attr -> form_attr 'ACTION' '=' 'STRING';
form_attr -> form_attr 'METHOD' '=' httpmethod ;
form_attr -> form_attr 'ENCTYPE' '=' 'STRING' ;
form_attr -> ;
hr_attrs -> hr_attr ;
hr_attr -> hr_attr 'ALIGN' '=' align_val ;
hr_attr -> hr_attr 'NOSHADE' ;
hr_attr -> hr_attr 'NOSHADE' '=' 'NOSHADE' ;
hr_attr -> hr_attr 'SIZE' '=' 'NUMBER' ;
hr_attr -> hr_attr 'WIDTH' '=' 'NUMBER' ;
hr_attr -> hr_attr 'WIDTH' '=' 'PERCENT' ;
hr_attr -> ;/*empty*/
table_attrs -> table_attr;
table_attr -> table_attr 'ALIGN' '=' align_val ;
table_attr -> table_attr 'WIDTH' '=' 'NUMBER' ;
table_attr -> table_attr 'WIDTH' '=' 'PERCENT' ;
table_attr -> table_attr 'BORDER' '=' 'NUMBER' ;
table_attr -> table_attr 'BORDER' ;
table_attr -> table_attr 'BORDER' '=' 'BORDER' ;
table_attr -> table_attr 'CELLSPACING' '=' 'NUMBER' ;
table_attr -> table_attr 'CELLPADDING' '=' 'NUMBER' ;
table_attr -> ; /*empty*/
table_cont -> table_cont1 ;
table_cont1 -> table_cont1 tr ;
caption_attr -> 'ALIGN' '=' 'TOP' ;
caption_attr -> 'ALIGN' '=' 'BOTTOM' ;
caption_attr -> ;
caption_cont -> caption_cont text ;
tr -> '<TR' tr_attr '>' tr_cont ;
tr_attr -> 'VALIGN' '=' valign_val 'ALIGN' '=' align_val ;
tr_attr -> 'VALIGN' valign_val ;
tr_attr -> 'ALIGN' '=' align_val ;
tr_attr -> ;
valign_val -> 'MIDDLE';
valign_val -> 'BOTTOM';
valign_val -> 'BASELINE';
tr_cont -> tr_cont th ;
tr_cont -> ;/*empty*/
th -> '<TH' th_td_attrs '>' body_cont ;
th_td_attr -> th_td_attr 'ROWSPAN' '=' 'NUMBER' ;
th_td_attr -> th_td_attr 'COLSPAN' '=' 'NUMBER' ;
th_td_attr -> th_td_attr 'NOWRAP' ;
th_td_attr -> th_td_attr 'NOWRAP' '=' 'NOWRAP' ;
th_td_attr -> th_td_attr 'ALIGN' '=' align_val ;
th_td_attr -> th_td_attr 'VALIGN' '=' valign_val ;
th_td_attr -> th_td_attr 'WIDTH' '=' 'NUMBER' ;
th_td_attr -> th_td_attr 'HEIGHT' '=' 'NUMBER' ;
th_td_attr -> ; /*empty*/
td -> '<TD' th_td_attrs '>' body_cont ;
address_cont -> address_cont p ;
address_cont -> address_cont text ;
address_cont -> ;