Refactor array element list parsing
This commit is contained in:
parent
0ba85620a6
commit
fa3d137fbe
@ -301,7 +301,7 @@ namespace Parser
|
||||
return expression;
|
||||
}
|
||||
var openingBrace = EatToken();
|
||||
var indices = ParseCellArrayElementList();
|
||||
var indices = ParseArrayElementList(TokenKind.ClosingBrace);
|
||||
var closingBrace = EatToken(TokenKind.ClosingBrace);
|
||||
expression = Factory.CellArrayElementAccessExpression(
|
||||
expression,
|
||||
@ -379,37 +379,11 @@ namespace Parser
|
||||
}
|
||||
}
|
||||
|
||||
private ArrayElementListNode ParseArrayElementList()
|
||||
private ArrayElementListNode ParseArrayElementList(TokenKind closing)
|
||||
{
|
||||
var nodes = new List<SyntaxNode> {};
|
||||
|
||||
while (CurrentToken.Kind != TokenKind.ClosingSquareBracket)
|
||||
{
|
||||
if (nodes.Count > 0)
|
||||
{
|
||||
if (CurrentToken.Kind == TokenKind.Comma
|
||||
|| CurrentToken.Kind == TokenKind.Semicolon)
|
||||
{
|
||||
nodes.Add(Factory.Token(EatToken()));
|
||||
}
|
||||
}
|
||||
|
||||
var expression = ParseExpression(new ParseOptions {ParsingArrayElements = true});
|
||||
if (expression != null)
|
||||
{
|
||||
nodes.Add(expression);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return Factory.ArrayElementList(nodes);
|
||||
}
|
||||
|
||||
private ArrayElementListNode ParseCellArrayElementList()
|
||||
{
|
||||
var nodes = new List<SyntaxNode> {};
|
||||
|
||||
while (CurrentToken.Kind != TokenKind.ClosingBrace)
|
||||
while (CurrentToken.Kind != closing)
|
||||
{
|
||||
if (nodes.Count > 0)
|
||||
{
|
||||
@ -433,7 +407,7 @@ namespace Parser
|
||||
private ArrayLiteralExpressionNode ParseArrayLiteral()
|
||||
{
|
||||
var openingSquareBracket = EatToken(TokenKind.OpeningSquareBracket);
|
||||
var elements = ParseArrayElementList();
|
||||
var elements = ParseArrayElementList(TokenKind.ClosingSquareBracket);
|
||||
var closingSquareBracket = EatToken(TokenKind.ClosingSquareBracket);
|
||||
return Factory.ArrayLiteralExpression(
|
||||
Factory.Token(openingSquareBracket),
|
||||
@ -444,7 +418,7 @@ namespace Parser
|
||||
private CellArrayLiteralExpressionNode ParseCellArrayLiteral()
|
||||
{
|
||||
var openingBrace = EatToken(TokenKind.OpeningBrace);
|
||||
var elements = ParseCellArrayElementList();
|
||||
var elements = ParseArrayElementList(TokenKind.ClosingBrace);
|
||||
var closingBrace = EatToken(TokenKind.ClosingBrace);
|
||||
return Factory.CellArrayLiteralExpression(
|
||||
Factory.Token(openingBrace),
|
||||
|
Loading…
x
Reference in New Issue
Block a user