//------------------------------------------------------------------------------
//
// modifications by CO3
//
//------------------------------------------------------------------------------
// Einbau von Nlmod() wegen der Zeilenzahl
//
/*
* ACCENT
*
* A Compiler Compiler for the Entire Class of Context - Free Languages
*
* Copyright ( C ) 1999 Friedrich Wilhelm Schroeer
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 675 Mass Ave , Cambridge , MA 02139 , USA .
*/
#define PRIVATE static
#include <stdio.h>
/*--------------------------------------------------------------------*/
#define OutBufSize 6000
#define FlushPos 5000
/*--------------------------------------------------------------------*/
PRIVATE long OutputLineCount = 0 ;
PRIVATE long OutputLineCountCo3 = 0 ; // CO3
PRIVATE char OutBuf[OutBufSize];
PRIVATE char *OutBufPtr;
PRIVATE FILE *OutFile;
/*--------------------------------------------------------------------*/
OpenOutput (Name)
char *Name;
{
OutFile = fopen(Name, "w" );
if (OutFile == NULL) {
printf("cannot open %s\n" , Name); exit (1 );
}
OutBufPtr = &OutBuf[0 ];
OutputLineCount = 0 ;
return 1 ;
}
/*--------------------------------------------------------------------*/
CloseOutput ()
{
fwrite(OutBuf, 1 , OutBufPtr - &OutBuf[0 ], OutFile);
fclose(OutFile);
}
/*--------------------------------------------------------------------*/
Put(Str)
char *Str;
{
while (*Str) *OutBufPtr++ = *Str++;
}
//----------------------------------------------------------------------
// CO3 Änderung prototype yygrammp.h
FILE *co3proto=0 ;
Putco3(char *Str) {
if (!co3proto) {
co3proto=fopen("yygrammp.h" ,"w" );
fprintf(co3proto,"%s\n" ,"void init_lexelem(void);" );
fprintf(co3proto,"%s\n" ,"void first_lexval(void);" );
fprintf(co3proto,"%s\n" ,"void next_lexval(void);" );
fprintf(co3proto,"%s\n" ,"void get_lexval(void);" );
fprintf(co3proto,"%s\n" ,"void init_dirsets(void);" );
fprintf(co3proto,"%s\n" ,"int yyselect(void);" );
fprintf(co3proto,"%s\n" ,"int yytransparent(int);" );
fprintf(co3proto,"%s\n" ,"int yymallocerror(void);" );
}
fprintf(co3proto,"%s" ,Str);
Put(Str);
return ;}
Nlco3 () {fprintf(co3proto,";\n" );}
// Ende CO3-Änderung
//----------------------------------------------------------------------
/*--------------------------------------------------------------------*/
PutBlockText(Str)
char *Str;
{
while (*Str) {
if (*Str == '\n' ) {
Nl();
Str++;
}
else
*OutBufPtr++ = *Str++;
}
}
/*--------------------------------------------------------------------*/
PutI (N)
long N;
{
if (N < 0 ) {
*OutBufPtr++ = '-' ;
N = -N;
}
if (N < 10 ) {
*OutBufPtr++ = N + '0' ;
}
else if (N < 100 ) {
*OutBufPtr++ = N/10 + '0' ;
*OutBufPtr++ = N%10 + '0' ;
}
else {
char buf[50 ];
register i;
register n = N;
i = 0 ;
do {
buf[++i] = (n % 10 ) + '0' ;
n = n / 10 ;
} while (n);
while (i)
*OutBufPtr++ = buf[i--];
}
}
/*--------------------------------------------------------------------*/
Nl ()
{
if (OutBufPtr > &OutBuf[FlushPos]) {
fwrite(OutBuf, 1 , OutBufPtr - &OutBuf[0 ], OutFile);
OutBufPtr = &OutBuf[0 ];
}
#ifdef EMIT_CR
*OutBufPtr++ = '\r' ;
#endif
*OutBufPtr++ = '\n' ;
OutputLineCount++;
}
/*--------------------------------------------------------------------*/
Nlmod ()
{
if (OutBufPtr > &OutBuf[FlushPos]) {
fwrite(OutBuf, 1 , OutBufPtr - &OutBuf[0 ], OutFile);
OutBufPtr = &OutBuf[0 ];
}
if (OutputLineCountCo3%3 ==2 ) {
#ifdef EMIT_CR
*OutBufPtr++ = '\r' ;
#endif
*OutBufPtr++ = '\n' ;
OutputLineCount++;
OutputLineCountCo3=0 ;}
else
OutputLineCountCo3++;
}
/*--------------------------------------------------------------------*/
GetOutputLineCount(ref_n)
int * ref_n;
{
*ref_n = OutputLineCount;
}
/*--------------------------------------------------------------------*/
Messung V0.5 in Prozent C=88 H=76 G=81
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.10Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-09-27)
¤
*Eine klare Vorstellung vom Zielzustand