forked from Mirror/wren
Line comments.
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
class Foo {
|
||||
class Foo { // line comment
|
||||
bar {
|
||||
123
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
Reference in New Issue
Block a user