Parse double-quoted string literals
This commit is contained in:
parent
db216671c3
commit
a2ef543292
@ -427,5 +427,17 @@ namespace Parser.Tests
|
||||
Assert.AreEqual("a", (e.Operand as IdentifierNameNode)?.Token.PureToken.LiteralText);
|
||||
Assert.AreEqual(text, actual.FullText);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ParseDoubleQuotedStringLiteral()
|
||||
{
|
||||
var text = "\"some string\"";
|
||||
var sut = CreateParser(text);
|
||||
var actual = sut.ParseExpression();
|
||||
Assert.IsInstanceOf<DoubleQuotedStringLiteralNode>(actual);
|
||||
var s = (DoubleQuotedStringLiteralNode) actual;
|
||||
Assert.AreEqual("some string", s.Token.PureToken.Value);
|
||||
Assert.AreEqual(text, actual.FullText);
|
||||
}
|
||||
}
|
||||
}
|
@ -456,6 +456,11 @@ namespace Parser
|
||||
var str = EatToken();
|
||||
expression = Factory.StringLiteral(str);
|
||||
}
|
||||
else if (token.Kind == TokenKind.DoubleQuotedStringLiteral)
|
||||
{
|
||||
var str = EatToken();
|
||||
expression = Factory.DoubleQuotedStringLiteral(str);
|
||||
}
|
||||
else if (token.Kind == TokenKind.OpeningSquareBracket) // array literal expression
|
||||
{
|
||||
expression = ParseArrayLiteral();
|
||||
|
@ -245,6 +245,12 @@ namespace Parser
|
||||
return new StringLiteralNode(stringLiteral);
|
||||
}
|
||||
|
||||
public DoubleQuotedStringLiteralNode DoubleQuotedStringLiteral(
|
||||
Token stringLiteral)
|
||||
{
|
||||
return new DoubleQuotedStringLiteralNode(stringLiteral);
|
||||
}
|
||||
|
||||
public ExpressionStatementNode ExpressionStatement(ExpressionNode expression)
|
||||
{
|
||||
var children = new List<SyntaxNode> {expression};
|
||||
|
@ -315,6 +315,23 @@ namespace Parser
|
||||
|
||||
}
|
||||
|
||||
public class DoubleQuotedStringLiteralNode : ExpressionNode
|
||||
{
|
||||
public Token Token { get; }
|
||||
|
||||
public DoubleQuotedStringLiteralNode(Token token) : base(null)
|
||||
{
|
||||
Token = token;
|
||||
}
|
||||
|
||||
public override string FullText => Token.FullText;
|
||||
|
||||
public override IEnumerable<Token> ChildTokens
|
||||
{
|
||||
get { yield return Token; }
|
||||
}
|
||||
}
|
||||
|
||||
public class StatementNode : SyntaxNode
|
||||
{
|
||||
public TokenNode SemicolonOrComma { get; set; }
|
||||
|
Loading…
x
Reference in New Issue
Block a user