~ubuntu-branches/ubuntu/karmic/gcalctool/karmic-updates

« back to all changes in this revision

Viewing changes to gcalctool/ce_tokeniser.l

  • Committer: Bazaar Package Importer
  • Author(s): Christophe Sauthier
  • Date: 2008-12-26 16:20:06 UTC
  • mfrom: (1.1.46 upstream)
  • Revision ID: james.westby@ubuntu.com-20081226162006-brnuirfez3bznt4i
Tags: 5.25.3-0ubuntu1
* New upstream version (LP: #312125).
  - Bitcalculating extension calculate value properly (LP: #200590).
  - Usage of correct operator precedence (LP: #302115).
  - Allow switch to rad (LP: #306702).

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
#include <sys/types.h>
29
29
#include "calctool.h"
30
30
#include "display.h"
31
 
#include "mpmath.h"
 
31
#include "mp.h"
32
32
#include "functions.h" /* FIXME: Needed for gc_strdup() */
33
33
#include "ce_parser.h"
34
34
#include "ce_parser.tab.h"
35
35
%}
36
36
 
 
37
%option noinput
 
38
%option nounput
 
39
 
37
40
DECIMAL "."|","
38
41
SIGN    "+"|"-" 
39
42
CHARACTER [a-z]|[A-Z]
41
44
OCT     [0-7]
42
45
DEC     [0-9]
43
46
HEX     [0-9]|[A-F]|[a-f]
44
 
EXP     "e+"|"e-"|"E+"|"E-"
45
 
NEP     "e"
 
47
EXP     "e"|"e+"|"e-"|"E"|"E+"|"E-"
46
48
HEX_NUM {HEX}+|{HEX}*{DECIMAL}{HEX}*
47
49
DEC_NUM{DEC}+|{DEC}*{DECIMAL}{DEC}*
48
50
OCT_NUM{OCT}+|{OCT}*{DECIMAL}{OCT}*
64
66
"clr"|"Clr"|"CLR" {return tCLR;}
65
67
"cosh"|"Cosh"|"COSH" {return tCOSH;}
66
68
"cos"|"Cos"|"COS" {return tCOS;}
67
 
"ctrm"|"Ctrm"|"CTRM" {return tCTRM;}
68
 
"dbg"|"Ddb"|"DDB" {return tDDB;}
69
69
"eng"|"Eng"|"ENG" {return tEXP;}
70
70
"frac"|"Frac"|"FRAC" {return tFRAC;}
71
 
"fv"|"Fv"|"FV" {return tFV;}
72
71
"int"|"Int"|"INT" {return tINT;}
73
72
"ln"|"Ln"|"LN" {return tLN;}
74
73
"log"|"Log"|"LOG" {return tLOG10;}
77
76
"not"|"Not"|"NOT" {return tNOT;}
78
77
"or"|"Or"|"OR" {return tOR;}
79
78
"pi"|"Pi"|"PI" {return tPI;}
80
 
"pmt"|"Pmt"|"PMT" {return tPMT;}
81
 
"pv"|"Pv"|"PV" {return tPV;}
82
79
"rand"|"Rand"|"RAND" {return tRAND;}
83
 
"rate"|"Rate"|"RATE" {return tRATE;}
84
80
"rcl"|"Rcl"|"RCL" {return tRCL;}
85
81
"sinh"|"Sinh"|"SINH" {return tSINH;}
86
82
"sin"|"Sin"|"SIN" {return tSIN;}
87
 
"sln"|"Sln"|"SLN" {return tSLN;}
88
83
"sqrt"|"Sqrt"|"SQRT" {return tSQRT;}
89
84
"sto"|"Sto"|"STO" {return tSTO;}
90
 
"syd"|"Syd"|"SYD" {return tSYD;}
91
85
"tanh"|"Tanh"|"TANH" {return tTANH;}
92
86
"tan"|"Tan"|"TAN" {return tTAN;}
93
 
"term"|"Term"|"TERM" {return tTERM;}
94
87
"u16"|"u16"|"U16" {return tU16;}
95
88
"u32"|"u32"|"U32" {return tU32;}
96
89
"xnor"|"Xnor"|"XNOR" {return tXNOR;}
105
98
{DEC_NUM}{EXP}{DEC_NUM} {
106
99
if (v->base == HEX) REJECT;
107
100
if (strlen(yytext) > MAX_DIGITS) parser_state.error = -PARSER_ERR_TOO_LONG_NUMBER;
108
 
mp_set_from_string(yytext, celval.int_t);
 
101
mp_set_from_string(yytext, basevals[v->base], celval.int_t);
109
102
return tNUMBER;
110
103
}
111
104
 
112
105
{BIN_NUM} {
113
106
if (v->base != BIN) REJECT;
114
107
if (strlen(yytext) > MAX_DIGITS) parser_state.error = -PARSER_ERR_TOO_LONG_NUMBER;
115
 
MPstr_to_num(yytext, v->base, celval.int_t);
 
108
mp_set_from_string(yytext, basevals[v->base], celval.int_t);
116
109
return tNUMBER;
117
110
}
118
111
 
119
112
{OCT_NUM} {
120
113
if (v->base != OCT) REJECT;
121
114
if (strlen(yytext) > MAX_DIGITS) parser_state.error = -PARSER_ERR_TOO_LONG_NUMBER;
122
 
MPstr_to_num(yytext, v->base, celval.int_t);
 
115
mp_set_from_string(yytext, basevals[v->base], celval.int_t);
123
116
return tNUMBER;
124
117
}
125
118
 
126
119
{DEC_NUM} {
127
120
if (v->base != DEC) REJECT;
128
121
if (strlen(yytext) > MAX_DIGITS) parser_state.error = -PARSER_ERR_TOO_LONG_NUMBER;
129
 
MPstr_to_num(yytext, v->base, celval.int_t);
 
122
mp_set_from_string(yytext, basevals[v->base], celval.int_t);
130
123
return tNUMBER;
131
124
}
132
125
 
133
126
{HEX_NUM} {
134
127
if (v->base != HEX) REJECT;
135
128
if (strlen(yytext) > MAX_DIGITS) parser_state.error = -PARSER_ERR_TOO_LONG_NUMBER;
136
 
MPstr_to_num(yytext, v->base, celval.int_t);
 
129
mp_set_from_string(yytext, basevals[v->base], celval.int_t);
137
130
return tNUMBER;
138
131
}
139
132