diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2018-09-02 21:38:52 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2018-09-02 21:38:52 +0200 |
commit | 7cce459e7af6b3ee64a8f38de187e21786156aca (patch) | |
tree | 01eb6caca6f525dcdbdf98f484612c5900256d77 /minie | |
parent | 7a66db4c15f8e8661b9cb967be43cbbc67022b11 (diff) | |
download | compilertests-7cce459e7af6b3ee64a8f38de187e21786156aca.tar.gz compilertests-7cce459e7af6b3ee64a8f38de187e21786156aca.tar.bz2 |
proper initialization and advancing of current lookahead symbol
Diffstat (limited to 'minie')
-rw-r--r-- | minie/e2c.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/minie/e2c.c b/minie/e2c.c index 197c222..aca18e3 100644 --- a/minie/e2c.c +++ b/minie/e2c.c @@ -111,7 +111,6 @@ static void identifier( ) static Symbol getSym( ) { - look = getChar( ); skipWhite( ); ident[0] = '\0'; switch( look ) { @@ -121,7 +120,7 @@ static Symbol getSym( ) if( strcmp( ident, "begin" ) == 0 ) { return S_begin; } - break; + return S_ident; case 'c': case 'd': case 'e': @@ -129,7 +128,7 @@ static Symbol getSym( ) if( strcmp( ident, "end" ) == 0 ) { return S_end; } - break; + return S_ident; case 'f': case 'g': case 'h': @@ -138,13 +137,13 @@ static Symbol getSym( ) case 'k': case 'l': identifier( ); - break; + return S_ident; case 'm': identifier( ); if( strcmp( ident, "module" ) == 0 ) { return S_module; } - break; + return S_ident; case 'n': case 'o': case 'p': @@ -185,8 +184,9 @@ static Symbol getSym( ) case 'Y': case 'Z': identifier( ); - break; + return S_ident; case ';': + look = getChar( ); return S_semicolon; case EOF: return S_eof; @@ -223,7 +223,7 @@ static void prologue( void ) static void init( void ) { - look = 0; + look = getChar( ); col = 1; row = 1; ident[0] = '\0'; @@ -243,7 +243,7 @@ static void block( void ) static void module( void ) { Expect( S_module ); - identifier( ); + Expect( S_ident ); Expect( S_semicolon ); block( ); } |