From b7de165950a9efc51febeaf167a17b23f4d6e1c7 Mon Sep 17 00:00:00 2001 From: Bob Nystrom Date: Fri, 25 Oct 2013 20:07:04 -0700 Subject: [PATCH] Line comments. --- example/hello.wren | 2 +- src/compiler.c | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) 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);