summaryrefslogtreecommitdiffstats
path: root/src/constexp.l
blob: 4d283da67095678065aee3fbfab26ed5697c9ed1 (plain)
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/******************************************************************************
 *
 * 
 *
 *
 * Copyright (C) 1997-2010 by Dimitri van Heesch.
 *
 * Permission to use, copy, modify, and distribute this software and its
 * documentation under the terms of the GNU General Public License is hereby 
 * granted. No representations are made about the suitability of this software 
 * for any purpose. It is provided "as is" without express or implied warranty.
 * See the GNU General Public License for more details.
 *
 * Documents produced by Doxygen are derivative works derived from the
 * input used in their production; they are not affected by this license.
 *
 */

%{

#include "constexp.h"  
#include "cppvalue.h"
#include "ce_parse.h" // generated header file

#define YY_NEVER_INTERACTIVE 1
  
QCString    g_strToken;  
CPPValue    g_resultValue;
int         g_constExpLineNr;
QCString    g_constExpFileName;

static const char *g_inputString;
static int         g_inputPosition;

#undef  YY_INPUT
#define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size);

static int yyread(char *buf,int max_size)
{
  int c=0;
  while( c < max_size && g_inputString[g_inputPosition] )
  {
    *buf = g_inputString[g_inputPosition++] ;
    c++; buf++;
  }
  return c;
}

%}

CONSTSUFFIX ([uU][lL]?[lL]?)|([lL][lL]?[uU]?)

%option nounput

%%

"?"				   { return TOK_QUESTIONMARK; }
":"				   { return TOK_COLON; }
"||"				   { return TOK_OR; }
"&&"				   { return TOK_AND; }
"|"				   { return TOK_BITWISEOR; }
"^"				   { return TOK_BITWISEXOR; }
"&"				   { return TOK_AMPERSAND; }
"!="            		   { return TOK_NOTEQUAL; }
"=="            		   { return TOK_EQUAL; }
"<"             		   { return TOK_LESSTHAN; }
">"             		   { return TOK_GREATERTHAN; }
"<="            		   { return TOK_LESSTHANOREQUALTO; }
">="            		   { return TOK_GREATERTHANOREQUALTO; }
"<<"            		   { return TOK_SHIFTLEFT; }
">>"            		   { return TOK_SHIFTRIGHT; }
"+"             		   { return TOK_PLUS; }
"-"             		   { return TOK_MINUS; }
"*"             		   { return TOK_STAR; }
"/"             		   { return TOK_DIVIDE; }
"%"             		   { return TOK_MOD; }
"~"             		   { return TOK_TILDE; }
"!"             		   { return TOK_NOT; }
"("             		   { return TOK_LPAREN; }
")"             		   { return TOK_RPAREN; }
"'"(([^\'\n\r\\]+)|(\\(([ntvbrfa\\?'\"])|([0-9]+)|([xX][0-9a-fA-F]+))))"'"   { 
                                     g_strToken=yytext;  
				     return TOK_CHARACTER; 
				   }
0[0-7]*{CONSTSUFFIX}?              { g_strToken=yytext; 
  				     return TOK_OCTALINT; 
				   }
[1-9][0-9]*{CONSTSUFFIX}?          { g_strToken=yytext; 
  				     return TOK_DECIMALINT; 
				   }
(0x|0X)[0-9a-fA-F]+{CONSTSUFFIX}?  { g_strToken=yytext+2; 
                                     return TOK_HEXADECIMALINT; 
                                   }
(([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+))([eE]([\-\+])?[0-9]+)?([fFlL])? { 
                                     g_strToken=yytext; return TOK_FLOAT; 
                                   }
([0-9]+[eE])([\-\+])?[0-9]+([fFlL])? { 
                                     g_strToken=yytext; return TOK_FLOAT; 
			           }
.				   
\n

%%

bool parseCppExpression(const char *fileName,int lineNr,const QCString &s)
{
  //printf("Expression: `%s'\n",s.data());
  g_constExpFileName = fileName;
  g_constExpLineNr = lineNr;
  g_inputString = s;
  g_inputPosition = 0;
  cppExpYYrestart( cppExpYYin );
  cppExpYYparse();
  //printf("Result: %ld\n",(long)g_resultValue);
  return (long)g_resultValue!=0;
}

extern "C" {
  int cppExpYYwrap() { return 1; }
}
Tcl is a high-level, general-purpose, interpreted, dynamic programming language. It was designed with the goal of being very simple but powerful.
summaryrefslogtreecommitdiffstats
path: root/doc
ModeNameSize
-rw-r--r--Access.32853logstatsplain
-rw-r--r--AddErrInfo.38208logstatsplain
-rw-r--r--Alloc.32060logstatsplain
-rw-r--r--AllowExc.31421logstatsplain
-rw-r--r--AppInit.32817logstatsplain
-rw-r--r--AssocData.33602logstatsplain
-rw-r--r--Async.36754logstatsplain
-rw-r--r--BackgdErr.32326logstatsplain
-rw-r--r--Backslash.31545logstatsplain
-rw-r--r--BoolObj.33105logstatsplain
-rw-r--r--ByteArrObj.34102logstatsplain
-rw-r--r--CallDel.32219logstatsplain
-rw-r--r--ChnlStack.33674logstatsplain
-rw-r--r--CmdCmplt.31030logstatsplain
-rw-r--r--Concat.31773logstatsplain
-rw-r--r--CrtChannel.332551logstatsplain
-rw-r--r--CrtChnlHdlr.33794logstatsplain
-rw-r--r--CrtCloseHdlr.31859logstatsplain
-rw-r--r--CrtCommand.36385logstatsplain
-rw-r--r--CrtFileHdlr.33617logstatsplain
-rw-r--r--CrtInterp.36095logstatsplain
-rw-r--r--CrtMathFnc.36006logstatsplain
-rw-r--r--CrtObjCmd.311532logstatsplain
-rw-r--r--CrtSlave.39785logstatsplain
-rw-r--r--CrtTimerHdlr.32867logstatsplain
-rw-r--r--CrtTrace.34557logstatsplain
-rw-r--r--DString.36012logstatsplain
-rw-r--r--DetachPids.33147logstatsplain
-rw-r--r--DoOneEvent.34179logstatsplain
-rw-r--r--DoWhenIdle.33397logstatsplain
-rw-r--r--DoubleObj.32914logstatsplain
-rw-r--r--DumpActiveMemory.32287logstatsplain
-rw-r--r--Encoding.325206logstatsplain
-rw-r--r--Environment.31032logstatsplain
-rw-r--r--Eval.38718logstatsplain
-rw-r--r--Exit.35404logstatsplain
-rw-r--r--ExprLong.34242logstatsplain
-rw-r--r--ExprLongObj.33794logstatsplain
-rw-r--r--FileSystem.348922logstatsplain
-rw-r--r--FindExec.31949logstatsplain
-rwxr-xr-xGetCwd.31784logstatsplain
-rw-r--r--GetHostName.3711logstatsplain
-rw-r--r--GetIndex.33882logstatsplain
-rw-r--r--GetInt.33177logstatsplain
-rw-r--r--GetOpnFl.32138logstatsplain
-rw-r--r--GetStdChan.33056logstatsplain
-rwxr-xr-xGetVersion.31658logstatsplain
-rw-r--r--Hash.312862logstatsplain
-rw-r--r--Init.3917logstatsplain
-rw-r--r--InitStubs.33535logstatsplain
-rw-r--r--IntObj.33923logstatsplain
-rw-r--r--Interp.35654logstatsplain
-rw-r--r--LinkVar.34418logstatsplain
-rw-r--r--ListObj.310347logstatsplain
-rw-r--r--Macintosh.33835logstatsplain
-rw-r--r--Notifier.327731logstatsplain
-rw-r--r--Object.313862logstatsplain
-rw-r--r--ObjectType.38052logstatsplain
-rw-r--r--OpenFileChnl.329263logstatsplain
-rw-r--r--OpenTcp.37567logstatsplain
-rw-r--r--Panic.33891logstatsplain
-rw-r--r--ParseCmd.319922logstatsplain
-rw-r--r--PkgRequire.32986logstatsplain
-rw-r--r--Preserve.34290logstatsplain
-rw-r--r--PrintDbl.31586logstatsplain
-rw-r--r--RecEvalObj.31980logstatsplain
-rw-r--r--RecordEval.32096logstatsplain
-rw-r--r--RegExp.315036logstatsplain
-rw-r--r--SaveResult.32433logstatsplain
-rw-r--r--SetErrno.31951logstatsplain
-rw-r--r--SetRecLmt.31938logstatsplain
-rw-r--r--SetResult.39756logstatsplain
-rw-r--r--SetVar.310354logstatsplain
-rw-r--r--Signal.31051logstatsplain
-rw-r--r--Sleep.31129logstatsplain
-rw-r--r--SourceRCFile.31084logstatsplain