| /** | 
 |  * Thrift scanner. | 
 |  *  | 
 |  * Tokenizes a thrift definition file. | 
 |  * @author Mark Slee <mcslee@facebook.com> | 
 |  */ | 
 | %{ | 
 |  | 
 | #include "main.h" | 
 | #include "parse/t_program.h" | 
 |  | 
 | /** Must be included AFTER parse/t_program.h */ | 
 | #include "thrift.tab.hh" | 
 |  | 
 | %} | 
 |  | 
 | /** Provides yylineno global */ | 
 | %option lex-compat 	 | 
 |  | 
 | /** Helper definitions */ | 
 | intconstant  ([0-9]+) | 
 | identifier   ([a-zA-Z_][a-zA-Z_0-9]*) | 
 | whitespace   ([ \t\r\n]*) | 
 | multicomm    ("/*""/"*([^*/]|[^*]"/"|"*"[^/])*"*"*"*/") | 
 | comment      ("//"[^\n]*) | 
 | symbol       ([\,\{\}\(\)\=]) | 
 |  | 
 | %% | 
 |  | 
 | {whitespace}  { /* do nothing */ } | 
 | {multicomm}   { /* do nothing */ } | 
 | {comment}     { /* do nothing */ } | 
 |  | 
 | {symbol}      { return yytext[0];   } | 
 |  | 
 | "byte"        { return tok_byte;     } | 
 | "string"      { return tok_string;   } | 
 | "i32"         { return tok_i32;      } | 
 | "u32"         { return tok_u32;      } | 
 | "i64"         { return tok_i64;      } | 
 | "u64"         { return tok_u64;      } | 
 |  | 
 | "map"         { return tok_map;      } | 
 | "list"        { return tok_list;     } | 
 | "set"         { return tok_set;      } | 
 |  | 
 | "void"        { return tok_void;     } | 
 | "async"       { return tok_async;    } | 
 |  | 
 | "typedef"     { return tok_typedef;  } | 
 | "struct"      { return tok_struct;   } | 
 | "function"    { return tok_function; } | 
 | "service"     { return tok_service;  } | 
 | "enum"        { return tok_enum;     } | 
 |  | 
 | {intconstant} { yylval.iconst = atoi(yytext) ; return tok_int_constant; } | 
 | {identifier}  { yylval.id = strdup(yytext); return tok_identifier; } | 
 |  | 
 | %% |