diff --git a/repl/repl_main.c b/repl/repl_main.c index 3d539f5..5f21cd0 100644 --- a/repl/repl_main.c +++ b/repl/repl_main.c @@ -53,6 +53,7 @@ void repl() { Toy_Compiler compiler; Toy_initLexer(&lexer, input); + Toy_private_setComments(&lexer, false); //BUGFIX: disable comments here Toy_initParser(&parser, &lexer); Toy_initCompiler(&compiler); diff --git a/source/toy_lexer.c b/source/toy_lexer.c index af24bbe..3ed3b42 100644 --- a/source/toy_lexer.c +++ b/source/toy_lexer.c @@ -12,6 +12,7 @@ static void cleanLexer(Toy_Lexer* lexer) { lexer->start = 0; lexer->current = 0; lexer->line = 1; + lexer->commentsEnabled = true; } static bool isAtEnd(Toy_Lexer* lexer) { @@ -54,6 +55,10 @@ static void eatWhitespace(Toy_Lexer* lexer) { //comments case '/': + if (!lexer->commentsEnabled) { + return; + } + //eat the line if (peekNext(lexer) == '/') { while (advance(lexer) != '\n' && !isAtEnd(lexer)); @@ -372,3 +377,7 @@ void Toy_printToken(Toy_Token* token) { printf("\n"); } + +void Toy_private_setComments(Toy_Lexer* lexer, bool enabled) { + lexer->commentsEnabled = enabled; +} \ No newline at end of file diff --git a/source/toy_lexer.h b/source/toy_lexer.h index c7b544d..606fd01 100644 --- a/source/toy_lexer.h +++ b/source/toy_lexer.h @@ -9,6 +9,7 @@ typedef struct { int start; //start of the token int current; //current position of the lexer int line; //track this for error handling + bool commentsEnabled; //BUGFIX: enable comments (disabled in repl) } Toy_Lexer; //tokens are intermediaries between lexers and parsers @@ -24,3 +25,5 @@ Toy_Token Toy_scanLexer(Toy_Lexer* lexer); //for debugging void Toy_printToken(Toy_Token* token); + +void Toy_private_setComments(Toy_Lexer* lexer, bool enabled);