merge the formfield patch from ooo-build
[ooovba.git] / transex3 / source / xrmlex.l
blobefc8bf1f7d911e2b84214d1a18cdb0450c727fb1
1 %{
2 /*
3  * lexer for parsing xml-property source files (*.xml)
4  *
5  */
8 /* enlarge token buffer to tokenize whole strings */
9 #undef YYLMAX
10 #define YYLMAX 64000
12 /* to enable debug output define LEXDEBUG */
13 #define LEXDEBUG                1
14 #ifdef LEXDEBUG
15 #define OUTPUT  fprintf
16 #else
17 #define OUTPUT(Par1,Par2);
18 #endif
20 /* table of possible token ids */
21 #include "tokens.h"                          
22 #include <stdlib.h>
23 #include <stdio.h>
25 #if defined __GNUC__
26 #pragma GCC system_header
27 #elif defined __SINPRO_CC
28 #pragma disable_warn
29 #elif defined _MSC_VER
30 #pragma warning(push, 1)
31 #endif
33 /* external functions (C++ code, declared as extren "C" */
34 extern int WorkOnTokenSet( int, char* );
35 extern int Argument( char * );
36 extern int InitXrmExport( char * , char * );
37 extern int EndXrmExport();
38 extern int GetError();
39 extern int SetError();
40 extern char *GetOutputFile( int argc, char* argv[]);
41 extern FILE *GetXrmFile();
42 extern int isQuiet();
43 extern void removeTempFile();
44 extern char* getFilename();
46 /* forwards */
47 void YYWarning();
49 int bText=0;
52 %p 24000
53 %e 1200
54 %n 500
58 "<Readme"[^\>]*\> {
59         WorkOnTokenSet( XRM_README_START, yytext );
62 "</Readme>" {
63         WorkOnTokenSet( XRM_README_END, yytext );
66 "<apochelp"[^\>]*\> {
67         WorkOnTokenSet( XRM_README_START, yytext );
70 "</apochelp>" {
71         WorkOnTokenSet( XRM_README_END, yytext );
74 "<Section"[^\>]*\> {
75         WorkOnTokenSet( XRM_SECTION_START, yytext );
78 "</Section>" {
79         WorkOnTokenSet( XRM_SECTION_END, yytext );
82 "<Paragraph"[^\>]*\> {
83         WorkOnTokenSet( XRM_PARAGRAPH_START, yytext );
86 "</Paragraph>" {
87         WorkOnTokenSet( XRM_PARAGRAPH_END, yytext );
90 "<Text"[^\>]*\> {
91         WorkOnTokenSet( XRM_TEXT_START, yytext );
94 "</Text>" {
95         WorkOnTokenSet( XRM_TEXT_END, yytext );
98 "<List"[^\>]*\> {
99         WorkOnTokenSet( XRM_LIST_START, yytext );
102 "</List>" {
103         WorkOnTokenSet( XRM_LIST_END, yytext );
106 "<!--"  {
107         char c1 = 0, c2 = 0, c3 = input();
108         char pChar[2];
109         pChar[1] = 0x00;
110         pChar[0] = c3;
112         WorkOnTokenSet( COMMEND, yytext );
113         WorkOnTokenSet( COMMEND, pChar );
115         for(;;) {
116                 if ( c3 == EOF )
117                         break;
118                 if ( c1 == '-' && c2 == '-' && c3 == '>' )
119                         break;
120                 c1 = c2;
121                 c2 = c3;
122                 c3 = input();
123                 pChar[0] = c3;
124                 WorkOnTokenSet( COMMEND, pChar );                          
125         }
128 .|\n {
129         if ( bText == 1 )
130                 WorkOnTokenSet( XML_TEXTCHAR, yytext );
131         else
132                 WorkOnTokenSet( UNKNOWNCHAR, yytext );
138 /*****************************************************************************/
139 int     yywrap(void)
140 /*****************************************************************************/
142         return 1;
145 /*****************************************************************************/
146 void YYWarning( char *s )
147 /*****************************************************************************/
149         /* write warning to stderr */
150         fprintf( stderr,
151                 "Warning: \"%s\" in line %d: \"%s\"\n", s, yylineno, yytext  );
154 /*****************************************************************************/
155 #ifdef GCC
156 void yyerror ( char *s, ... )
157 #else
158 void yyerror ( char *s )
159 #endif
160 /*****************************************************************************/
162         /* write error to stderr */
163         fprintf( stderr,
164                 "Error: \"%s\" in line %d: \"%s\"\n", s, yylineno, yytext  );
165         SetError();
168 /*****************************************************************************/
170 #ifdef WNT
171 _cdecl
172 #endif
173 main( int argc, char* argv[])
174 /*****************************************************************************/
176         /* error level */
177         int nRetValue = 0;
178         char *pOutput;
179         FILE *pFile;
181         pOutput = GetOutputFile( argc, argv );
182     if( !isQuiet() ){
183         fprintf( stdout, "\nXrmEx 0.9 Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.\n" );
184             fprintf( stdout, "======================================================================\n" );
185     }
187         if ( !pOutput ) {
188                 fprintf( stdout, "Syntax: XRMEX[-p Prj][-r PrjRoot]-i FileIn [-o FileOut][-m DataBase][-e][-b][-u][-NOUTF8][-L l1,l2,...]\n" );
189                 fprintf( stdout, " Prj:      Project\n" );
190                 fprintf( stdout, " PrjRoot:  Path to project root (..\\.. etc.)\n" );
191                 fprintf( stdout, " FileIn:   Source files (*.src)\n" );
192                 fprintf( stdout, " FileOut:  Destination file (*.*)\n" );
193                 fprintf( stdout, " DataBase: Mergedata (*.sdf)\n" );
194                 fprintf( stdout, " -e: Disable writing errorlog\n" );
195                 fprintf( stdout, " -b: Break when Token \"HelpText\" found in source\n" );
196                 fprintf( stdout, " -u: [english] and [german] are allowed, Id is Taken from DataBase \n" );
197                 fprintf( stdout, " -NOUTF8: disable UTF8 as language independent encoding\n" );
198                 fprintf( stdout, " -L: Restrict the handled languages. l1,l2,... are elements of (de,en-US,es...)\n" );
199                 fprintf( stdout, "     A fallback language can be defined like this: l1=f1.\n" );
200                 fprintf( stdout, "     f1, f2,... are also elements of (de,en-US,es...)\n" );
201                 fprintf( stdout, "     Example: -L en-US,es=de\n" );
202                 fprintf( stdout, "              Restriction to es and en-US, de will be fallback for 99\n" );
203 //              fprintf( stdout, " -ISO99: IsoCode is the full qualified ISO language code for language 99" );
204                 return 1;
205         }
206         pFile = GetXrmFile();
207         InitXrmExport( pOutput , getFilename() );
209     if ( !pFile )
210                 return 1;
212         yyin = pFile;
214         /* create global instance of class XmlExport */
215         //InitXrmExport( pOutput );
217         /* start parser */
218         yylex();
220         /* get error info. and end export */
221         nRetValue = GetError();
222         EndXrmExport();
224         if( !isQuiet() ) fprintf( stdout, "\n===================================\n\n" );
225     removeTempFile();
226         /* return error level */
227         return nRetValue;