diff --git a/example/hello.wren b/example/hello.wren index 6b7095a9..197294c4 100644 --- a/example/hello.wren +++ b/example/hello.wren @@ -1,4 +1,4 @@ -class Foo { +class Foo { // line comment bar { 123 } diff --git a/src/compiler.c b/src/compiler.c index 3be31775..39d64557 100644 --- a/src/compiler.c +++ b/src/compiler.c @@ -123,6 +123,7 @@ static void readRawToken(Parser* parser); static void readName(Parser* parser); static void readNumber(Parser* parser); static void readString(Parser* parser); +static void skipLineComment(Parser* parser); static void skipWhitespace(Parser* parser); static int isKeyword(Parser* parser, const char* keyword); static int isName(char c); @@ -462,7 +463,15 @@ void readRawToken(Parser* parser) case '.': makeToken(parser, TOKEN_DOT); return; case ',': makeToken(parser, TOKEN_COMMA); return; case '*': makeToken(parser, TOKEN_STAR); return; - case '/': makeToken(parser, TOKEN_SLASH); return; + case '/': + if (peekChar(parser) == '/') + { + skipLineComment(parser); + break; + } + makeToken(parser, TOKEN_SLASH); + return; + case '%': makeToken(parser, TOKEN_PERCENT); return; case '+': makeToken(parser, TOKEN_PLUS); return; case '-': @@ -594,6 +603,14 @@ void readString(Parser* parser) makeToken(parser, TOKEN_STRING); } +void skipLineComment(Parser* parser) +{ + while (peekChar(parser) != '\n' && peekChar(parser) != '\0') + { + advanceChar(parser); + } +} + void skipWhitespace(Parser* parser) { while (peekChar(parser) == ' ') advanceChar(parser);