|
FAUST compiler
0.9.9.6b8
|

Go to the source code of this file.
Functions | |
| void | printSigType (int n, int v, int c) |
| void | printSignal (Tree sig, FILE *out, int prec) |
Variables | |
| const char * | binopname [] |
| int | binopprec [] |
| void printSignal | ( | Tree | sig, |
| FILE * | out, | ||
| int | prec | ||
| ) |
Definition at line 85 of file sigprint.cpp.
References hd(), isList(), isProj(), isRec(), isRef(), isSigAttach(), isSigBinOp(), isSigDelay1(), isSigDocAccessTbl(), isSigDocConstantTbl(), isSigDocWriteTbl(), isSigFixDelay(), isSigFloatCast(), isSigGen(), isSigInput(), isSigInt(), isSigIntCast(), isSigOutput(), isSigPrefix(), isSigRDTbl(), isSigReal(), isSigTable(), isSigWRTbl(), print(), printSignal(), and tl().
Referenced by calcDeBruijn2Sym(), ScalarCompiler::generateCode(), main(), and printSignal().
{
int i;
double r;
Tree x, y, z, u, le, id;
if ( isSigInt(sig, &i) ) { fprintf(out, "%d", i); }
else if ( isSigReal(sig, &r) ) { fprintf(out, "%f", r); }
else if ( isSigInput(sig, &i) ) { fprintf(out, "IN%d", i); }
else if ( isSigOutput(sig, &i, x) ) { fprintf(out, "OUT%d := ", i); printSignal(x, out, 0); }
else if ( isSigBinOp(sig, &i, x, y) ) {
if (prec > binopprec[i]) fputs("(", out);
printSignal(x,out,binopprec[i]); fputs(binopname[i], out); printSignal(y, out, binopprec[i]);
if (prec > binopprec[i]) fputs(")", out);
}
else if ( isSigDelay1(sig, x) ) { fputs("mem(", out); printSignal(x,out,0); fputs(")", out); }
else if ( isSigPrefix(sig, x, y) ) { fputs("prefix(", out); printSignal(x,out,0); fputs(",", out); printSignal(y,out,0); fputs(")", out); }
else if ( isSigAttach(sig, x, y) ) { fputs("attach(", out); printSignal(x,out,0); fputs(",", out); printSignal(y,out,0); fputs(")", out); }
else if ( isSigFixDelay(sig, x, y) ) {
if (prec > 4) fputs("(", out);
printSignal(x,out,4); fputs("@", out); printSignal(y, out, 4);
if (prec > 4) fputs(")", out);
}
else if ( isProj(sig, &i, x) ) { printSignal(x,out,prec); fprintf(out, "#%d", i); }
else if ( isRef(sig, i) ) { fprintf(out, "$%d", i); }
else if ( isRef(sig, x) ) { print(x, out); }
else if ( isRec(sig, le)) { fputs("\\_.", out); printSignal(le, out, prec); }
else if ( isRec(sig, x, le)) { fputs("\\", out); print(x,out); fputs(".", out); printSignal(le, out, prec); }
else if ( isSigTable(sig, id, x, y) ) { fputs("table(", out); printSignal(x,out,0); fputc(',', out); printSignal(y,out,0); fputc(')', out); }
else if ( isSigWRTbl(sig, id, x, y, z) ){ printSignal(x,out,0); fputc('[',out); printSignal(y,out,0); fputs("] := (", out); printSignal(z,out,0); fputc(')', out); }
else if ( isSigRDTbl(sig, x, y) ) { printSignal(x,out,0); fputc('[', out); printSignal(y,out,0); fputc(']', out); }
else if (isSigDocConstantTbl(sig,x,y)) { fputs("sigDocConstantTbl(", out); printSignal(x,out,0); fputc(',', out);
printSignal(y,out,0); fputc(')', out); }
else if (isSigDocWriteTbl(sig,x,y,z,u)) { fputs("sigDocWriteTbl(", out); printSignal(x,out,0); fputc(',', out);
printSignal(y,out,0); fputc(',', out);
printSignal(z,out,0); fputc(',', out);
printSignal(u,out,0); fputc(')', out); }
else if (isSigDocAccessTbl(sig,x,y)) { fputs("sigDocAccessTbl(", out); printSignal(x,out,0); fputc(',', out);
printSignal(y,out,0); fputc(')', out); }
else if ( isSigGen(sig, x) ) { printSignal(x,out,prec); }
else if ( isSigIntCast(sig, x) ) { fputs("int(", out); printSignal(x,out,0); fputs(")", out); }
else if ( isSigFloatCast(sig, x) ) { fputs("float(", out); printSignal(x,out,0); fputs(")", out); }
else if (isList(sig)) {
char sep = '{';
do {
fputc(sep, out);
printSignal(hd(sig), out, 0);
sep=',';
sig = tl(sig);
} while (isList(sig));
fputc('}', out);
}
else
print(sig, out);
}


| void printSigType | ( | int | n, |
| int | v, | ||
| int | c | ||
| ) |
Definition at line 64 of file sigprint.cpp.
{
putchar("NR"[n]);
putchar("KB S"[v]);
putchar("CI X"[c]);
}
| const char* binopname[] |
{
"+", "-", "*", "/", "%",
"<<", ">>",
">", "<", ">=", "<=", "==", "!=",
"&", "|", "^"
}
Definition at line 71 of file sigprint.cpp.
| int binopprec[] |
{
2, 2, 3, 3, 3,
1, 1,
1, 1, 1, 1, 1, 1,
1, 1, 1
}
Definition at line 78 of file sigprint.cpp.
1.8.0