|
|
Quellcode-Bibliothek
© Kompilation durch diese Firma
[Weder Korrektheit noch Funktionsfähigkeit der Software werden zugesichert.]
Datei:
jatan2.pvs
Sprache: PVS
Haftungsausschluß.rtf KontaktCS {CS[243] C[317] Ada[586]}diese Dinge liegen außhalb unserer Verantwortung {\rtf1\ansi\ansicpg850\deff0{\fonttbl{\f0\fnil Courier New;}}
{\colortbl ;\red0\green128\blue0;\red255\green0\blue255;\red0\green0\blue255;\red0\green0\blue0;\red255\green0\blue0;\red0\green0\blue128;}
\viewkind4\uc1\pard\cf1\lang1031\f0\fs18 //------------------------------------------------------------------------------\cf0\par
\cf1 //\cf0\par
\cf1 // modifications by CO3\cf0\par
\cf1 //\cf0\par
\cf1 //------------------------------------------------------------------------------\cf0\par
\cf1 // Einbau von Nlmod() wegen der Zeilenzahl\cf0\par
\cf1 //\cf0\par
\cf1 /*\cf0\par
\cf1 * ACCENT \cf0\par
\cf1 * \cf0\par
\cf1 * A Compiler Compiler for the Entire Class of Context-Free Languages\cf0\par
\cf1 * \cf0\par
\cf1 * Copyright (C) 1999 Friedrich Wilhelm Schroeer\cf0\par
\cf1 * \cf0\par
\cf1 * This program is free software; you can redistribute it and/or modify\cf0\par
\cf1 * it under the terms of the GNU General Public License as published by\cf0\par
\cf1 * the Free Software Foundation; either version 2 of the License, or\cf0\par
\cf1 * (at your option) any later version.\cf0\par
\cf1 * \cf0\par
\cf1 * This program is distributed in the hope that it will be useful,\cf0\par
\cf1 * but WITHOUT ANY WARRANTY; without even the implied warranty of\cf0\par
\cf1 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\cf0\par
\cf1 * GNU General Public License for more details.\cf0\par
\cf1 * \cf0\par
\cf1 * You should have received a copy of the GNU General Public License\cf0\par
\cf1 * along with this program; if not, write to the Free Software\cf0\par
\cf1 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\cf0\par
\cf1 */
\par
\par
#\cf2 define\cf0 \cf2 PRIVATE\cf0 \cf2 static\cf0\par
\par
#\cf2 include\cf0 \cf3 <stdio.h>\cf0\par
\par
\cf1 /*--------------------------------------------------------------------*/\cf0\par
\par
#\cf2 define\cf0 \cf2 OutBufSize\cf0 \cf2 6000\cf0\par
#\cf2 define\cf0 \cf2 FlushPos\cf0 \cf2 5000\cf0\par
\par
\cf1 /*--------------------------------------------------------------------*/\cf0\par
\par
\cf4 PRIVATE\cf0 \cf5 long\cf0 \cf4 OutputLineCount\cf0 \cf3 =\cf0 \cf6 0\cf0 ;\par
\cf4 PRIVATE\cf0 \cf5 long\cf0 \cf4 OutputLineCountCo3\cf0 \cf3 =\cf0 \cf6 0\cf0 ; \cf1 // CO3\cf0\par
\par
\cf4 PRIVATE\cf0 \cf5 char\cf0 \cf4 OutBuf\cf0 [\cf4 OutBufSize\cf0 ];\par
\cf4 PRIVATE\cf0 \cf5 char\cf0 \cf3 *\cf4 OutBufPtr\cf0 ;\par
\cf4 PRIVATE\cf0 \cf4 FILE\cf0 \cf3 *\cf4 OutFile\cf0 ;\par
\par
\cf1 /*--------------------------------------------------------------------*/\cf0\par
\par
\cf4 OpenOutput\cf0 (\cf4 Name\cf0 )\par
\cf5 char\cf0 \cf3 *\cf4 Name\cf0 ;\par
\{\par
\cf4 OutFile\cf0 \cf3 =\cf0 \cf4 fopen\cf0 (\cf4 Name\cf0 , \cf3 "w"\cf0 );\par
\par
\cf5 if\cf0 (\cf4 OutFile\cf0 \cf3 ==\cf0 \cf4 NULL\cf0 ) \{\par
\cf4 printf\cf0 (\cf3 "cannot open %s\\n"\cf0 , \cf4 Name\cf0 ); \cf5 exit\cf0 (\cf6 1\cf0 );\par
\}\par
\cf4 OutBufPtr\cf0 \cf3 =\cf0 \cf3 &\cf4 OutBuf\cf0 [\cf6 0\cf0 ];\par
\cf4 OutputLineCount\cf0 \cf3 =\cf0 \cf6 0\cf0 ;\par
\cf5 return\cf0 \cf6 1\cf0 ;\par
\}\par
\par
\cf1 /*--------------------------------------------------------------------*/\cf0\par
\cf4 CloseOutput\cf0 ()\par
\{\par
\cf4 fwrite\cf0 (\cf4 OutBuf\cf0 , \cf6 1\cf0 , \cf4 OutBufPtr\cf0 \cf3 -\cf0 \cf3 &\cf4 OutBuf\cf0 [\cf6 0\cf0 ], \cf4 OutFile\cf0 );\par
\cf4 fclose\cf0 (\cf4 OutFile\cf0 );\par
\}\par
\par
\cf1 /*--------------------------------------------------------------------*/\cf0\par
\cf4 Put\cf0 (\cf4 Str\cf0 )\par
\cf5 char\cf0 \cf3 *\cf4 Str\cf0 ;\par
\{\par
\cf5 while\cf0 (\cf3 *\cf4 Str\cf0 ) \cf3 *\cf4 OutBufPtr\cf3 ++\cf0 \cf3 =\cf0 \cf3 *\cf4 Str\cf3 ++\cf0 ; \par
\}\par
\par
\cf1 //----------------------------------------------------------------------\cf0\par
\cf1 // CO3 nderung prototype yygrammp.h\cf0\par
\cf4 FILE\cf0 \cf3 *\cf4 co3proto\cf3 =\cf6 0\cf0 ;\par
\cf4 Putco3\cf0 (\cf5 char\cf0 \cf3 *\cf4 Str\cf0 ) \{\par
\cf5 if\cf0 (\cf3 !\cf4 co3proto\cf0 ) \{\par
\cf4 co3proto\cf3 =\cf4 fopen\cf0 (\cf3 "yygrammp.h"\cf0 ,\cf3 "w"\cf0 );\par
\cf4 fprintf\cf0 (\cf4 co3proto\cf0 ,\cf3 "%s\\n"\cf0 ,\cf3 "void init_lexelem(void);"\cf0 );\par
\cf4 fprintf\cf0 (\cf4 co3proto\cf0 ,\cf3 "%s\\n"\cf0 ,\cf3 "void first_lexval(void);"\cf0 );\par
\cf4 fprintf\cf0 (\cf4 co3proto\cf0 ,\cf3 "%s\\n"\cf0 ,\cf3 "void next_lexval(void);"\cf0 );\par
\cf4 fprintf\cf0 (\cf4 co3proto\cf0 ,\cf3 "%s\\n"\cf0 ,\cf3 "void get_lexval(void);"\cf0 );\par
\cf4 fprintf\cf0 (\cf4 co3proto\cf0 ,\cf3 "%s\\n"\cf0 ,\cf3 "void init_dirsets(void);"\cf0 );\par
\cf4 fprintf\cf0 (\cf4 co3proto\cf0 ,\cf3 "%s\\n"\cf0 ,\cf3 "int yyselect(void);"\cf0 );\par
\cf4 fprintf\cf0 (\cf4 co3proto\cf0 ,\cf3 "%s\\n"\cf0 ,\cf3 "int yytransparent(int);"\cf0 );\par
\cf4 fprintf\cf0 (\cf4 co3proto\cf0 ,\cf3 "%s\\n"\cf0 ,\cf3 "int yymallocerror(void);"\cf0 );\par
\}\par
\cf4 fprintf\cf0 (\cf4 co3proto\cf0 ,\cf3 "%s"\cf0 ,\cf4 Str\cf0 );\par
\cf4 Put\cf0 (\cf4 Str\cf0 ); \par
\cf5 return\cf0 ;\}\par
\cf4 Nlco3\cf0 () \{\cf4 fprintf\cf0 (\cf4 co3proto\cf0 ,\cf3 ";\\n"\cf0 );\}\par
\cf1 // Ende CO3-nderung\cf0\par
\cf1 //----------------------------------------------------------------------\cf0\par
\par
\cf1 /*--------------------------------------------------------------------*/\cf0\par
\cf4 PutBlockText\cf0 (\cf4 Str\cf0 )\par
\cf5 char\cf0 \cf3 *\cf4 Str\cf0 ;\par
\{\par
\cf5 while\cf0 (\cf3 *\cf4 Str\cf0 ) \{\par
\cf5 if\cf0 (\cf3 *\cf4 Str\cf0 \cf3 ==\cf0 \cf6 '\\n'\cf0 ) \{\par
\cf4 Nl\cf0 ();\par
\cf4 Str\cf3 ++\cf0 ;\par
\}\par
\cf5 else\cf0\par
\cf3 *\cf4 OutBufPtr\cf3 ++\cf0 \cf3 =\cf0 \cf3 *\cf4 Str\cf3 ++\cf0 ; \par
\}\par
\}\par
\par
\cf1 /*--------------------------------------------------------------------*/\cf0\par
\cf4 PutI\cf0 (\cf4 N\cf0 )\par
\cf5 long\cf0 \cf4 N\cf0 ;\par
\{\par
\cf5 if\cf0 (\cf4 N\cf0 \cf3 <\cf0 \cf6 0\cf0 ) \{\par
\cf3 *\cf4 OutBufPtr\cf3 ++\cf0 \cf3 =\cf0 \cf6 '-'\cf0 ;\par
\cf4 N\cf0 \cf3 =\cf0 \cf3 -\cf4 N\cf0 ;\par
\}\par
\cf5 if\cf0 (\cf4 N\cf0 \cf3 <\cf0 \cf6 10\cf0 ) \{\par
\cf3 *\cf4 OutBufPtr\cf3 ++\cf0 \cf3 =\cf0 \cf4 N\cf0 \cf3 +\cf0 \cf6 '0'\cf0 ;\par
\}\par
\cf5 else\cf0 \cf5 if\cf0 (\cf4 N\cf0 \cf3 <\cf0 \cf6 100\cf0 ) \{\par
\cf3 *\cf4 OutBufPtr\cf3 ++\cf0 \cf3 =\cf0 \cf4 N\cf3 /\cf6 10\cf0 \cf3 +\cf0 \cf6 '0'\cf0 ;\par
\cf3 *\cf4 OutBufPtr\cf3 ++\cf0 \cf3 =\cf0 \cf4 N\cf3 %\cf6 10\cf0 \cf3 +\cf0 \cf6 '0'\cf0 ;\par
\}\par
\cf5 else\cf0 \{\par
\cf5 char\cf0 \cf4 buf\cf0 [\cf6 50\cf0 ];\par
\cf5 register\cf0 \cf4 i\cf0 ;\par
\cf5 register\cf0 \cf4 n\cf0 \cf3 =\cf0 \cf4 N\cf0 ;\par
\par
\cf4 i\cf0 \cf3 =\cf0 \cf6 0\cf0 ;\par
\par
\cf5 do\cf0 \{\par
\cf4 buf\cf0 [\cf3 ++\cf4 i\cf0 ] \cf3 =\cf0 (\cf4 n\cf0 \cf3 %\cf0 \cf6 10\cf0 ) \cf3 +\cf0 \cf6 '0'\cf0 ;\par
\cf4 n\cf0 \cf3 =\cf0 \cf4 n\cf0 \cf3 /\cf0 \cf6 10\cf0 ;\par
\} \cf5 while\cf0 (\cf4 n\cf0 );\par
\par
\cf5 while\cf0 (\cf4 i\cf0 )\par
\cf3 *\cf4 OutBufPtr\cf3 ++\cf0 \cf3 =\cf0 \cf4 buf\cf0 [\cf4 i\cf3 --\cf0 ];\par
\}\par
\}\par
\par
\cf1 /*--------------------------------------------------------------------*/\cf0\par
\cf4 Nl\cf0 ()\par
\{\par
\cf5 if\cf0 (\cf4 OutBufPtr\cf0 \cf3 >\cf0 \cf3 &\cf4 OutBuf\cf0 [\cf4 FlushPos\cf0 ]) \{\par
\cf4 fwrite\cf0 (\cf4 OutBuf\cf0 , \cf6 1\cf0 , \cf4 OutBufPtr\cf0 \cf3 -\cf0 \cf3 &\cf4 OutBuf\cf0 [\cf6 0\cf0 ], \cf4 OutFile\cf0 );\par
\cf4 OutBufPtr\cf0 \cf3 =\cf0 \cf3 &\cf4 OutBuf\cf0 [\cf6 0\cf0 ];\par
\}\par
\par
#\cf2 ifdef\cf0 \cf2 EMIT_CR\cf0\par
\cf3 *\cf4 OutBufPtr\cf3 ++\cf0 \cf3 =\cf0 \cf6 '\\r'\cf0 ;\par
#\cf2 endif\cf0\par
\cf3 *\cf4 OutBufPtr\cf3 ++\cf0 \cf3 =\cf0 \cf6 '\\n'\cf0 ;\par
\cf4 OutputLineCount\cf3 ++\cf0 ;\par
\}\par
\par
\cf1 /*--------------------------------------------------------------------*/\cf0\par
\cf4 Nlmod\cf0 ()\par
\{\par
\cf5 if\cf0 (\cf4 OutBufPtr\cf0 \cf3 >\cf0 \cf3 &\cf4 OutBuf\cf0 [\cf4 FlushPos\cf0 ]) \{\par
\cf4 fwrite\cf0 (\cf4 OutBuf\cf0 , \cf6 1\cf0 , \cf4 OutBufPtr\cf0 \cf3 -\cf0 \cf3 &\cf4 OutBuf\cf0 [\cf6 0\cf0 ], \cf4 OutFile\cf0 );\par
\cf4 OutBufPtr\cf0 \cf3 =\cf0 \cf3 &\cf4 OutBuf\cf0 [\cf6 0\cf0 ];\par
\}\par
\par
\cf5 if\cf0 (\cf4 OutputLineCountCo3\cf3 %\cf6 3\cf3 ==\cf6 2\cf0 ) \{\par
#\cf2 ifdef\cf0 \cf2 EMIT_CR\cf0\par
\cf3 *\cf4 OutBufPtr\cf3 ++\cf0 \cf3 =\cf0 \cf6 '\\r'\cf0 ;\par
#\cf2 endif\cf0\par
\cf3 *\cf4 OutBufPtr\cf3 ++\cf0 \cf3 =\cf0 \cf6 '\\n'\cf0 ;\par
\cf4 OutputLineCount\cf3 ++\cf0 ;\par
\cf4 OutputLineCountCo3\cf3 =\cf6 0\cf0 ;\}\par
\cf5 else\cf0\par
\cf4 OutputLineCountCo3\cf3 ++\cf0 ;\par
\par
\}\par
\par
\cf1 /*--------------------------------------------------------------------*/\cf0\par
\par
\cf4 GetOutputLineCount\cf0 (\cf4 ref_n\cf0 )\par
\cf5 int\cf0 \cf3 *\cf0 \cf4 ref_n\cf0 ;\par
\{\par
\cf3 *\cf4 ref_n\cf0 \cf3 =\cf0 \cf4 OutputLineCount\cf0 ;\par
\}\par
\par
\cf1 /*--------------------------------------------------------------------*/\cf0\par
}
[ Seitenstruktur0.126Drucken
]
|
|
|
|
|