forked from Mirror/wren
Line comments.
This commit is contained in:
@ -1,4 +1,4 @@
|
|||||||
class Foo {
|
class Foo { // line comment
|
||||||
bar {
|
bar {
|
||||||
123
|
123
|
||||||
}
|
}
|
||||||
|
|||||||
@ -123,6 +123,7 @@ static void readRawToken(Parser* parser);
|
|||||||
static void readName(Parser* parser);
|
static void readName(Parser* parser);
|
||||||
static void readNumber(Parser* parser);
|
static void readNumber(Parser* parser);
|
||||||
static void readString(Parser* parser);
|
static void readString(Parser* parser);
|
||||||
|
static void skipLineComment(Parser* parser);
|
||||||
static void skipWhitespace(Parser* parser);
|
static void skipWhitespace(Parser* parser);
|
||||||
static int isKeyword(Parser* parser, const char* keyword);
|
static int isKeyword(Parser* parser, const char* keyword);
|
||||||
static int isName(char c);
|
static int isName(char c);
|
||||||
@ -462,7 +463,15 @@ void readRawToken(Parser* parser)
|
|||||||
case '.': makeToken(parser, TOKEN_DOT); return;
|
case '.': makeToken(parser, TOKEN_DOT); return;
|
||||||
case ',': makeToken(parser, TOKEN_COMMA); return;
|
case ',': makeToken(parser, TOKEN_COMMA); return;
|
||||||
case '*': makeToken(parser, TOKEN_STAR); 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_PERCENT); return;
|
||||||
case '+': makeToken(parser, TOKEN_PLUS); return;
|
case '+': makeToken(parser, TOKEN_PLUS); return;
|
||||||
case '-':
|
case '-':
|
||||||
@ -594,6 +603,14 @@ void readString(Parser* parser)
|
|||||||
makeToken(parser, TOKEN_STRING);
|
makeToken(parser, TOKEN_STRING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void skipLineComment(Parser* parser)
|
||||||
|
{
|
||||||
|
while (peekChar(parser) != '\n' && peekChar(parser) != '\0')
|
||||||
|
{
|
||||||
|
advanceChar(parser);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void skipWhitespace(Parser* parser)
|
void skipWhitespace(Parser* parser)
|
||||||
{
|
{
|
||||||
while (peekChar(parser) == ' ') advanceChar(parser);
|
while (peekChar(parser) == ' ') advanceChar(parser);
|
||||||
|
|||||||
Reference in New Issue
Block a user