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("a", (e.Operand as IdentifierNameNode)?.Token.PureToken.LiteralText);
|
||||||
Assert.AreEqual(text, actual.FullText);
|
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();
|
var str = EatToken();
|
||||||
expression = Factory.StringLiteral(str);
|
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
|
else if (token.Kind == TokenKind.OpeningSquareBracket) // array literal expression
|
||||||
{
|
{
|
||||||
expression = ParseArrayLiteral();
|
expression = ParseArrayLiteral();
|
||||||
|
@ -245,6 +245,12 @@ namespace Parser
|
|||||||
return new StringLiteralNode(stringLiteral);
|
return new StringLiteralNode(stringLiteral);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DoubleQuotedStringLiteralNode DoubleQuotedStringLiteral(
|
||||||
|
Token stringLiteral)
|
||||||
|
{
|
||||||
|
return new DoubleQuotedStringLiteralNode(stringLiteral);
|
||||||
|
}
|
||||||
|
|
||||||
public ExpressionStatementNode ExpressionStatement(ExpressionNode expression)
|
public ExpressionStatementNode ExpressionStatement(ExpressionNode expression)
|
||||||
{
|
{
|
||||||
var children = new List<SyntaxNode> {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 class StatementNode : SyntaxNode
|
||||||
{
|
{
|
||||||
public TokenNode SemicolonOrComma { get; set; }
|
public TokenNode SemicolonOrComma { get; set; }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user