products/sources/formale sprachen/C image not shown  

Quellcode-Bibliothek

© Kompilation durch diese Firma

[Weder Korrektheit noch Funktionsfähigkeit der Software werden zugesichert.]

Datei:   Sprache: Unknown

Haftungsausschluß.rtf KontaktCS {CS[279] C[357] Ada[644]}diese Dinge liegen außhalb unserer Verantwortung

{\rtf1\ansi\ansicpg850 \deff0{\fonttbl{\f0\fnil Courier New;}{\f1\fnil Courier New;}{\f2\fnil Elbian;}}
{\colortbl;\red255\green0\blue0;\red0\green0\blue255;\red0\green0\blue128;\red0\green0\blue0;\red128\green0\blue0;\red0\green128\blue0;\red128\green128\blue128;\red128\green0\blue128;\red255\green0\blue255;}\f1\fs18 
\cf6 //------------------------------------------------------------------------------\cf0 \par
\cf6 //\cf0 \par
\cf6 //  modifications by CO3\cf0 \par
\cf6 //\cf0 \par
\cf6 //------------------------------------------------------------------------------\cf0 \par
\cf6 //  Einbau von Nlmod() wegen der Zeilenzahl\cf0 \par
\cf6 //\cf0 \par
\cf6 /*\cf0 \par
\cf6  \cf0 \cf6 *\cf0 \cf6  ACCENT \cf0 \par
\cf6  \cf0 \cf6 *\cf0 \cf6  \cf0 \par
\cf6  \cf0 \cf6 *\cf0 \cf6  A Compiler Compiler for the Entire Class of Context-Free Languages\cf0 \par
\cf6  \cf0 \cf6 *\cf0 \cf6  \cf0 \par
\cf6  \cf0 \cf6 *\cf0 \cf6  Copyright (C) 1999  Friedrich Wilhelm Schroeer\cf0 \par
\cf6  \cf0 \cf6 *\cf0 \cf6  \cf0 \par
\cf6  \cf0 \cf6 *\cf0 \cf6  This program is free software; you can redistribute it and\cf0 \cf6 /\cf0 \cf6 or modify\cf0 \par
\cf6  \cf0 \cf6 *\cf0 \cf6  it under the terms of the GNU General Public License as published by\cf0 \par
\cf6  \cf0 \cf6 *\cf0 \cf6  the Free Software Foundation; either version 2 of the License, or\cf0 \par
\cf6  \cf0 \cf6 *\cf0 \cf6  (at your option) any later version.\cf0 \par
\cf6  \cf0 \cf6 *\cf0 \cf6  \cf0 \par
\cf6  \cf0 \cf6 *\cf0 \cf6  This program is distributed in the hope that it will be useful,\cf0 \par
\cf6  \cf0 \cf6 *\cf0 \cf6  but WITHOUT ANY WARRANTY; without even the implied warranty of\cf0 \par
\cf6  \cf0 \cf6 *\cf0 \cf6  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\cf0 \par
\cf6  \cf0 \cf6 *\cf0 \cf6  GNU General Public License for more details.\cf0 \par
\cf6  \cf0 \cf6 *\cf0 \cf6  \cf0 \par
\cf6  \cf0 \cf6 *\cf0 \cf6  You should have received a copy of the GNU General Public License\cf0 \par
\cf6  \cf0 \cf6 *\cf0 \cf6  along with this program; if not, write to the Free Software\cf0 \par
\cf6  \cf0 \cf6 *\cf0 \cf6  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\cf0 \par
\cf6  \cf0 \cf6 */

\par
\par
#\cf9 define\cf0  \cf9 PRIVATE\cf0  \cf9 static\cf0 \par
\par
#\cf9 include\cf0  \cf2 <stdio.h>\cf0 \par
\par
\cf6 /*\cf0 \cf6 --------------------------------------------------------------------\cf0 \cf6 */\cf0 \par
\par
#\cf9 define\cf0  \cf9 OutBufSize\cf0  \cf9 6000\cf0 \par
#\cf9 define\cf0  \cf9 FlushPos\cf0  \cf9 5000\cf0 \par
\par
\cf6 /*\cf0 \cf6 --------------------------------------------------------------------\cf0 \cf6 */\cf0 \par
\par
\cf4 PRIVATE\cf0  \cf1 long\cf0  \cf4 OutputLineCount\cf0  \cf2 =\cf0  \cf3 0\cf0 ;\par
\cf4 PRIVATE\cf0  \cf1 long\cf0  \cf4 OutputLineCountCo3\cf0  \cf2 =\cf0  \cf3 0\cf0 ;        \cf6 // CO3\cf0 \par
\par
\cf4 PRIVATE\cf0  \cf1 char\cf0  \cf4 OutBuf\cf0 [\cf4 OutBufSize\cf0 ];\par
\cf4 PRIVATE\cf0  \cf1 char\cf0  \cf2 *\cf0 \cf4 OutBufPtr\cf0 ;\par
\cf4 PRIVATE\cf0  \cf4 FILE\cf0  \cf2 *\cf0 \cf4 OutFile\cf0 ;\par
\par
\cf6 /*\cf0 \cf6 --------------------------------------------------------------------\cf0 \cf6 */\cf0 \par
\par
\cf4 OpenOutput\cf0  (\cf4 Name\cf0 )\par
   \cf1 char\cf0  \cf2 *\cf0 \cf4 Name\cf0 ;\par
\{\par
   \cf4 OutFile\cf0  \cf2 =\cf0  \cf4 fopen\cf0 (\cf4 Name\cf0 , \cf2 "w"\cf0 );\par
\par
   \cf1 if\cf0  (\cf4 OutFile\cf0  \cf2 ==\cf0  \cf4 NULL\cf0 ) \{\par
      \cf4 printf\cf0 (\cf2 "cannot open %s\\n"\cf0 , \cf4 Name\cf0 ); \cf1 exit\cf0 (\cf3 1\cf0 );\par
   \}\par
   \cf4 OutBufPtr\cf0  \cf2 =\cf0  \cf2 &\cf0 \cf4 OutBuf\cf0 [\cf3 0\cf0 ];\par
   \cf4 OutputLineCount\cf0  \cf2 =\cf0  \cf3 0\cf0 ;\par
   \cf1 return\cf0  \cf3 1\cf0 ;\par
\}\par
\par
\cf6 /*\cf0 \cf6 --------------------------------------------------------------------\cf0 \cf6 */\cf0 \par
\cf4 CloseOutput\cf0  ()\par
\{\par
   \cf4 fwrite\cf0 (\cf4 OutBuf\cf0 , \cf3 1\cf0 , \cf4 OutBufPtr\cf0  \cf2 -\cf0  \cf2 &\cf0 \cf4 OutBuf\cf0 [\cf3 0\cf0 ], \cf4 OutFile\cf0 );\par
   \cf4 fclose\cf0 (\cf4 OutFile\cf0 );\par
\}\par
\par
\cf6 /*\cf0 \cf6 --------------------------------------------------------------------\cf0 \cf6 */\cf0 \par
\cf4 Put\cf0 (\cf4 Str\cf0 )\par
   \cf1 char\cf0  \cf2 *\cf0 \cf4 Str\cf0 ;\par
\{\par
   \cf1 while\cf0 (\cf2 *\cf0 \cf4 Str\cf0 ) \cf2 *\cf0 \cf4 OutBufPtr\cf0 \cf2 ++\cf0  \cf2 =\cf0  \cf2 *\cf0 \cf4 Str\cf0 \cf2 ++\cf0 ; \par
\}\par
\par
\cf6 //----------------------------------------------------------------------\cf0 \par
\cf6 // CO3 nderung prototype yygrammp.h\cf0 \par
\cf4 FILE\cf0  \cf2 *\cf0 \cf4 co3proto\cf0 \cf2 =\cf0 \cf3 0\cf0 ;\par
\cf4 Putco3\cf0 (\cf1 char\cf0  \cf2 *\cf0 \cf4 Str\cf0 ) \{\par
  \cf1 if\cf0  (\cf2 !\cf0 \cf4 co3proto\cf0 ) \{\par
    \cf4 co3proto\cf0 \cf2 =\cf0 \cf4 fopen\cf0 (\cf2 "yygrammp.h"\cf0 ,\cf2 "w"\cf0 );\par
    \cf4 fprintf\cf0 (\cf4 co3proto\cf0 ,\cf2 "%s\\n"\cf0 ,\cf2 "void init_lexelem(void);"\cf0 );\par
    \cf4 fprintf\cf0 (\cf4 co3proto\cf0 ,\cf2 "%s\\n"\cf0 ,\cf2 "void first_lexval(void);"\cf0 );\par
    \cf4 fprintf\cf0 (\cf4 co3proto\cf0 ,\cf2 "%s\\n"\cf0 ,\cf2 "void next_lexval(void);"\cf0 );\par
    \cf4 fprintf\cf0 (\cf4 co3proto\cf0 ,\cf2 "%s\\n"\cf0 ,\cf2 "void get_lexval(void);"\cf0 );\par
    \cf4 fprintf\cf0 (\cf4 co3proto\cf0 ,\cf2 "%s\\n"\cf0 ,\cf2 "void init_dirsets(void);"\cf0 );\par
    \cf4 fprintf\cf0 (\cf4 co3proto\cf0 ,\cf2 "%s\\n"\cf0 ,\cf2 "int yyselect(void);"\cf0 );\par
    \cf4 fprintf\cf0 (\cf4 co3proto\cf0 ,\cf2 "%s\\n"\cf0 ,\cf2 "int yytransparent(int);"\cf0 );\par
    \cf4 fprintf\cf0 (\cf4 co3proto\cf0 ,\cf2 "%s\\n"\cf0 ,\cf2 "int yymallocerror(void);"\cf0 );\par
    \}\par
  \cf4 fprintf\cf0 (\cf4 co3proto\cf0 ,\cf2 "%s"\cf0 ,\cf4 Str\cf0 );\par
 \cf4 Put\cf0 (\cf4 Str\cf0 );   \par
\cf1 return\cf0 ;\}\par
\cf4 Nlco3\cf0  () \{\cf4 fprintf\cf0 (\cf4 co3proto\cf0 ,\cf2 ";\\n"\cf0 );\}\par
\cf6 // Ende CO3-nderung\cf0 \par
\cf6 //----------------------------------------------------------------------\cf0 \par
\par
\cf6 /*\cf0 \cf6 --------------------------------------------------------------------\cf0 \cf6 */\cf0 \par
\cf4 PutBlockText\cf0 (\cf4 Str\cf0 )\par
   \cf1 char\cf0  \cf2 *\cf0 \cf4 Str\cf0 ;\par
\{\par
   \cf1 while\cf0 (\cf2 *\cf0 \cf4 Str\cf0 ) \{\par
      \cf1 if\cf0  (\cf2 *\cf0 \cf4 Str\cf0  \cf2 ==\cf0  \cf3 '\\n'\cf0 ) \{\par
         \cf4 Nl\cf0 ();\par
         \cf4 Str\cf0 \cf2 ++\cf0 ;\par
      \}\par
      \cf1 else\cf0 \par
         \cf2 *\cf0 \cf4 OutBufPtr\cf0 \cf2 ++\cf0  \cf2 =\cf0  \cf2 *\cf0 \cf4 Str\cf0 \cf2 ++\cf0 ; \par
   \}\par
\}\par
\par
\cf6 /*\cf0 \cf6 --------------------------------------------------------------------\cf0 \cf6 */\cf0 \par
\cf4 PutI\cf0  (\cf4 N\cf0 )\par
   \cf1 long\cf0  \cf4 N\cf0 ;\par
\{\par
   \cf1 if\cf0  (\cf4 N\cf0  \cf2 <\cf0  \cf3 0\cf0 ) \{\par
      \cf2 *\cf0 \cf4 OutBufPtr\cf0 \cf2 ++\cf0  \cf2 =\cf0  \cf3 '-'\cf0 ;\par
      \cf4 N\cf0  \cf2 =\cf0  \cf2 -\cf0 \cf4 N\cf0 ;\par
   \}\par
   \cf1 if\cf0  (\cf4 N\cf0  \cf2 <\cf0  \cf3 10\cf0 ) \{\par
      \cf2 *\cf0 \cf4 OutBufPtr\cf0 \cf2 ++\cf0  \cf2 =\cf0  \cf4 N\cf0  \cf2 +\cf0  \cf3 '0'\cf0 ;\par
   \}\par
   \cf1 else\cf0  \cf1 if\cf0  (\cf4 N\cf0  \cf2 <\cf0  \cf3 100\cf0 ) \{\par
      \cf2 *\cf0 \cf4 OutBufPtr\cf0 \cf2 ++\cf0  \cf2 =\cf0  \cf4 N\cf0 \cf2 /\cf0 \cf3 10\cf0  \cf2 +\cf0  \cf3 '0'\cf0 ;\par
      \cf2 *\cf0 \cf4 OutBufPtr\cf0 \cf2 ++\cf0  \cf2 =\cf0  \cf4 N\cf0 \cf2 %\cf0 \cf3 10\cf0  \cf2 +\cf0  \cf3 '0'\cf0 ;\par
   \}\par
   \cf1 else\cf0  \{\par
      \cf1 char\cf0  \cf4 buf\cf0 [\cf3 50\cf0 ];\par
      \cf1 register\cf0  \cf4 i\cf0 ;\par
      \cf1 register\cf0  \cf4 n\cf0  \cf2 =\cf0  \cf4 N\cf0 ;\par
\par
      \cf4 i\cf0  \cf2 =\cf0  \cf3 0\cf0 ;\par
\par
      \cf1 do\cf0  \{\par
         \cf4 buf\cf0 [\cf2 ++\cf0 \cf4 i\cf0 ] \cf2 =\cf0  (\cf4 n\cf0  \cf2 %\cf0  \cf3 10\cf0 ) \cf2 +\cf0  \cf3 '0'\cf0 ;\par
         \cf4 n\cf0  \cf2 =\cf0  \cf4 n\cf0  \cf2 /\cf0  \cf3 10\cf0 ;\par
      \} \cf1 while\cf0  (\cf4 n\cf0 );\par
\par
      \cf1 while\cf0  (\cf4 i\cf0 )\par
         \cf2 *\cf0 \cf4 OutBufPtr\cf0 \cf2 ++\cf0  \cf2 =\cf0  \cf4 buf\cf0 [\cf4 i\cf0 \cf2 --\cf0 ];\par
   \}\par
\}\par
\par
\cf6 /*\cf0 \cf6 --------------------------------------------------------------------\cf0 \cf6 */\cf0 \par
\cf4 Nl\cf0  ()\par
\{\par
   \cf1 if\cf0  (\cf4 OutBufPtr\cf0  \cf2 >\cf0  \cf2 &\cf0 \cf4 OutBuf\cf0 [\cf4 FlushPos\cf0 ]) \{\par
      \cf4 fwrite\cf0 (\cf4 OutBuf\cf0 , \cf3 1\cf0 , \cf4 OutBufPtr\cf0  \cf2 -\cf0  \cf2 &\cf0 \cf4 OutBuf\cf0 [\cf3 0\cf0 ], \cf4 OutFile\cf0 );\par
      \cf4 OutBufPtr\cf0  \cf2 =\cf0  \cf2 &\cf0 \cf4 OutBuf\cf0 [\cf3 0\cf0 ];\par
   \}\par
\par
#\cf9 ifdef\cf0  \cf9 EMIT_CR\cf0 \par
   \cf2 *\cf0 \cf4 OutBufPtr\cf0 \cf2 ++\cf0  \cf2 =\cf0  \cf3 '\\r'\cf0 ;\par
#\cf9 endif\cf0 \par
   \cf2 *\cf0 \cf4 OutBufPtr\cf0 \cf2 ++\cf0  \cf2 =\cf0  \cf3 '\\n'\cf0 ;\par
   \cf4 OutputLineCount\cf0 \cf2 ++\cf0 ;\par
\}\par
\par
\cf6 /*\cf0 \cf6 --------------------------------------------------------------------\cf0 \cf6 */\cf0 \par
\cf4 Nlmod\cf0  ()\par
\{\par
   \cf1 if\cf0  (\cf4 OutBufPtr\cf0  \cf2 >\cf0  \cf2 &\cf0 \cf4 OutBuf\cf0 [\cf4 FlushPos\cf0 ]) \{\par
      \cf4 fwrite\cf0 (\cf4 OutBuf\cf0 , \cf3 1\cf0 , \cf4 OutBufPtr\cf0  \cf2 -\cf0  \cf2 &\cf0 \cf4 OutBuf\cf0 [\cf3 0\cf0 ], \cf4 OutFile\cf0 );\par
      \cf4 OutBufPtr\cf0  \cf2 =\cf0  \cf2 &\cf0 \cf4 OutBuf\cf0 [\cf3 0\cf0 ];\par
   \}\par
\par
\cf1 if\cf0  (\cf4 OutputLineCountCo3\cf0 \cf2 %\cf0 \cf3 3\cf0 \cf2 ==\cf0 \cf3 2\cf0 ) \{\par
#\cf9 ifdef\cf0  \cf9 EMIT_CR\cf0 \par
   \cf2 *\cf0 \cf4 OutBufPtr\cf0 \cf2 ++\cf0  \cf2 =\cf0  \cf3 '\\r'\cf0 ;\par
#\cf9 endif\cf0 \par
   \cf2 *\cf0 \cf4 OutBufPtr\cf0 \cf2 ++\cf0  \cf2 =\cf0  \cf3 '\\n'\cf0 ;\par
   \cf4 OutputLineCount\cf0 \cf2 ++\cf0 ;\par
   \cf4 OutputLineCountCo3\cf0 \cf2 =\cf0 \cf3 0\cf0 ;\}\par
\cf1 else\cf0 \par
  \cf4 OutputLineCountCo3\cf0 \cf2 ++\cf0 ;\par
\par
\}\par
\par
\cf6 /*\cf0 \cf6 --------------------------------------------------------------------\cf0 \cf6 */\cf0 \par
\par
\cf4 GetOutputLineCount\cf0 (\cf4 ref_n\cf0 )\par
   \cf1 int\cf0  \cf2 *\cf0  \cf4 ref_n\cf0 ;\par
\{\par
   \cf2 *\cf0 \cf4 ref_n\cf0  \cf2 =\cf0  \cf4 OutputLineCount\cf0 ;\par
\}\par
\par
\cf6 /*\cf0 \cf6 --------------------------------------------------------------------\cf0 \cf6 */\cf0 \par
}


[ Seitenstruktur0.122Drucken  ]