1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
%{
#include "tree_cst_cst.hpp"
#include "tree_cst_parse.hpp"
#define YY_USER_ACTION yylloc->first_line = yylloc->last_line = yylineno;
%}
%option nostdinit
/*%option nodefault*/
%option nounput
%option noyywrap
%option reentrant
%option bison-bridge
%option bison-locations
%option yylineno
%option prefix="tree_cst_"
%option header-file="tree_cst_lex.hpp"
%s DIRECTIVE
IDENT [[:alpha:]_][[:alnum:]_]*
INTEGER [[:digit:]]+
%%
<INITIAL>% BEGIN(DIRECTIVE); return PERCENT;
<DIRECTIVE>(%|\n) BEGIN(INITIAL); return PERCENT;
\ /* ignore */
\n /* ignore */
\t /* ignore */
\r /* ignore */
\( return LPAREN;
\) return RPAREN;
\{ return LBRACE;
\} return RBRACE;
\[ return LBRACKET;
\] return RBRACKET;
\< return LANGLE;
\> return RANGLE;
& return AMPERSAND;
, return COMMA;
; return SEMICOLON;
:: return DOUBLECOLON;
\* return ASTERISK;
\.\.\. return ELLIPSIS;
<INITIAL>visitor return VISITOR;
<INITIAL>group return GROUP;
<DIRECTIVE>multiparent return MULTIPARENT;
<DIRECTIVE>scoped_ptr return SCOPED_PTR;
<DIRECTIVE>shared_ptr return SHARED_PTR;
<DIRECTIVE>intrusive_ptr return INTRUSIVE_PTR;
<DIRECTIVE>smartpointer return SMARTPOINTER;
<DIRECTIVE>include return INCLUDE;
namespace return NAMESPACE;
const return CONST;
volatile return VOLATILE;
void return VOID;
node return NODE;
<INITIAL>parent return PARENT;
true return TRUE;
false return FALSE;
{IDENT} yylval->string.data = yytext; yylval->string.length = yyleng; return IDENTIFIER;
{INTEGER} yylval->string.data = yytext; yylval->string.length = yyleng; return INTEGER;
\"([^"\\\n]|\\.|\\\n)*\" yylval->string.data = yytext+1; yylval->string.length = yyleng-2; return QUOTED_NAME;
<DIRECTIVE>\<[^\>]*\> yylval->string.data = yytext+1; yylval->string.length = yyleng-2; return HEADER_NAME;
|