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