1
0
forked from Mirror/wren

Line comments.

This commit is contained in:
Bob Nystrom
2013-10-25 20:07:04 -07:00
parent 32f8c412c7
commit b7de165950
2 changed files with 19 additions and 2 deletions

View File

@ -1,4 +1,4 @@
class Foo {
class Foo { // line comment
bar {
123
}

View File

@ -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);