summaryrefslogtreecommitdiff
path: root/minie
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2018-09-02 21:38:52 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2018-09-02 21:38:52 +0200
commit7cce459e7af6b3ee64a8f38de187e21786156aca (patch)
tree01eb6caca6f525dcdbdf98f484612c5900256d77 /minie
parent7a66db4c15f8e8661b9cb967be43cbbc67022b11 (diff)
downloadcompilertests-7cce459e7af6b3ee64a8f38de187e21786156aca.tar.gz
compilertests-7cce459e7af6b3ee64a8f38de187e21786156aca.tar.bz2
proper initialization and advancing of current lookahead symbol
Diffstat (limited to 'minie')
-rw-r--r--minie/e2c.c16
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( );
}