Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
OpenGEODE
Commits
023b0538
Commit
023b0538
authored
Jul 04, 2014
by
Maxime Perrotin
Browse files
Bigfix on op_minus operator
parent
0519ff0a
Changes
3
Hide whitespace changes
Inline
Side-by-side
ogParser.py
View file @
023b0538
...
...
@@ -685,11 +685,7 @@ def compare_types(type_a, type_b):
raise
TypeError
(
'One type is an REAL, not the other one'
)
elif
all
(
side
.
kind
.
startswith
(
'Integer'
)
for
side
in
(
type_a
,
type_b
))
\
or
all
(
side
.
kind
==
'RealType'
for
side
in
(
type_a
,
type_b
)):
pass
# XXX no need for type check here, only at assignments
# if float(type_b.Min) < float(type_a.Min) \
# or float(type_b.Max) > float(type_a.Max):
# raise TypeError('Range [{}..{}] incompatible with range [{}..{}]'
# .format(type_b.Min, type_b.Max, type_a.Min, type_a.Max))
pass
else
:
return
...
...
@@ -1291,7 +1287,6 @@ def primary(root, context):
prim
.
inputString
=
get_input_string
(
root
)
prim
.
line
=
root
.
getLine
()
prim
.
charPositionInLine
=
root
.
getCharPositionInLine
()
prim
.
op_not
,
prim
.
op_minus
=
op_not
,
op_minus
if
op_not
:
prim
.
op_not
=
True
if
op_minus
:
...
...
tests/regression/test6/expected
View file @
023b0538
[C Code] Running test
0
-2 is FALSE
2 2 1
FALSE TRUE
...
...
tests/regression/test6/myfunction.pr
View file @
023b0538
...
...
@@ -19,6 +19,7 @@ DCL def_val MySeq := { a 3, b taste };
dcl someReal MyReal := 1.5;
dcl largeReal LargerReal := 0.0;
dcl someInt t_uInt8 := 2;
dcl otherint T_uint8 := 1;
-- To test 'op_not'
dcl opnot T_boolean := not true;
...
...
@@ -44,73 +45,75 @@ endfor;
ENDPROCEDURE;
/* CIF START (591, 0), (100, 50) */
START;
/* CIF PROCEDURECALL (430, 65), (421, 35) */
/* CIF PROCEDURECALL (552, 65), (177, 35) */
CALL writeln(1 + (-otherint));
/* CIF PROCEDURECALL (430, 115), (421, 35) */
CALL writeln(-someint, if someint>0 then ' is ' else 'Foo' fi, not true);
/* CIF PROCEDURECALL (514, 1
1
5), (254, 35) */
/* CIF PROCEDURECALL (514, 1
6
5), (254, 35) */
CALL write(if someint>0 then 2 else 1 fi);
/* CIF PROCEDURECALL (496, 1
6
5), (289, 35) */
/* CIF PROCEDURECALL (496,
2
15), (289, 35) */
CALL write(if someint>0 then someint else 1 fi);
/* CIF PROCEDURECALL (577, 2
1
5), (128, 35) */
/* CIF PROCEDURECALL (577, 2
6
5), (128, 35) */
CALL writeln(bar(1));
/* CIF PROCEDURECALL (532,
26
5), (217, 35) */
/* CIF PROCEDURECALL (532,
31
5), (217, 35) */
CALL writeln(opnot, ' ', not opnot);
/* CIF TASK (480, 3
1
5), (321, 35) */
/* CIF TASK (480, 3
6
5), (321, 35) */
TASK someInt := if someint = 0 then someint else 0 fi;
/* CIF DECISION (504,
36
5), (273, 87) */
/* CIF DECISION (504,
41
5), (273, 87) */
DECISION someint /=0 and then (10 / someInt > 0)
or else someint = 0
/* CIF COMMENT (793,
37
4), (179, 68) */
/* CIF COMMENT (793,
42
4), (179, 68) */
COMMENT 'Using "and else" is the
short-circuit form. The
second part should not
be evaluated.';
/* CIF ANSWER (561,
47
2), (70, 23) */
/* CIF ANSWER (561,
52
2), (70, 23) */
(true):
/* CIF TASK (541, 5
1
0), (110, 35) */
/* CIF TASK (541, 5
6
0), (110, 35) */
TASK someInt := 2;
/* CIF PROCEDURECALL (537,
5
60), (117, 38) */
/* CIF PROCEDURECALL (537, 6
1
0), (117, 38) */
CALL writeln('OK');
/* CIF ANSWER (664,
47
2), (70, 23) */
/* CIF ANSWER (664,
52
2), (70, 23) */
(false):
ENDDECISION;
/* CIF NEXTSTATE (608, 6
1
3), (65, 33) */
/* CIF NEXTSTATE (608, 6
6
3), (65, 33) */
NEXTSTATE Wait;
/* CIF STATE (608, 6
1
3), (65, 33) */
/* CIF STATE (608, 6
6
3), (65, 33) */
STATE Wait;
/* CIF INPUT (865,
66
6), (89, 33) */
/* CIF INPUT (865,
71
6), (89, 33) */
INPUT mytimer;
/* CIF PROCEDURECALL (818, 7
1
4), (182, 33) */
/* CIF PROCEDURECALL (818, 7
6
4), (182, 33) */
CALL writeln('timer expired');
/* CIF PROCEDURECALL (829,
76
2), (160, 33) */
/* CIF PROCEDURECALL (829,
81
2), (160, 33) */
CALL factorial(3, someint);
/* CIF NEXTSTATE (877, 8
1
0), (65, 33) */
/* CIF NEXTSTATE (877, 8
6
0), (65, 33) */
NEXTSTATE Wait;
/* CIF INPUT (421,
66
6), (181, 33) */
/* CIF INPUT (421,
71
6), (181, 33) */
INPUT start_something (toto);
/* CIF OUTPUT (376, 7
1
4), (270, 33) */
/* CIF OUTPUT (376, 7
6
4), (270, 33) */
OUTPUT result_data((toto+1) mod 2147483647);
/* CIF PROCEDURECALL (436,
76
2), (150, 48) */
/* CIF PROCEDURECALL (436,
81
2), (150, 48) */
CALL writeln
('Hello Toto', toto);
/* CIF PROCEDURECALL (413, 8
2
5), (196, 33) */
/* CIF PROCEDURECALL (413, 8
7
5), (196, 33) */
CALL set_timer(1000, myTimer);
/* CIF TASK (346,
87
3), (330, 35) */
/* CIF TASK (346,
92
3), (330, 35) */
TASK largeReal := power(someReal, 2);
/* CIF PROCEDURECALL (282, 9
2
3), (458, 35) */
/* CIF PROCEDURECALL (282, 9
7
3), (458, 35) */
CALL writeln(someReal, ' ** 2' , ' == ', largeReal, ' (should be 2.25 )');
/* CIF TASK (411,
97
3), (201, 35) */
/* CIF TASK (411,
102
3), (201, 35) */
TASK someReal := float(someInt);
/* CIF TASK (391, 10
2
3), (241, 35) */
/* CIF TASK (391, 10
7
3), (241, 35) */
TASK someInt := fix(someReal) mod 255;
/* CIF TASK (435, 1
07
3), (152, 35) */
/* CIF TASK (435, 1
12
3), (152, 35) */
TASK opnot := not opnot;
/* CIF TASK (430, 11
2
3), (163, 35) */
/* CIF TASK (430, 11
7
3), (163, 35) */
TASK 'someint := -someint'
/* CIF COMMENT (613, 11
2
3), (196, 35) */
/* CIF COMMENT (613, 11
7
3), (196, 35) */
COMMENT 'XXX should raise an error!';
/* CIF TASK (429, 1
17
3), (164, 35) */
/* CIF TASK (429, 1
22
3), (164, 35) */
TASK someint := (-8) mod 5;
/* CIF NEXTSTATE (480, 12
2
3), (63, 33) */
/* CIF NEXTSTATE (480, 12
7
3), (63, 33) */
NEXTSTATE wait;
ENDSTATE;
ENDPROCESS myfunction;
\ No newline at end of file
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