Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
mpim-sw
cdo
Commits
d41a95d5
Commit
d41a95d5
authored
Jun 29, 2017
by
Oliver Heidmann
Browse files
Merge branch 'develop' of git.mpimet.mpg.de:cdo into develop
parents
b705373e
fc07c575
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
ChangeLog
View file @
d41a95d5
...
...
@@ -3,6 +3,10 @@
* Using CDI library version 1.9.0
* Version 1.9.0 release
2017-06-28 Uwe Schulzweida
* expr: improve ternary operator, no brackets needed anymore.
2017-06-27 Uwe Schulzweida
* expr: added support for clev in ifthenelse (bug fix).
...
...
src/expr_lex.cc
View file @
d41a95d5
...
...
@@ -347,8 +347,8 @@ static void yynoreturn yy_fatal_error (yyconst char* msg ,yyscan_t yyscanner );
*yy_cp = '\0'; \
yyg->yy_c_buf_p = yy_cp;
#define YY_NUM_RULES 2
3
#define YY_END_OF_BUFFER 2
4
#define YY_NUM_RULES 2
5
#define YY_END_OF_BUFFER 2
6
/* This struct is not used in this scanner,
but its presence is necessary. */
struct
yy_trans_info
...
...
@@ -356,37 +356,38 @@ struct yy_trans_info
flex_int32_t
yy_verify
;
flex_int32_t
yy_nxt
;
};
static
yyconst
flex_int16_t
yy_acclist
[
1
58
]
=
static
yyconst
flex_int16_t
yy_acclist
[
1
64
]
=
{
0
,
4
,
4
,
24
,
22
,
23
,
21
,
22
,
23
,
21
,
23
,
22
,
23
,
1
,
22
,
23
,
22
,
23
,
11
,
22
,
23
,
4
,
11
,
22
,
23
,
4
,
22
,
23
,
16
,
22
,
23
,
11
,
22
,
23
,
15
,
22
,
23
,
9
,
10
,
22
,
23
,
16391
,
4
,
9
,
10
,
22
,
23
,
16391
,
9
,
10
,
22
,
23
,
16391
,
9
,
10
,
22
,
23
,
16391
,
9
,
10
,
22
,
23
,
16391
,
9
,
10
,
22
,
23
,
16391
,
22
,
23
,
21
,
18
,
1
,
19
,
4
,
4
,
4
,
4
,
10
,
4
,
10
,
10
,
14
,
17
,
13
,
8199
,
8
,
9
,
10
,
16391
,
9
,
10
,
16391
,
4
,
9
,
10
,
16391
,
9
,
10
,
16391
,
9
,
10
,
16391
,
9
,
10
,
16391
,
20
,
4
,
10
,
10
,
4
,
10
,
12
,
8
,
4
,
4
,
9
,
10
,
16391
,
3
,
9
,
4
,
4
,
26
,
24
,
25
,
23
,
24
,
25
,
23
,
25
,
24
,
25
,
1
,
24
,
25
,
24
,
25
,
11
,
24
,
25
,
4
,
11
,
24
,
25
,
4
,
24
,
25
,
22
,
24
,
25
,
16
,
24
,
25
,
11
,
24
,
25
,
15
,
24
,
25
,
21
,
24
,
25
,
9
,
10
,
24
,
25
,
16391
,
4
,
9
,
10
,
24
,
25
,
16391
,
9
,
10
,
24
,
25
,
16391
,
9
,
10
,
24
,
25
,
16391
,
9
,
10
,
24
,
25
,
16391
,
9
,
10
,
24
,
25
,
16391
,
24
,
25
,
23
,
18
,
1
,
19
,
4
,
4
,
4
,
4
,
10
,
4
,
10
,
10
,
14
,
17
,
13
,
8199
,
8
,
9
,
10
,
16391
,
9
,
10
,
16391
,
4
,
9
,
10
,
16391
,
9
,
10
,
16391
,
9
,
10
,
16391
,
9
,
10
,
16391
,
4
,
10
,
4
,
2
,
9
,
10
,
16391
,
9
,
10
,
16391
,
9
,
10
,
16391
,
9
,
10
,
16391
,
9
,
10
,
16391
,
6
,
8199
,
9
,
10
,
16391
,
5
,
8199
16391
,
20
,
4
,
10
,
10
,
4
,
10
,
12
,
8
,
4
,
4
,
9
,
10
,
16391
,
3
,
9
,
10
,
16391
,
9
,
10
,
16391
,
9
,
10
,
16391
,
9
,
10
,
16391
,
4
,
10
,
4
,
2
,
9
,
10
,
16391
,
9
,
10
,
16391
,
9
,
10
,
16391
,
9
,
10
,
16391
,
9
,
10
,
16391
,
6
,
8199
,
9
,
10
,
16391
,
5
,
8199
}
;
static
yyconst
flex_int16_t
yy_accept
[
7
4
]
=
static
yyconst
flex_int16_t
yy_accept
[
7
6
]
=
{
0
,
1
,
2
,
3
,
4
,
6
,
9
,
11
,
13
,
16
,
18
,
21
,
25
,
28
,
31
,
34
,
37
,
4
2
,
48
,
5
3
,
58
,
63
,
6
8
,
70
,
7
1
,
7
2
,
7
3
,
7
4
,
7
5
,
76
,
76
,
77
,
78
,
79
,
81
,
82
,
83
,
84
,
85
,
8
5
,
86
,
87
,
9
0
,
93
,
9
3
,
9
7
,
100
,
103
,
106
,
10
7
,
1
07
,
1
08
,
1
09
,
11
0
,
11
2
,
11
3
,
11
4
,
11
5
,
1
19
,
12
3
,
12
6
,
129
,
132
,
13
4
,
135
,
139
,
14
2
,
145
,
148
,
151
,
15
3
,
15
6
,
15
8
,
1
58
21
,
25
,
28
,
31
,
34
,
37
,
4
0
,
43
,
48
,
5
4
,
59
,
6
4
,
69
,
7
4
,
7
6
,
7
7
,
7
8
,
7
9
,
80
,
81
,
82
,
82
,
83
,
84
,
85
,
8
7
,
88
,
89
,
90
,
91
,
91
,
9
2
,
93
,
9
6
,
9
9
,
99
,
103
,
106
,
10
9
,
1
12
,
1
13
,
1
13
,
11
4
,
11
5
,
11
6
,
11
8
,
11
9
,
1
20
,
12
1
,
12
5
,
129
,
132
,
13
5
,
138
,
140
,
14
1
,
145
,
148
,
151
,
15
4
,
15
7
,
15
9
,
1
62
,
164
,
164
}
;
static
yyconst
YY_CHAR
yy_ec
[
256
]
=
...
...
@@ -396,15 +397,15 @@ static yyconst YY_CHAR yy_ec[256] =
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
4
,
5
,
1
,
6
,
1
,
1
,
7
,
1
,
8
,
9
,
9
,
10
,
9
,
10
,
11
,
9
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
9
,
9
,
1
3
,
1
4
,
1
5
,
9
,
1
,
1
6
,
1
6
,
1
6
,
1
7
,
18
,
1
6
,
1
6
,
1
6
,
1
9
,
1
6
,
1
6
,
1
7
,
2
0
,
1
6
,
1
6
,
2
1
,
1
6
,
1
6
,
1
6
,
1
6
,
1
6
,
1
6
,
1
6
,
1
6
,
1
6
,
1
6
,
1
,
1
,
1
,
9
,
2
2
,
1
,
1
6
,
1
6
,
1
6
,
1
7
,
2
3
,
1
6
,
1
6
,
1
6
,
2
4
,
1
6
,
1
6
,
1
7
,
2
5
,
2
6
,
2
7
,
28
,
1
6
,
29
,
1
6
,
3
0
,
1
6
,
3
1
,
1
6
,
1
6
,
1
6
,
1
6
,
9
,
3
2
,
9
,
1
,
1
,
1
,
1
,
1
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
13
,
9
,
1
4
,
1
5
,
1
6
,
17
,
1
,
1
8
,
1
8
,
1
8
,
1
9
,
20
,
1
8
,
1
8
,
1
8
,
2
1
,
1
8
,
1
8
,
1
9
,
2
2
,
1
8
,
1
8
,
2
3
,
1
8
,
1
8
,
1
8
,
1
8
,
1
8
,
1
8
,
1
8
,
1
8
,
1
8
,
1
8
,
1
,
1
,
1
,
9
,
2
4
,
1
,
1
8
,
1
8
,
1
8
,
1
9
,
2
5
,
1
8
,
1
8
,
1
8
,
2
6
,
1
8
,
1
8
,
1
9
,
2
7
,
2
8
,
2
9
,
30
,
1
8
,
31
,
1
8
,
3
2
,
1
8
,
3
3
,
1
8
,
1
8
,
1
8
,
1
8
,
9
,
3
4
,
9
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
...
...
@@ -421,80 +422,80 @@ static yyconst YY_CHAR yy_ec[256] =
1
,
1
,
1
,
1
,
1
}
;
static
yyconst
YY_CHAR
yy_meta
[
3
3
]
=
static
yyconst
YY_CHAR
yy_meta
[
3
5
]
=
{
0
,
1
,
1
,
2
,
3
,
1
,
1
,
1
,
3
,
1
,
1
,
4
,
5
,
1
,
1
,
1
,
6
,
6
,
6
,
6
,
6
,
4
,
5
,
1
,
1
,
1
,
1
,
1
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
1
6
,
6
,
6
,
1
}
;
static
yyconst
flex_uint16_t
yy_base
[
7
8
]
=
static
yyconst
flex_uint16_t
yy_base
[
8
0
]
=
{
0
,
0
,
0
,
13
2
,
13
3
,
3
1
,
3
4
,
11
7
,
0
,
12
3
,
13
3
,
2
7
,
40
,
1
1
5
,
11
4
,
11
3
,
56
,
58
,
30
,
104
,
96
,
10
1
,
9
1
,
44
,
133
,
0
,
13
3
,
59
,
13
3
,
31
,
61
,
74
,
110
,
10
9
,
43
,
1
05
,
133
,
1
33
,
57
,
13
3
,
0
,
0
,
0
,
10
7
,
3
7
,
38
,
94
,
92
,
13
3
,
104
,
63
,
10
3
,
10
2
,
7
1
,
13
3
,
0
,
7
7
,
0
,
0
,
94
,
73
,
6
9
,
8
3
,
133
,
0
,
63
,
59
,
79
,
58
,
13
3
,
66
,
13
3
,
133
,
97
,
100
,
104
,
106
,
6
6
0
,
0
,
13
4
,
13
5
,
3
3
,
3
6
,
11
8
,
0
,
12
5
,
13
5
,
2
9
,
31
,
1
3
5
,
11
6
,
11
5
,
114
,
135
,
49
,
51
,
34
,
10
4
,
9
6
,
101
,
91
,
62
,
13
5
,
0
,
13
5
,
55
,
135
,
35
,
57
,
5
9
,
112
,
1
11
,
71
,
1
06
,
135
,
13
5
,
64
,
135
,
0
,
0
,
0
,
10
9
,
7
3
,
66
,
94
,
92
,
13
5
,
10
6
,
75
,
105
,
10
4
,
7
6
,
13
5
,
0
,
7
8
,
0
,
0
,
9
4
,
8
6
,
84
,
87
,
135
,
0
,
64
,
60
,
8
3
,
48
,
13
5
,
50
,
135
,
135
,
97
,
100
,
104
,
106
,
4
6
}
;
static
yyconst
flex_int16_t
yy_def
[
7
8
]
=
static
yyconst
flex_int16_t
yy_def
[
8
0
]
=
{
0
,
7
2
,
1
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
3
,
7
2
,
7
2
,
7
2
,
7
4
,
7
2
,
7
2
,
7
2
,
7
5
,
7
5
,
1
7
,
1
7
,
1
7
,
1
7
,
72
,
72
,
7
2
,
7
3
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
74
,
7
6
,
76
,
7
6
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
7
,
1
7
,
1
7
,
72
,
1
7
,
1
7
,
1
7
,
1
7
,
72
,
72
,
7
2
,
7
6
,
7
6
,
7
6
,
7
2
,
7
7
,
7
2
,
1
7
,
1
7
,
1
7
,
1
7
,
1
7
,
76
,
72
,
1
7
,
1
7
,
1
7
,
1
7
,
1
7
,
72
,
1
7
,
7
2
,
0
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
7
4
,
1
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
5
,
7
4
,
7
4
,
7
4
,
7
6
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
7
,
7
7
,
1
9
,
1
9
,
19
,
19
,
7
4
,
7
4
,
7
4
,
7
5
,
7
4
,
7
4
,
7
4
,
74
,
7
4
,
76
,
7
8
,
7
8
,
7
8
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
9
,
19
,
1
9
,
7
4
,
1
9
,
1
9
,
19
,
19
,
7
4
,
7
4
,
7
4
,
7
8
,
7
8
,
7
8
,
7
4
,
7
9
,
7
4
,
1
9
,
1
9
,
1
9
,
19
,
19
,
7
8
,
7
4
,
1
9
,
1
9
,
1
9
,
19
,
1
9
,
7
4
,
19
,
74
,
0
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
}
;
static
yyconst
flex_uint16_t
yy_nxt
[
1
66
]
=
static
yyconst
flex_uint16_t
yy_nxt
[
1
70
]
=
{
0
,
4
,
5
,
6
,
5
,
7
,
8
,
9
,
10
,
10
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
1
6
,
19
,
1
6
,
1
6
,
18
,
1
6
,
16
,
1
6
,
1
6
,
20
,
2
1
,
16
,
16
,
22
,
23
,
2
3
,
2
3
,
2
3
,
2
3
,
2
3
,
2
7
,
43
,
4
9
,
44
,
50
,
28
,
29
,
23
,
2
3
,
2
3
,
44
,
29
,
3
0
,
31
,
4
3
,
57
,
53
,
58
,
33
,
3
4
,
59
,
38
,
3
8
,
38
,
3
4
,
39
,
39
,
3
9
,
40
,
41
,
40
,
41
,
27
,
55
,
2
7
,
71
,
50
,
28
,
29
,
28
,
29
,
28
,
70
,
29
,
5
3
,
29
,
3
0
,
31
,
6
9
,
6
2
,
5
6
,
68
,
33
,
34
,
6
7
,
6
3
,
51
,
6
6
,
34
,
2
5
,
6
5
,
2
5
,
2
5
,
2
5
,
2
5
,
3
2
,
3
2
,
3
2
,
4
2
,
4
2
,
4
2
,
4
2
,
5
2
,
5
2
,
6
4
,
51
,
51
,
5
0
,
61
,
60
,
5
6
,
54
,
5
1
,
5
1
,
48
,
47
,
46
,
4
5
,
37
,
36
,
3
5
,
26
,
24
,
7
2
,
3
,
7
2
,
72
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
1
9
,
20
,
1
8
,
2
1
,
18
,
1
8
,
20
,
1
8
,
1
8
,
18
,
1
8
,
22
,
23
,
18
,
18
,
2
4
,
2
5
,
2
5
,
2
5
,
2
5
,
2
5
,
25
,
2
9
,
32
,
33
,
45
,
51
,
46
,
5
2
,
3
0
,
31
,
35
,
3
6
,
57
,
4
0
,
31
,
40
,
36
,
41
,
7
3
,
41
,
42
,
4
3
,
42
,
4
3
,
25
,
25
,
25
,
2
9
,
40
,
29
,
32
,
33
,
41
,
7
2
,
30
,
31
,
30
,
31
,
35
,
36
,
31
,
45
,
31
,
5
5
,
3
6
,
46
,
6
0
,
5
2
,
5
5
,
6
1
,
5
8
,
71
,
59
,
7
0
,
3
0
,
64
,
6
9
,
65
,
2
7
,
5
3
,
2
7
,
2
7
,
2
7
,
2
7
,
3
4
,
3
4
,
3
4
,
4
4
,
4
4
,
4
4
,
4
4
,
5
4
,
5
4
,
6
8
,
67
,
66
,
5
3
,
53
,
52
,
6
3
,
62
,
5
8
,
5
6
,
53
,
53
,
50
,
4
9
,
48
,
47
,
3
9
,
38
,
37
,
2
8
,
26
,
7
4
,
3
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
74
,
7
4
,
7
4
,
7
4
,
7
4
,
74
,
74
,
74
}
;
static
yyconst
flex_int16_t
yy_chk
[
1
66
]
=
static
yyconst
flex_int16_t
yy_chk
[
1
70
]
=
{
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
5
,
5
,
5
,
6
,
6
,
6
,
11
,
18
,
29
,
1
8
,
2
9
,
11
,
1
1
,
2
3
,
2
3
,
23
,
44
,
1
1
,
12
,
12
,
34
,
44
,
34
,
45
,
12
,
12
,
45
,
1
6
,
3
8
,
1
7
,
1
2
,
16
,
38
,
17
,
16
,
16
,
17
,
17
,
27
,
77
,
3
0
,
70
,
50
,
2
7
,
2
7
,
3
0
,
3
0
,
50
,
6
8
,
2
7
,
5
3
,
3
0
,
31
,
31
,
67
,
5
3
,
56
,
66
,
31
,
31
,
6
5
,
5
6
,
62
,
6
1
,
31
,
7
3
,
6
0
,
7
3
,
7
3
,
7
3
,
7
3
,
7
4
,
7
4
,
7
4
,
7
5
,
7
5
,
7
5
,
7
5
,
7
6
,
7
6
,
59
,
5
2
,
5
1
,
4
9
,
47
,
46
,
4
3
,
35
,
33
,
3
2
,
22
,
21
,
2
0
,
19
,
15
,
1
4
,
1
3
,
9
,
7
,
3
,
7
2
,
72
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
,
7
2
1
,
1
,
1
,
1
,
5
,
5
,
5
,
6
,
6
,
6
,
11
,
1
2
,
1
2
,
20
,
3
1
,
2
0
,
3
1
,
11
,
11
,
1
2
,
12
,
79
,
18
,
11
,
19
,
12
,
1
8
,
7
2
,
19
,
1
8
,
1
8
,
1
9
,
1
9
,
25
,
25
,
25
,
29
,
40
,
32
,
33
,
33
,
40
,
7
0
,
29
,
29
,
3
2
,
3
2
,
3
3
,
3
3
,
29
,
3
6
,
3
2
,
3
6
,
3
3
,
46
,
47
,
52
,
5
5
,
47
,
58
,
69
,
46
,
6
8
,
5
2
,
55
,
6
7
,
58
,
7
5
,
6
4
,
7
5
,
7
5
,
7
5
,
7
5
,
7
6
,
7
6
,
7
6
,
7
7
,
7
7
,
7
7
,
7
7
,
7
8
,
7
8
,
63
,
6
2
,
6
1
,
5
4
,
53
,
51
,
4
9
,
48
,
45
,
3
7
,
35
,
34
,
2
4
,
23
,
22
,
2
1
,
1
6
,
15
,
14
,
9
,
7
,
3
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
7
4
,
74
,
7
4
,
7
4
,
7
4
,
7
4
,
74
,
74
,
74
}
;
#define YY_TRAILING_MASK 0x2000
...
...
@@ -538,7 +539,7 @@ goto find_rule; \
LPH [A-Za-z_] Alphabetic character
LPHDGT [A-Za-z0-9_] Alphanumeric character
XPN [eE][+-]?[0-9]+ Real number Exponent */
#line 54
2
"expr_lex.cc"
#line 54
3
"expr_lex.cc"
#define INITIAL 0
...
...
@@ -831,7 +832,7 @@ YY_DECL
#line 36 "expr_lex.l"
#line 83
5
"expr_lex.cc"
#line 83
6
"expr_lex.cc"
while
(
/*CONSTCOND*/
1
)
/* loops until end-of-file is reached */
{
...
...
@@ -857,14 +858,14 @@ yy_match:
while
(
yy_chk
[
yy_base
[
yy_current_state
]
+
yy_c
]
!=
yy_current_state
)
{
yy_current_state
=
(
int
)
yy_def
[
yy_current_state
];
if
(
yy_current_state
>=
7
3
)
if
(
yy_current_state
>=
7
5
)
yy_c
=
yy_meta
[(
unsigned
int
)
yy_c
];
}
yy_current_state
=
yy_nxt
[
yy_base
[
yy_current_state
]
+
(
flex_int16_t
)
yy_c
];
*
yyg
->
yy_state_ptr
++
=
yy_current_state
;
++
yy_cp
;
}
while
(
yy_base
[
yy_current_state
]
!=
13
3
);
while
(
yy_base
[
yy_current_state
]
!=
13
5
);
yy_find_action:
yy_current_state
=
*--
yyg
->
yy_state_ptr
;
...
...
@@ -1040,22 +1041,32 @@ YY_RULE_SETUP
return
OR
;
YY_BREAK
case
21
:
/* rule 21 can match eol */
YY_RULE_SETUP
#line 9
9
"expr_lex.l"
;
/* ignore whitespace */
#line 9
8
"expr_lex.l"
return
QUESTION
;
YY_BREAK
case
22
:
YY_RULE_SETUP
#line 99 "expr_lex.l"
return
COLON
;
YY_BREAK
case
23
:
/* rule 23 can match eol */
YY_RULE_SETUP
#line 101 "expr_lex.l"
;
/* ignore whitespace */
YY_BREAK
case
24
:
YY_RULE_SETUP
#line 103 "expr_lex.l"
yyerror
(
NULL
,
NULL
,
"Unknown character"
);
YY_BREAK
case
2
3
:
case
2
5
:
YY_RULE_SETUP
#line 10
2
"expr_lex.l"
#line 10
4
"expr_lex.l"
ECHO
;
YY_BREAK
#line 10
59
"expr_lex.cc"
#line 10
70
"expr_lex.cc"
case
YY_STATE_EOF
(
INITIAL
):
yyterminate
();
...
...
@@ -1319,7 +1330,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
while
(
yy_chk
[
yy_base
[
yy_current_state
]
+
yy_c
]
!=
yy_current_state
)
{
yy_current_state
=
(
int
)
yy_def
[
yy_current_state
];
if
(
yy_current_state
>=
7
3
)
if
(
yy_current_state
>=
7
5
)
yy_c
=
yy_meta
[(
unsigned
int
)
yy_c
];
}
yy_current_state
=
yy_nxt
[
yy_base
[
yy_current_state
]
+
(
flex_int16_t
)
yy_c
];
...
...
@@ -1343,11 +1354,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
while
(
yy_chk
[
yy_base
[
yy_current_state
]
+
yy_c
]
!=
yy_current_state
)
{
yy_current_state
=
(
int
)
yy_def
[
yy_current_state
];
if
(
yy_current_state
>=
7
3
)
if
(
yy_current_state
>=
7
5
)
yy_c
=
yy_meta
[(
unsigned
int
)
yy_c
];
}
yy_current_state
=
yy_nxt
[
yy_base
[
yy_current_state
]
+
(
flex_int16_t
)
yy_c
];
yy_is_jam
=
(
yy_current_state
==
7
2
);
yy_is_jam
=
(
yy_current_state
==
7
4
);
if
(
!
yy_is_jam
)
*
yyg
->
yy_state_ptr
++
=
yy_current_state
;
...
...
@@ -2172,7 +2183,7 @@ void yyfree (void * ptr , yyscan_t yyscanner)
#define YYTABLES_NAME "yytables"
#line 10
2
"expr_lex.l"
#line 10
4
"expr_lex.l"
src/expr_lex.l
View file @
d41a95d5
...
...
@@ -82,7 +82,7 @@ M_E {
}
[-()=+*/;,{}^.
?:
] {
[-()=+*/;,{}^.] {
return *yytext;
}
...
...
@@ -95,6 +95,8 @@ M_E {
"!=" return NE;
"&&" return AND;
"||" return OR;
"?" return QUESTION;
":" return COLON;
[ \t\n\r]+ ; /* ignore whitespace */
...
...
src/expr_yacc.cc
View file @
d41a95d5
This diff is collapsed.
Click to expand it.
src/expr_yacc.h
View file @
d41a95d5
...
...
@@ -30,8 +30,8 @@
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
#ifndef YY_YY_EXPR_YACC_H_INCLUDED
# define YY_YY_EXPR_YACC_H_INCLUDED
#ifndef YY_YY_EXPR_YACC_H
H
_INCLUDED
# define YY_YY_EXPR_YACC_H
H
_INCLUDED
/* Debug traces. */
#ifndef YYDEBUG
# define YYDEBUG 0
...
...
@@ -48,36 +48,40 @@ extern int yydebug;
CONSTANT
=
258
,
VARIABLE
=
259
,
FUNCTION
=
260
,
REMOVE
=
261
,
PRINT
=
262
,
AND
=
263
,
OR
=
264
,
LEG
=
265
,
GE
=
266
,
LE
=
267
,
EQ
=
268
,
NE
=
269
,
GT
=
270
,
LT
=
271
,
UMINUS
=
272
QUESTION
=
261
,
COLON
=
262
,
REMOVE
=
263
,
PRINT
=
264
,
AND
=
265
,
OR
=
266
,
LEG
=
267
,
GE
=
268
,
LE
=
269
,
EQ
=
270
,
NE
=
271
,
GT
=
272
,
LT
=
273
,
UMINUS
=
274
};
#endif
/* Tokens. */
#define CONSTANT 258
#define VARIABLE 259
#define FUNCTION 260
#define REMOVE 261
#define PRINT 262
#define AND 263
#define OR 264
#define LEG 265
#define GE 266
#define LE 267
#define EQ 268
#define NE 269
#define GT 270
#define LT 271
#define UMINUS 272
#define QUESTION 261
#define COLON 262
#define REMOVE 263
#define PRINT 264
#define AND 265
#define OR 266
#define LEG 267
#define GE 268
#define LE 269
#define EQ 270
#define NE 271
#define GT 272
#define LT 273
#define UMINUS 274
/* Value type. */
...
...
@@ -85,4 +89,4 @@ extern int yydebug;
int
yyparse
(
parse_param_t
*
parse_arg
,
void
*
scanner
);
#endif
/* !YY_YY_EXPR_YACC_H_INCLUDED */
#endif
/* !YY_YY_EXPR_YACC_H
H
_INCLUDED */
src/expr_yacc.y
View file @
d41a95d5
/* http://epaperpress.com/lexandyacc/download/LexAndYaccTutorial.pdf */
/* bison -y -o expr_yacc.c -d expr_yacc.y */
%{
#include <stdio.h>
...
...
@@ -39,6 +41,7 @@ void freeNode(nodeType *p);
%token <cvalue> CONSTANT
%token <varnm> VARIABLE
%token <fname> FUNCTION
%token QUESTION COLON
%token REMOVE
%token PRINT
...
...
@@ -47,10 +50,9 @@ void freeNode(nodeType *p);
%left '+' '-'
%left '*' '/'
%precedence UMINUS
%right '?' ':'
%right '^'
%type <nPtr> stmt expr stmt_list
%type <nPtr> stmt expr stmt_list
ternary
%%
...
...
@@ -64,13 +66,14 @@ function:
;
stmt:
';' { $$ = expr_opr(';', 2, NULL, NULL); }
| expr ';' { $$ = $1; }
| VARIABLE '=' expr ';' { $$ = expr_opr('=', 2, expr_var($1), $3); }
| VARIABLE ';' { $$ = expr_opr('=', 2, expr_var($1), expr_var($1)); } /* conflicts: 1 shift/reduce */
| REMOVE VARIABLE ')' ';' { $$ = expr_com("remove", $2); }
| PRINT VARIABLE ')' ';' { $$ = expr_com("print", $2); }
| '{' stmt_list '}' { $$ = $2; }
';' { $$ = expr_opr(';', 2, NULL, NULL); }
| expr ';' { $$ = $1; }
| VARIABLE '=' expr ';' { $$ = expr_opr('=', 2, expr_var($1), $3); }
| VARIABLE '=' ternary ';' { $$ = expr_opr('=', 2, expr_var($1), $3); }
| VARIABLE ';' { $$ = expr_opr('=', 2, expr_var($1), expr_var($1)); } /* conflicts: 1 shift/reduce */
| REMOVE VARIABLE ')' ';' { $$ = expr_com("remove", $2); }
| PRINT VARIABLE ')' ';' { $$ = expr_com("print", $2); }
| '{' stmt_list '}' { $$ = $2; }
;
stmt_list:
...
...
@@ -96,13 +99,15 @@ expr:
| expr LEG expr { $$ = expr_opr(LEG, 2, $1, $3); }
| expr AND expr { $$ = expr_opr(AND, 2, $1, $3); }
| expr OR expr { $$ = expr_opr(OR, 2, $1, $3); }
| expr '?' expr ':' expr { $$ = expr_opr('?', 3, $1, $3, $5); }
| '(' expr ')' { $$ = $2; }
| FUNCTION '(' expr ',' '-' CONSTANT ')' { $$ = expr_fun1c($1, $3, - $6); }
| FUNCTION '(' expr ',' CONSTANT ')' { $$ = expr_fun1c($1, $3, $5); }
| FUNCTION '(' expr ')' { $$ = expr_fun($1, $3); }
;
ternary: expr QUESTION expr COLON expr { $$ = expr_opr('?', 3, $1, $3, $5); }
;
%%
#define SIZEOF_NODETYPE ((char *)&p->u.con - (char *)p)
...
...
src/yacc_lex
View file @
d41a95d5
# bison version 3.0.4; flex version 2.6.1
bison -W -y -r all -o expr_yacc.cc -d expr_yacc.y
flex -v -oexpr_lex.cc expr_lex.l
mv expr_yacc.hh expr_yacc.h
test/Expr.test.in
View file @
d41a95d5
...
...
@@ -56,7 +56,7 @@ function testfunc()
INSTR="_clev=clev(var130);pottemp=var130*((100000/_clev)^0.287);"
testfunc
#
INSTR="var1=
(
var129>0
)?(
var130-273.15
)
:var152;"
INSTR="var1=var129>0
?
var130-273.15:
1*
var152;"
testfunc
#
rm -f $CDOOUT $CDOERR
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment