bump product version to 4.1.6.2
[LibreOffice.git] / l10ntools / source / xrmlex.l
blob73e3babedfbb8d262fb54e38c0662a4460eaa33e
1 %{
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  *   Licensed to the Apache Software Foundation (ASF) under one or more
12  *   contributor license agreements. See the NOTICE file distributed
13  *   with this work for additional information regarding copyright
14  *   ownership. The ASF licenses this file to you under the Apache
15  *   License, Version 2.0 (the "License"); you may not use this file
16  *   except in compliance with the License. You may obtain a copy of
17  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
21  * lexer for parsing xml-property source files (*.xml)
22  */
24 #include "sal/config.h"
26 /* enlarge token buffer to tokenize whole strings */
27 #undef YYLMAX
28 #define YYLMAX 64000
30 /* to enable debug output define LEXDEBUG */
31 #define LEXDEBUG                1
32 #ifdef LEXDEBUG
33 #define OUTPUT  fprintf
34 #else
35 #define OUTPUT(Par1,Par2);
36 #endif
38 /* table of possible token ids */
39 #include "tokens.h"
40 #include <stdlib.h>
41 #include <stdio.h>
43 #include "sal/main.h"
45 #if HAVE_GCC_PRAGMA_DIAGNOSTIC_MODIFY
46 #pragma GCC diagnostic ignored "-Wunused-function"
47 #pragma GCC diagnostic ignored "-Wunused-label"
48 #if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
49 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
50 #endif
51 #elif defined __SUNPRO_CC
52 #pragma disable_warn
53 #elif defined _MSC_VER
54 #pragma warning(push, 1)
55 #endif
56 #define YY_NO_UNISTD_H
58 /* external functions (C++ code, declared as extern "C" */
59 extern "C" int WorkOnTokenSet( int, char* );
60 extern "C" int Argument( char * );
61 extern "C" int InitXrmExport( char * , char * );
62 extern "C" int EndXrmExport();
63 extern "C" int GetError();
64 extern "C" int SetError();
65 extern "C" char *GetOutputFile( int argc, char* argv[]);
66 extern "C" FILE *GetXrmFile();
67 extern "C" int isQuiet();
68 extern "C" char* getFilename();
70 /* forwards */
71 void YYWarning();
73 int bText=0;
76 %option yylineno
77 %option never-interactive
79 %p 24000
80 %e 1200
81 %n 500
85 "<p "[^\>]*xml:lang[^\>]*\> {
86         WorkOnTokenSet( XRM_TEXT_START , yytext );
89 "</p>" {
90         WorkOnTokenSet( XRM_TEXT_END, yytext );
93 "<h1 "[^\>]*xml:lang[^\>]*\> {
94         WorkOnTokenSet( XRM_TEXT_START , yytext );
97 "</h1>" {
98         WorkOnTokenSet( XRM_TEXT_END, yytext );
100 "<h2 "[^\>]*xml:lang[^\>]*\> {
101         WorkOnTokenSet( XRM_TEXT_START , yytext );
104 "</h2>" {
105         WorkOnTokenSet( XRM_TEXT_END, yytext );
107 "<h3 "[^\>]*xml:lang[^\>]*\> {
108         WorkOnTokenSet( XRM_TEXT_START , yytext );
111 "</h3>" {
112         WorkOnTokenSet( XRM_TEXT_END, yytext );
114 "<h4 "[^\>]*xml:lang[^\>]*\> {
115         WorkOnTokenSet( XRM_TEXT_START , yytext );
118 "</h4>" {
119         WorkOnTokenSet( XRM_TEXT_END, yytext );
121 "<h5 "[^\>]*xml:lang[^\>]*\> {
122         WorkOnTokenSet( XRM_TEXT_START , yytext );
125 "</h5>" {
126         WorkOnTokenSet( XRM_TEXT_END, yytext );
129 "<display-name>" {
130         WorkOnTokenSet( DESC_DISPLAY_NAME_START , yytext );
133 "</display-name>" {
134         WorkOnTokenSet( DESC_DISPLAY_NAME_END, yytext );
137 "<name "[^\>]*lang[^\>]*\> {
138         WorkOnTokenSet( DESC_TEXT_START , yytext );
141 "</name>" {
142         WorkOnTokenSet( DESC_TEXT_END, yytext );
145 "<extension-description>" {
146         WorkOnTokenSet( DESC_EXTENSION_DESCRIPTION_START , yytext );
149 "</extension-description>" {
150         WorkOnTokenSet( DESC_EXTENSION_DESCRIPTION_END , yytext );
153 "<src "[^\>]*lang[^\>]*\> {
154         WorkOnTokenSet( DESC_EXTENSION_DESCRIPTION_SRC , yytext );
159 "<!--"  {
160         char c1 = 0, c2 = 0;
161         int c3 = yyinput();
162         char pChar[2];
163         pChar[1] = 0x00;
164         pChar[0] = c3;
166         WorkOnTokenSet( COMMENT, yytext );
167         WorkOnTokenSet( COMMENT, pChar );
169         for(;;) {
170                 if ( c3 == EOF )
171                         break;
172                 if ( c1 == '-' && c2 == '-' && c3 == '>' )
173                         break;
174                 c1 = c2;
175                 c2 = c3;
176                 c3 = yyinput();
177                 pChar[0] = c3;
178                 WorkOnTokenSet( COMMENT, pChar );
179         }
182 .|\n {
183         if ( bText == 1 )
184                 WorkOnTokenSet( XML_TEXTCHAR, yytext );
185         else
186                 WorkOnTokenSet( UNKNOWNCHAR, yytext );
192 /*****************************************************************************/
193 int     yywrap(void)
194 /*****************************************************************************/
196         return 1;
199 /*****************************************************************************/
200 void YYWarning( const char *s )
201 /*****************************************************************************/
203         /* write warning to stderr */
204         fprintf( stderr,
205                 "Warning: \"%s\" in line %d: \"%s\"\n", s, yylineno, yytext  );
208 /*****************************************************************************/
209 void yyerror ( const char *s )
210 /*****************************************************************************/
212         /* write error to stderr */
213         fprintf( stderr,
214                 "Error: \"%s\" in line %d: \"%s\"\n", s, yylineno, yytext  );
215         SetError();
218 SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv) {
219         /* error level */
220         int nRetValue = 0;
221         char *pOutput;
222         FILE *pFile;
224         pOutput = GetOutputFile( argc, argv );
226         if ( !pOutput )
227         {
228                 return 1;
229         }
230         pFile = GetXrmFile();
231         InitXrmExport( pOutput , getFilename() );
233     if ( !pFile )
234                 return 1;
236         yyin = pFile;
238         /* create global instance of class XmlExport */
239         //InitXrmExport( pOutput );
241         /* start parser */
242         yylex();
244         /* get error info. and end export */
245         nRetValue = GetError();
246         EndXrmExport();
248         /* return error level */
249         return nRetValue;