diff options
Diffstat (limited to 'minie')
-rw-r--r-- | minie/e2c.c | 4 | ||||
-rw-r--r-- | minie/ec.e | 1 |
2 files changed, 5 insertions, 0 deletions
diff --git a/minie/e2c.c b/minie/e2c.c index 6a78b0b..f1ba44b 100644 --- a/minie/e2c.c +++ b/minie/e2c.c @@ -407,6 +407,7 @@ static void prologue( void ) { emitLn( "/* generated with e2c */" ); emitLn( "#include <stdio.h>" ); + emitLn( "#include <stdlib.h>" ); } static void init( void ) @@ -567,6 +568,7 @@ static void parameterList( void ) /* TODO: no VAR parameters, strictly pass-by-value */ expression( ); while( sym == S_comma ) { + emit( ", " ); sym = getSym( ); /* TODO: no VAR parameters, strictly pass-by-value */ expression( ); @@ -588,6 +590,8 @@ static void statement( void ) /* TODO: add internal function maps as symbols and procedures */ if( strcmp( varName, "system.writeln" ) == 0 ) { emit( "printf( " ); + } else if( strcmp( varName, "system.halt" ) == 0 ) { + emit( "exit( " ); } else { emit( "%s( ", varName ); } @@ -17,4 +17,5 @@ end begin prologue( ); epilogue( ); + system.halt( 0 ); end |