summaryrefslogtreecommitdiff
path: root/minie
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2018-09-07 13:14:54 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2018-09-07 13:14:54 +0200
commitc34d5150cd44af39b12cf5af7ff627677bb82c02 (patch)
tree7c3f96ed532d2500268ce3bddd8e5ac530ab5615 /minie
parent6b354f74920750e3bb36748b439d09a85d8f3364 (diff)
downloadcompilertests-c34d5150cd44af39b12cf5af7ff627677bb82c02.tar.gz
compilertests-c34d5150cd44af39b12cf5af7ff627677bb82c02.tar.bz2
some easy sign handling in expressions
Diffstat (limited to 'minie')
-rw-r--r--minie/e2c.c6
-rw-r--r--minie/test4.e2
2 files changed, 7 insertions, 1 deletions
diff --git a/minie/e2c.c b/minie/e2c.c
index 8c33b0d..338695d 100644
--- a/minie/e2c.c
+++ b/minie/e2c.c
@@ -378,6 +378,12 @@ static void term( void )
static void expression( void )
{
+ if( sym == S_plus ) {
+ sym = getSym( );
+ } else if( sym == S_minus ) {
+ sym = getSym( );
+ emit( "-" );
+ }
term( );
while( sym == S_plus || sym == S_minus ) {
if( sym == S_plus ) emit( "+" );
diff --git a/minie/test4.e b/minie/test4.e
index 23c6278..303542b 100644
--- a/minie/test4.e
+++ b/minie/test4.e
@@ -7,6 +7,6 @@ var
begin
x := 7+4*(3-1/2);
- y := 22;
+ y := -22+(-x);
z := x;
end