16%option never-interactive
17%option prefix="constexpYY"
19%option reentrant bison-bridge
20%option extra-type="struct constexpYY_state *"
Private interface between Parser (constexp.y) and Lexer (constexp.l).
31#include "ce_parse.hpp"
36#define YY_NO_UNISTD_H 1
43#define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size,yyscanner);
46static inline const char *
getLexerFILE() {
return __FILE__;}
47#define LEX_NO_INPUT_FILENAME
static int yyread(char *buf, int max_size, yyscan_t yyscanner)
static const char * stateToString(int state)
static const char * getLexerFILE()
52CONSTSUFFIX ([uU][lL]?[lL]?)|([lL][lL]?[uU]?)
57"?" {
return TOK_QUESTIONMARK; }
58":" {
return TOK_COLON; }
59"||" {
return TOK_OR; }
60"&&" {
return TOK_AND; }
61"|" {
return TOK_BITWISEOR; }
62"^" {
return TOK_BITWISEXOR; }
63"&" {
return TOK_AMPERSAND; }
64"!=" {
return TOK_NOTEQUAL; }
65"==" {
return TOK_EQUAL; }
66"<" {
return TOK_LESSTHAN; }
67">" {
return TOK_GREATERTHAN; }
68"<=" {
return TOK_LESSTHANOREQUALTO; }
69">=" {
return TOK_GREATERTHANOREQUALTO; }
70"<<" {
return TOK_SHIFTLEFT; }
71">>" {
return TOK_SHIFTRIGHT; }
72"+" {
return TOK_PLUS; }
73"-" {
return TOK_MINUS; }
74"*" {
return TOK_STAR; }
75"/" {
return TOK_DIVIDE; }
76"%" {
return TOK_MOD; }
77"~" {
return TOK_TILDE; }
78"!" {
return TOK_NOT; }
79"(" {
return TOK_LPAREN; }
80")" {
return TOK_RPAREN; }
81"'"(([^\'\n\r\\]+)|(\\(([ntvbrfa\\?'\"])|([0-9]+)|([xX][0-9a-fA-F]+))))"'" {
82 yyextra->strToken=yytext;
850[0-7]*{CONSTSUFFIX}? { yyextra->strToken=yytext;
88[1-9][0-9]*{CONSTSUFFIX}? { yyextra->strToken=yytext;
89 return TOK_DECIMALINT;
91(0x|0X)[0-9a-fA-F]+{CONSTSUFFIX}? { yyextra->strToken=yytext+2;
92 return TOK_HEXADECIMALINT;
94(0b|0B)[01]+{CONSTSUFFIX}? { yyextra->strToken=yytext+2;
97(([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+))([eE]([\-\+])?[0-9]+)?([fFlL])? {
98 yyextra->strToken=yytext;
return TOK_FLOAT;
100([0-9]+[eE])([\-\+])?[0-9]+([fFlL])? {
101 yyextra->strToken=yytext;
return TOK_FLOAT;
110 struct yyguts_t *yyg =
static_cast<struct yyguts_t*
>(yyscanner);
112 while( c < max_size && yyextra->inputString[yyextra->inputPosition] )
114 *buf = yyextra->inputString[yyextra->inputPosition++] ;
129 constexpYYlex_init_extra(&
p->constexpYY_extra, &
p->yyscanner);
134 constexpYYlex_destroy(
p->yyscanner);
139 struct yyguts_t *yyg = (
struct yyguts_t*)
p->yyscanner;
145 yyextra->constExpFileName = fileName;
146 yyextra->constExpLineNr = lineNr;
147 yyextra->orgString = orgStr;
148 yyextra->inputString = s;
149 yyextra->inputPosition = 0;
150 constexpYYrestart( yyin,
p->yyscanner );
158 bool result =
static_cast<long>(yyextra->resultValue)!=0;
167#include "constexp.l.h"
std::unique_ptr< Private > p
bool parse(const char *fileName, int line, const std::string &expression, const std::string &orgExpression)
static bool isFlagSet(const DebugMask mask)
static int yyread(yyscan_t yyscanner, char *buf, int max_size)
int constexpYYwrap(yyscan_t)
int constexpYYparse(yyscan_t)
struct constexpYY_state constexpYY_extra