Warning, /frameworks/solid/src/solid/devices/predicate_lexer.l is written in an unsupported language. File is not indexed.

0001 %{
0002 #include "predicate_parser.h"
0003 #include "predicateparse.h"
0004 #include <string.h>
0005 #include <stdlib.h>
0006 #define YY_NO_UNPUT
0007 
0008 int Solidwrap( yyscan_t _scanner );
0009 void PredicateParse_initLexer( const char *_code, yyscan_t _scanner );
0010 char *PredicateParse_putSymbol( char *_name );
0011 char *PredicateParse_putString( char *_str );
0012 void PredicateParse_initFlex( const char *_code, yyscan_t _scanner );
0013 
0014 %}
0015 
0016 %option nomain
0017 %option never-interactive
0018 %option noalways-interactive
0019 %option nostack
0020 %option reentrant
0021 %option bison-bridge
0022 %option noinput nounput
0023 
0024 DIGIT [0-9]
0025 
0026 %%
0027 
0028 "==" { return EQ; }
0029 "&" { return MASK; }
0030 
0031 [aA][nN][dD] { return AND; }
0032 [oO][rR] { return OR; }
0033 [iI][sS] { return IS; }
0034 
0035 [tT][rR][uU][eE] { yylval->valb = 1; return VAL_BOOL; }
0036 [fF][aA][lL][sS][eE] { yylval->valb = 0; return VAL_BOOL; }
0037 
0038 "'"[^']*"'" { yylval->name = PredicateParse_putString( yytext ); return VAL_STRING; }
0039 
0040 "-"{DIGIT}+ { yylval->vali = atoi( yytext ); return VAL_NUM; }
0041 {DIGIT}+ { yylval->vali = atoi( yytext ); return VAL_NUM; }
0042 
0043 {DIGIT}*"\."{DIGIT}+ { yylval->vald = atof( yytext ); return VAL_FLOAT; }
0044 
0045 [a-zA-Z][a-zA-Z0-9\-]* { yylval->name = PredicateParse_putSymbol( yytext ); return VAL_ID; }
0046 
0047 "{"|"}"|"["|"]"|","|"\." { yylval->name = 0; return (int)(*yytext); }
0048 
0049 [ \t\n]+ /* eat up whitespace */
0050 
0051 . { PredicateLexer_unknownToken(yytext); }
0052 
0053 %%
0054 
0055 char *PredicateParse_putSymbol( char *_name )
0056 {
0057     char *p = (char*)malloc( strlen( _name ) + 1 );
0058     if (p != NULL)
0059     {
0060         strcpy( p, _name );
0061     }
0062     return p;
0063 }
0064 
0065 char *PredicateParse_putString( char *_str )
0066 {
0067     int l = strlen( _str );
0068     char *p = (char*)malloc( l );
0069     char *s = _str + 1;
0070     char *d = p;
0071 
0072     if (p == NULL)
0073         return NULL;
0074 
0075     while ( s != _str + l - 1 )
0076     {
0077         if ( *s != '\\' )
0078             *d++ = *s++;
0079         else
0080         {
0081             s++;
0082             if ( s != _str + l - 1 )
0083             {
0084                 if ( *s == '\\' )
0085                     *d++ = '\\';
0086                 else if ( *s == 'n' )
0087                     *d++ = '\n';
0088                 else if ( *s == 'r' )
0089                     *d++ = '\r';
0090                 else if ( *s == 't' )
0091                     *d++ = '\t';
0092                 s++;
0093             }
0094          }
0095     }
0096     *d = 0;
0097     return p;
0098 }
0099 
0100 void PredicateParse_initLexer( const char *_code, yyscan_t _scanner )
0101 {
0102     Solid_switch_to_buffer( Solid_scan_string( _code, _scanner ), _scanner );
0103 }
0104 
0105 int Solidwrap( yyscan_t _scanner )
0106 {
0107     struct yyguts_t *yyg = (struct yyguts_t*)_scanner;
0108     Solid_delete_buffer( YY_CURRENT_BUFFER, _scanner );
0109     return 1;
0110 }
0111