%x comment
%x comtwo
%x slt
%{
/*****************************************
Team: Jon Gregory, Gor Nishanov
A "Pretty Print" utility
for
Java code
written in Flex
Project #2 (Pretty Printer portion)
for RPI course 66-648 Compiler Design Theory
March 7, 1997
Made from modified code
from Lex part of Project #1
Mar 8, 1997
Modified again to churn out a HTML text file
that looks nice when viewed with an HTML viewer!
March 9, 1997
Modified to handle all lessthan and greater than
instances in comments, strings, etc...
*****************************************/
int nindent = 0;
int nparan = 0;
int olom = 0;
int dflag = 0;
int ifwflag = 0;
int indamt = 1;
int nbrac = 1;
int lind = 0;
int dind = 0;
int amind[600];
int dfarr[600];
int dcar[600];
int lslb=0;
int aa =0;
int dclear=20;
int dwow=0;
int dwlc=0;
int tfl=0;
void dwipe( )
{ int q;
for (q=0; q <= 599; ++q) dfarr[q]=0;
}
void bnspace( snum ) int snum;
{ int sct;
printf("\n
");
if (snum>0 )
for (sct=0; sct < snum; ++sct) printf("");
if (snum<0 )
for (sct=0; sct > snum; --sct) printf("
");
}
int adr( snum ) int snum;
{ if (snum<10 ) {
printf("Java - beautified");
printf(""); snum=50;}
return snum;
}
void nspace( snumm ) int snumm;
{ int sctt;
printf("\n");
if (snumm>0 )
for (sctt=0; sctt <= snumm; ++sctt) printf("");
}
%}
OctalDigit [0-7]
DecimalDigit [0-9]
HexDigit [0-9a-fA-F]
NonzeroDigit [1-9]
HexPrefix 0[xX]
Sign [\+\-]
ExponentLetter [eE]
IntegerSuffix [lL]
FloatSuffix [fFdD]
DecimalLiteral {NonzeroDigit}{DecimalDigit}*
HexLiteral {HexPrefix}{HexDigit}+
OctalLiteral 0{OctalDigit}*
Digits {DecimalDigit}+
Exponent {ExponentLetter}({Sign}?{DecimalDigit}+)?
CrazyFloat "."{Digits}{Exponent}?{FloatSuffix}?
NormalFloat {Digits}"."{Digits}?{Exponent}?{FloatSuffix}?
NominalFloat {Digits}{FloatSuffix}
NoDotFloat {Digits}{Exponent}{FloatSuffix}?
FloatingPointLiteral ({NormalFloat}|{NominalFloat}|{NoDotFloat}|{CrazyFloat})
IntegerLiteral ({DecimalLiteral}|{HexLiteral}|{OctalLiteral}){IntegerSuffix}?
%%
{FloatingPointLiteral} { tfl=adr(tfl); printf (yytext); printf(""); }
{IntegerLiteral} { tfl=adr(tfl); printf (yytext); printf(""); }
"abstract" { tfl=adr(tfl); if (dclear>10) dwipe; if (dclear>10) dclear=0;
if (lslb==50) { dind=nindent-lind;bnspace(dind);lind=nindent;} lslb=0; printf(""); printf(yytext); printf(""); printf(" "); }
"boolean" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"break" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"byte" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"case" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"catch" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"char" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"class" { tfl=adr(tfl); if (dclear>10) dwipe; if (dclear>10) dclear=0;
if (lslb==50) { dind=nindent-lind;bnspace(dind);lind=nindent;} lslb=0; printf(""); printf(yytext); printf(""); printf(" "); }
"const" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"continue" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"default" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"do" { tfl=adr(tfl); dfarr[nbrac]=50; ++dwlc; dcar[nbrac]=dwlc; printf(""); printf(yytext); printf(""); printf(" "); olom=50; dflag=50;
nindent=nindent+indamt;
printf("");
printf(" // <--- top of DO-WHILE loop # %d ",dcar[nbrac]);
printf("");
dind=nindent-lind;bnspace(dind);lind=nindent;ifwflag=0;}
"double" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"else"[ \t\r\n]*"if" { tfl=adr(tfl); printf(""); printf ("elseif"); printf(""); printf(" "); ifwflag=50; }
"else" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); nindent=nindent+indamt;olom=50; }
"else"[ \t\r\n]*/"{" { tfl=adr(tfl); printf(""); printf ("else ");printf("");}
"extends" { tfl=adr(tfl); if (dclear>10) dwipe; if (dclear>10) dclear=0;
if (lslb==50) { dind=nindent-lind;bnspace(dind);lind=nindent;} lslb=0; printf(" "); printf(yytext); printf(""); printf(" "); }
"final" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"finally" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"float" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"for" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); ifwflag=50; }
"goto" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"if" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); ifwflag=50; }
"implements" { tfl=adr(tfl); printf(" "); printf(yytext); printf(""); printf(" "); }
"import" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"instanceof" { tfl=adr(tfl); if (dclear>10) dwipe; if (dclear>10) dclear=0;
if (lslb==50) { dind=nindent-lind;bnspace(dind);lind=nindent;} lslb=0; printf(""); printf(yytext); printf(""); printf(" "); }
"int" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"interface" { tfl=adr(tfl); if (dclear>10) dwipe; if (dclear>10) dclear=0;
if (lslb==50) { dind=nindent-lind;bnspace(dind);lind=nindent;} lslb=0; printf(""); printf(yytext); printf(""); printf(" "); }
"long" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"native" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"new" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"package" { tfl=adr(tfl); if (lslb==50) { dind=nindent-lind;bnspace(dind);lind=nindent;} lslb=0; printf(""); printf(yytext); printf(""); printf(" "); }
"private" { tfl=adr(tfl); if (lslb==50) { dind=nindent-lind;bnspace(dind);lind=nindent;} lslb=0; printf(""); printf(yytext); printf(""); printf(" "); }
"protected" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"public" { tfl=adr(tfl); if (lslb==50) { dind=nindent-lind;bnspace(dind);lind=nindent;} lslb=0; printf(""); printf(yytext); printf(""); printf(" "); }
"return" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"short" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"static" { tfl=adr(tfl); if (lslb==50) { dind=nindent-lind;bnspace(dind);lind=nindent;} lslb=0; printf(""); printf(yytext); printf(""); printf(" "); }
"super" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"switch" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"synchronized" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"this" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"throw" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"throws" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"transient" { tfl=adr(tfl); if (lslb==50) { dind=nindent-lind;bnspace(dind);lind=nindent;} lslb=0; printf(""); printf(yytext); printf(""); printf(" "); }
"try" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); }
"void" { tfl=adr(tfl); if (lslb==50) { dind=nindent-lind;bnspace(dind);lind=nindent;} lslb=0; printf(""); printf(yytext); printf(""); printf(" "); }
"volatile" { tfl=adr(tfl); if (lslb==50) { dind=nindent-lind;bnspace(dind);lind=nindent;} lslb=0; printf(""); printf(yytext); printf(""); printf(" "); }
"while" { tfl=adr(tfl); printf(""); printf(yytext); printf(""); printf(" "); ifwflag=50; if (dflag==25) dwow=50;if (dflag==25) dflag=0;}
"*=" { tfl=adr(tfl); printf (yytext);}
"/=" { tfl=adr(tfl); printf (yytext);}
"%=" { tfl=adr(tfl); printf (yytext); printf(""); }
"+=" { tfl=adr(tfl); printf (yytext); printf(""); }
"-=" { tfl=adr(tfl); printf (yytext); printf(""); }
"<<=" { tfl=adr(tfl); printf ("<<="); printf(""); }
">>=" { tfl=adr(tfl); printf (">>="); printf(""); }
">>>=" { tfl=adr(tfl); printf (">>>="); printf(""); }
"&=" { tfl=adr(tfl); printf (yytext); printf(""); }
"^=" { tfl=adr(tfl); printf (yytext); printf(""); }
"|=" { tfl=adr(tfl); printf (yytext); printf(""); }
"=" { tfl=adr(tfl); printf (yytext); printf(""); }
"++" { tfl=adr(tfl); printf (yytext); printf(""); }
"--" { tfl=adr(tfl); printf (yytext); printf(""); }
"==" { tfl=adr(tfl); printf (yytext); printf(""); }
"!=" { tfl=adr(tfl); printf (yytext); printf(""); }
"<=" { tfl=adr(tfl); printf (">="); printf(""); }
">=" { tfl=adr(tfl); printf ("<"); printf(""); }
">" { tfl=adr(tfl); printf (">="); printf(""); }
"<" { tfl=adr(tfl); printf ("<"); printf(""); }
"||" { tfl=adr(tfl); printf (yytext); printf(""); }
"&&" { tfl=adr(tfl); printf (yytext); printf(""); }
">>" { tfl=adr(tfl); printf (">>"); printf(""); }
"<<" { tfl=adr(tfl); printf ("<<"); printf(""); }
">>>" { tfl=adr(tfl); printf (">>>"); printf(""); }
[\(][ \t\r\n]*[\)] { tfl=adr(tfl); printf ("()"); }
[\{][ \t\r\n]*[\}] { tfl=adr(tfl); printf ("{ }"); printf("\n");}
[\)][ \t\r\n]*[\{] { tfl=adr(tfl); --nparan; ++nbrac; nindent=nindent+indamt;amind[nbrac]=nindent;
printf (") {"); dind=nindent-lind;bnspace(dind);lind=nindent; ifwflag=0;}
"(" { tfl=adr(tfl); lslb=0; printf (yytext); printf(""); ++nparan;}
")" { tfl=adr(tfl); lslb=0; printf (yytext); printf(""); --nparan;
if ( ( nparan==0 ) && ( dwow== 50)) ifwflag=0;
if ( ( nparan==0 ) && ( dwow== 50)) olom=0;
if ( ( nparan==0 ) && ( dwow== 50)) dwow=1;
if ( ( nparan==0 ) && ( ifwflag== 50)) nindent=nindent+indamt;
if ( ( nparan==0 ) && ( ifwflag== 50)) olom=50;
if ( ( nparan==0 ) && ( ifwflag== 50)) { dind=nindent-lind;bnspace(dind);lind=nindent;}
if ( ( nparan==0 ) && ( ifwflag== 50)) ifwflag=0;
}
"{" { tfl=adr(tfl); if (dclear>10) dwipe; if (dclear>10) dclear=0;
dflag=0; dwow=0; lslb=0; ++nbrac; if (olom==0) nindent=nindent+indamt;
amind[nbrac]=nindent; olom=0;printf(yytext); dind=nindent-lind;bnspace(dind);lind=nindent;}
"}" { tfl=adr(tfl); dflag=0; --nbrac; aa=nindent-amind[nbrac];
nindent=amind[nbrac];if (lslb==0) { dind=nindent-lind;bnspace(dind);lind=nindent;}
if (lslb==50) { dind=0-aa; bnspace(dind); lind=lind-aa;}
printf (yytext); nindent=amind[nbrac]; dind=nindent-lind;bnspace(dind);lind=nindent; lslb=50;
if (dfarr[nbrac]==50) dflag=25;if (dfarr[nbrac]==50) dfarr[nbrac]=0;
if (nbrac==1) { dind=nindent-lind;bnspace(dind);lind=nindent;}}
"[" { tfl=adr(tfl); printf (yytext); printf(""); }
"]" { tfl=adr(tfl); printf (yytext); printf(""); }
";" { tfl=adr(tfl); lslb=0; printf (yytext); printf(" ");
if (dwow==1) printf("");
if (dwow==1) printf(" // <--- bottom of DO-WHILE loop # %d ",dcar[nbrac]);
if (dwow==1) printf("");
if (dwow==1) dwow=0;
if (ifwflag==0) nindent=amind[nbrac];
if (ifwflag==0) { dind=nindent-lind;bnspace(dind);lind=nindent; }
if (ifwflag==0) lslb=50;
olom=0;
if (dflag==50) dflag=25;}
"," { tfl=adr(tfl); printf (yytext); printf(" "); }
"." { tfl=adr(tfl); printf (yytext); printf(""); }
"?" { tfl=adr(tfl); printf (yytext); printf(""); }
":" { tfl=adr(tfl); printf (yytext); printf(""); }
"^" { tfl=adr(tfl); printf (yytext); printf(""); }
"&" { tfl=adr(tfl); printf (yytext); printf(""); }
"|" { tfl=adr(tfl); printf (yytext); printf(""); }
"+" { tfl=adr(tfl); printf (yytext); printf(""); }
"-" { tfl=adr(tfl); printf (yytext); printf(""); }
"/" { tfl=adr(tfl); printf (yytext); printf(""); }
"*" { tfl=adr(tfl); printf (yytext); printf(""); }
"%" { tfl=adr(tfl); printf (yytext); printf(""); }
"~" { tfl=adr(tfl); printf (yytext); printf(""); }
"!" { tfl=adr(tfl); printf (yytext); printf(""); }
"null" { tfl=adr(tfl); printf (yytext); printf(""); }
"true" { tfl=adr(tfl); printf (yytext); printf(""); }
"false" { tfl=adr(tfl); printf (yytext); printf(""); }
\" { BEGIN slt;tfl=adr(tfl); lslb=0; printf (yytext); printf(""); } /* StringLiteral*/
"<" { printf ("<"); } /* StringLiteral*/
">" { printf (">"); } /* StringLiteral*/
[^"<>\n]* { lslb=0; printf (yytext); printf(""); } /* StringLiteral*/
\" { BEGIN INITIAL ; lslb=0; printf (yytext); printf(""); } /* StringLiteral*/
\'[^\'<>\n]+\' { tfl=adr(tfl); lslb=0; printf (yytext); printf(""); } /* CharLiteral */
\'+"<"+\' { tfl=adr(tfl); lslb=0; printf ("'<'"); printf(""); } /* CharLiteral */
\'+">"+\' { tfl=adr(tfl); lslb=0; printf ("'>'"); printf(""); } /* CharLiteral */
[a-zA-Z_][a-zA-Z0-9_]* { tfl=adr(tfl); lslb=0; printf (yytext); printf(""); }
"/*" { BEGIN comment; tfl=adr(tfl); lslb=0; printf(""); printf (yytext);}
[^*<>\n]* { printf (yytext); printf(" "); }
"*"+[^*<>/\n]* { printf (yytext); printf(" "); }
"<" { printf ("<"); }
">" { printf (">"); }
\n { dind=nindent-lind;bnspace(dind);lind=nindent; }
"*"+"/" { BEGIN INITIAL ; printf (yytext);printf(""); printf(" "); dind=nindent-lind;bnspace(dind);lind=nindent; }
"//" { BEGIN comtwo; tfl=adr(tfl); lslb=0; printf(""); printf (yytext); }
[^<>\n]* { printf (yytext);}
"<" { printf ("<"); }
">" { printf (">"); }
\n { BEGIN INITIAL ; printf("");dind=nindent-lind;bnspace(dind);lind=nindent; }
[ \t\r]+ { tfl=adr(tfl); if (dclear>10) dwipe; if (dclear>10) dclear=0;
printf (""); }
"\n" { tfl=adr(tfl); if (dclear>10) dwipe; if (dclear>10) dclear=0;
printf (""); }
. { tfl=adr(tfl); printf (" HEY this aint good "); }
%%
int yywrap() { printf("
"); printf(" "); return 1; }