LCOV - code coverage report
Current view: top level - l10ntools/source - srclex.l (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 0 102 0.0 %
Date: 2012-08-25 Functions: 0 5 0.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : 
       2                 :            : %{
       3                 :            : /*
       4                 :            :  * lexer for parsing resource source files (*.src)
       5                 :            :  *
       6                 :            :  */
       7                 :            : 
       8                 :            : /* enlarge token buffer to tokenize whole strings */
       9                 :            : #undef YYLMAX
      10                 :            : #define YYLMAX 64000
      11                 :            : 
      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
      19                 :            : 
      20                 :            : /* table of possible token ids */
      21                 :            : #include "tokens.h"
      22                 :            : #include <stdlib.h>
      23                 :            : #include <stdio.h>
      24                 :            : 
      25                 :            : #include "sal/main.h"
      26                 :            : 
      27                 :            : #if defined __GNUC__
      28                 :            : #if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
      29                 :            : #pragma GCC diagnostic ignored "-Wunused-function"
      30                 :            : #pragma GCC diagnostic ignored "-Wunused-label"
      31                 :            : #endif
      32                 :            : #if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
      33                 :            : #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
      34                 :            : #endif
      35                 :            : #elif defined __SINPRO_CC
      36                 :            : #pragma disable_warn
      37                 :            : #elif defined _MSC_VER
      38                 :            : #pragma warning(push, 1)
      39                 :            : #endif
      40                 :            : 
      41                 :            : /* external functions (C++ code, declared as extern "C" */
      42                 :            : extern "C" int WorkOnTokenSet( int, char* );
      43                 :            : extern "C" FILE * init(int, char **);
      44                 :            : extern "C" int SetError();
      45                 :            : extern "C" int GetError();
      46                 :            : extern "C" void Close();
      47                 :            : 
      48                 :            : /* forwards */
      49                 :            : void YYWarning();
      50                 :            : %}
      51                 :            : 
      52                 :            : %option yylineno
      53                 :            : %option never-interactive
      54                 :            : 
      55                 :            : %p 24000
      56                 :            : %e 1200
      57                 :            : %n 500
      58                 :            : 
      59                 :            : %%
      60                 :            : 
      61                 :            : ^[\t ]*"#pragma".*    {
      62                 :          0 :         WorkOnTokenSet( PRAGMA, yytext );
      63                 :            : }
      64                 :          0 : 
      65                 :            : ^[ \t]*\n {
      66                 :          0 :         WorkOnTokenSet( EMPTYLINE, yytext );
      67                 :          0 : }
      68                 :          0 : 
      69                 :            : [\t ]+                          |
      70                 :            : ^[\t ]*"#include".*   |
      71                 :            : ^[\t ]*"#undef".*     |
      72                 :            : "//".*                                |
      73                 :            : ";"                           |
      74                 :            : "<"                                        |
      75                 :            : ">"                                        |
      76                 :            : \n      {
      77                 :          0 :         WorkOnTokenSet( IGNOREDTOKENS, yytext );
      78                 :          0 : }
      79                 :          0 : "/*"  {
      80                 :          0 :         char c1 = 0,c2 = yyinput();
      81                 :          0 :         char pChar[2];
      82                 :          0 :         pChar[1] = 0x00;
      83                 :          0 :         pChar[0] = c2;
      84                 :            : 
      85                 :          0 :         WorkOnTokenSet( COMMEND, yytext );
      86                 :          0 :         WorkOnTokenSet( COMMEND, pChar );
      87                 :          0 :         for(;;) {
      88                 :          0 :                 if ( c2 == EOF )
      89                 :          0 :                         break;
      90                 :          0 :                 if ( c1 == '*' && c2 == '/' )
      91                 :          0 :                         break;
      92                 :          0 :                 c1 = c2;
      93                 :          0 :                 c2 = yyinput();
      94                 :          0 :                 pChar[0] = c2;
      95                 :          0 :                 WorkOnTokenSet( COMMEND, pChar );
      96                 :            :         }
      97                 :            : }
      98                 :          0 : 
      99                 :            : ^[\t ]*"#ifndef".+$   |
     100                 :          0 : ^[\t ]*"#ifdef".+$    |
     101                 :          0 : ^[\t ]*"#if".+$               |
     102                 :          0 : ^[\t ]*"#elif".*$     |
     103                 :          0 : ^[\t ]*"#else".*$     |
     104                 :            : ^[\t ]*"#endif".*$    {
     105                 :          0 :         WorkOnTokenSet( CONDITION, yytext );
     106                 :            : }
     107                 :          0 : 
     108                 :            : [a-zA-Z]+[\t ]+[^={\n]+[\t ] {
     109                 :          0 : /* defined Res */
     110                 :          0 :         WorkOnTokenSet( DEFINEDRES, yytext );
     111                 :            : }
     112                 :          0 : 
     113                 :            : [a-zA-Z]+[ \t]+[^={;\n]+\n[ \t]*"#".*\n[ \t]*"{"    |
     114                 :            : [a-zA-Z]+[ \t]+[^={;\n]+\n?([ \t]*"//".*\n)*[ \t]*"{"       {
     115                 :            : /* RESOURCE // String TTT_XX ... */
     116                 :          0 :         WorkOnTokenSet( RESOURCE, yytext );
     117                 :            : }
     118                 :          0 : 
     119                 :            : ^[\t ]*[a-zA-Z_]+[\t ]*"\\"?[\t ]*\n?[ \t]*"{"[\t ]*"\\"? {
     120                 :            : /* SMALRESOURCE // String ... */
     121                 :          0 :         WorkOnTokenSet( SMALRESOURCE, yytext );
     122                 :            : }
     123                 :          0 : 
     124                 :            : [\t ]*[a-zA-Z0-9_]+[ \t]*("["[ \t]*[a-zA-Z0-9_\-]+[ \t]*"]"[ \t]*)?=[ \t]*L?\".*\".*\n?   {
     125                 :            : /* TEXTLINE // TextTyp = "A Text" */
     126                 :          0 :         WorkOnTokenSet( TEXTLINE, yytext );
     127                 :            : }
     128                 :          0 : 
     129                 :            : [\t ]*[a-zA-Z0-9_]+[ \t]*("["[ \t]*[a-zA-Z0-9_\-]+[ \t]*"]"[ \t]*)?(\n[ \t]*)?=([ \t]*\n)?(([a-zA-Z0-9_]+)|(\".*\")|([ \t\n]*))*\".*\"(([a-zA-Z0-9_]+)|(\".*\")|([ \t\n]*))*; {
     130                 :            : /* LONGTEXTLINE // TextTyp = "A Text" HHH_XXX "A Text" ZZZ_TTT ... */
     131                 :          0 :         WorkOnTokenSet( LONGTEXTLINE, yytext );
     132                 :            : }
     133                 :          0 : 
     134                 :            : \".*\" {
     135                 :          0 : /* TEXT // "A Text" */
     136                 :          0 :         WorkOnTokenSet( TEXT, yytext );
     137                 :            : }
     138                 :          0 : 
     139                 :            : "{"[ \t]*\\?  {
     140                 :          0 : /* LEVELUP */
     141                 :          0 :         WorkOnTokenSet( LEVELUP, yytext );
     142                 :            : }
     143                 :          0 : 
     144                 :            : "}"[ \t]*;([ \t]*\\)? {
     145                 :          0 : /* LEVELDOWN */
     146                 :          0 :         WorkOnTokenSet( LEVELDOWN, yytext );
     147                 :            : }
     148                 :          0 : 
     149                 :            : [a-zA-Z0-9_]+[ \t]*"="[ \t]*"MAP_APPFONT"[ \t]*"(".+")".*       {
     150                 :          0 : /* APPFONTMAPPING  Typ = MAP_APPFONT( ... ) */
     151                 :          0 :         WorkOnTokenSet( APPFONTMAPPING, yytext );
     152                 :            : }
     153                 :          0 : 
     154                 :            : [ \t]*[a-zA-Z0-9_]+[ \t]*=[ \t]*[0123456789]{1,5}[ \t]*";"?\\? {
     155                 :          0 : /* TEXTREFID // TextTyp = 12345 */
     156                 :          0 :         WorkOnTokenSet( TEXTREFID, yytext );
     157                 :            : }
     158                 :          0 : 
     159                 :            : [a-zA-Z0-9_]+[ \t]*"="[\t ]*([ \t]*"//".*\n)*.*     |
     160                 :            : [a-zA-Z0-9_]+[ \t]*"=".*      {
     161                 :            : /* ASSIGNMENT  Typ = ...  */
     162                 :          0 :  WorkOnTokenSet( ASSIGNMENT, yytext );
     163                 :            : }
     164                 :          0 : 
     165                 :            : 
     166                 :            : 
     167                 :          0 : [a-zA-Z0-9_]+[ \t]*("["[ \t]*[a-zA-Z0-9_\-]+[ \t]*"]"[ \t]*)?"="[ \t]*(\\[ \t]*)?\n?[ \t]*"{"[ \t]*(\\[ \t]*)?\n?[ \t]*"<" {
     168                 :            : /* LISTASSIGNMENT  Typ [ ... ] = ... */
     169                 :          0 :         WorkOnTokenSet( LISTASSIGNMENT, yytext );
     170                 :            : }
     171                 :          0 : 
     172                 :            : "StringList"+[ \t]*("["[ \t]*[a-zA-Z0-9_\-]+[ \t]*"]"[ \t]*)?"="[ \t]*(\\[ \t]*)?\n?[ \t]*"{"[ \t]*(\\[ \t]*)?\n?[ \t]*       {
     173                 :            : /* LISTASSIGNMENT  Typ [ ... ] = ... */
     174                 :          0 :         WorkOnTokenSet( LISTASSIGNMENT, yytext );
     175                 :            : }
     176                 :          0 : 
     177                 :            : "UIEntries"[ \t]*("["[ \t]*[a-zA-Z0-9_\-]+[ \t]*"]"[ \t]*)?"="[ \t]*(\\[ \t]*)?\n?[ \t]*"{"   {
     178                 :            : /* UIENTRIES */
     179                 :          0 :         WorkOnTokenSet( UIENTRIES, yytext );
     180                 :            : }
     181                 :          0 : 
     182                 :            : "<"?[ \t]*L?\".*\".*">" {
     183                 :          0 : /* LISTTEXT */
     184                 :          0 :         WorkOnTokenSet( LISTTEXT, yytext );
     185                 :            : }
     186                 :          0 : 
     187                 :            : [ \t]*"#define"[ \t]+[a-zA-Z0-9_]+.*"\\"    {
     188                 :          0 : /* RSCDEFINE  #define ... */
     189                 :          0 :         WorkOnTokenSet( RSCDEFINE, yytext );
     190                 :            : }
     191                 :          0 : 
     192                 :            : [ \t]*"#define"[ \t]+[a-zA-Z0-9_]+.+ {
     193                 :          0 : /* #define ... */
     194                 :          0 :         WorkOnTokenSet( NORMDEFINE, yytext );
     195                 :            : }
     196                 :          0 : 
     197                 :            : "\\" {
     198                 :          0 : /* RSCDEFINELEND */
     199                 :          0 :         WorkOnTokenSet( RSCDEFINELEND, yytext );
     200                 :            : }
     201                 :          0 : 
     202                 :            : [a-zA-Z0-9_]+[ \t]*; {
     203                 :          0 : /* allowed other tokens like "49 ;" or "SFX_... ;" */
     204                 :          0 :         WorkOnTokenSet( ANYTOKEN, yytext );
     205                 :            : }
     206                 :          0 : 
     207                 :            : .       {
     208                 :          0 :         WorkOnTokenSet( UNKNOWNCHAR, yytext );
     209                 :            : /*      YYWarning( "Unknown Char" ); */
     210                 :            : }
     211                 :          0 : 
     212                 :            : "{"?[ \t]*\".*\"[ \t]*";"[ \t]*"}" {
     213                 :          0 : /* _LISTTEXT */
     214                 :          0 :         WorkOnTokenSet( _LISTTEXT, yytext );
     215                 :            : }
     216                 :          0 : 
     217                 :          0 : %%
     218                 :          0 : 
     219                 :            : /*****************************************************************************/
     220                 :            : int     yywrap(void)
     221                 :          0 : /*****************************************************************************/
     222                 :            : {
     223                 :            :         return 1;
     224                 :          0 : }
     225                 :            : 
     226                 :            : /*****************************************************************************/
     227                 :            : void YYWarning( const char *s )
     228                 :          0 : /*****************************************************************************/
     229                 :            : {
     230                 :            :         /* write warning to stderr */
     231                 :            :         fprintf( stderr, "Warning: \"%s\" in line %d: \"%s\"\n", s, yylineno, yytext  );
     232                 :          0 : }
     233                 :          0 : 
     234                 :            : /*****************************************************************************/
     235                 :            : void yyerror( const char *s )
     236                 :          0 : /*****************************************************************************/
     237                 :            : {
     238                 :            :         /* write error to stderr */
     239                 :            :         fprintf( stderr, "Error: \"%s\" in line %d: \"%s\"\n", s, yylineno, yytext  );
     240                 :          0 :         SetError();
     241                 :          0 : }
     242                 :          0 : 
     243                 :            : SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv) {
     244                 :          0 :     int e;
     245                 :            :     yyin = init(argc, argv);
     246                 :          0 :     yylex();
     247                 :          0 :     e = GetError();
     248                 :          0 :     Close();
     249                 :          0 :     return EXIT_SUCCESS;
     250                 :          0 : }

Generated by: LCOV version 1.10