Extra spaces before { can't be ignored
This commit is contained in:
parent
161ee42c81
commit
356b4d4eea
@ -282,6 +282,10 @@ namespace Parser
|
|||||||
var token = CurrentToken;
|
var token = CurrentToken;
|
||||||
switch(token.Kind) {
|
switch(token.Kind) {
|
||||||
case TokenKind.OpeningBrace: // cell array element access
|
case TokenKind.OpeningBrace: // cell array element access
|
||||||
|
if (expression.TrailingTrivia.Any())
|
||||||
|
{
|
||||||
|
return expression;
|
||||||
|
}
|
||||||
var openingBrace = EatToken();
|
var openingBrace = EatToken();
|
||||||
var index = ParseExpression();
|
var index = ParseExpression();
|
||||||
var closingBrace = EatToken(TokenKind.ClosingBrace);
|
var closingBrace = EatToken(TokenKind.ClosingBrace);
|
||||||
@ -439,6 +443,10 @@ namespace Parser
|
|||||||
expression = ParseParenthesizedExpression();
|
expression = ParseParenthesizedExpression();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (expression == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
return ParsePostfix(expression);
|
return ParsePostfix(expression);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,6 +9,9 @@ namespace Parser
|
|||||||
public SyntaxNode Parent { get; set; }
|
public SyntaxNode Parent { get; set; }
|
||||||
public List<SyntaxNode> Children { get; }
|
public List<SyntaxNode> Children { get; }
|
||||||
|
|
||||||
|
public virtual IEnumerable<Token> ChildTokens =>
|
||||||
|
Children.SelectMany(c => c.ChildTokens);
|
||||||
|
|
||||||
public SyntaxNode(List<SyntaxNode> children)
|
public SyntaxNode(List<SyntaxNode> children)
|
||||||
{
|
{
|
||||||
Children = children;
|
Children = children;
|
||||||
@ -16,6 +19,23 @@ namespace Parser
|
|||||||
|
|
||||||
public virtual string FullText =>
|
public virtual string FullText =>
|
||||||
string.Join("", Children.Select(c => c.FullText));
|
string.Join("", Children.Select(c => c.FullText));
|
||||||
|
|
||||||
|
public List<Trivia> TrailingTrivia
|
||||||
|
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (ChildTokens.Any())
|
||||||
|
{
|
||||||
|
return ChildTokens.Last().TrailingTrivia;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return new List<Trivia>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class TokenNode : SyntaxNode
|
public class TokenNode : SyntaxNode
|
||||||
@ -29,6 +49,11 @@ namespace Parser
|
|||||||
}
|
}
|
||||||
|
|
||||||
public override string FullText => Token.FullText;
|
public override string FullText => Token.FullText;
|
||||||
|
|
||||||
|
public override IEnumerable<Token> ChildTokens
|
||||||
|
{
|
||||||
|
get { yield return Token; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class OutputIdentifierNode : SyntaxNode
|
public class OutputIdentifierNode : SyntaxNode
|
||||||
@ -243,6 +268,12 @@ namespace Parser
|
|||||||
}
|
}
|
||||||
|
|
||||||
public override string FullText => Token.FullText;
|
public override string FullText => Token.FullText;
|
||||||
|
|
||||||
|
public override IEnumerable<Token> ChildTokens
|
||||||
|
{
|
||||||
|
get { yield return Token; }
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class NumberLiteralNode : ExpressionNode
|
public class NumberLiteralNode : ExpressionNode
|
||||||
@ -255,6 +286,12 @@ namespace Parser
|
|||||||
}
|
}
|
||||||
|
|
||||||
public override string FullText => Token.FullText;
|
public override string FullText => Token.FullText;
|
||||||
|
|
||||||
|
public override IEnumerable<Token> ChildTokens
|
||||||
|
{
|
||||||
|
get { yield return Token; }
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class StringLiteralNode : ExpressionNode
|
public class StringLiteralNode : ExpressionNode
|
||||||
@ -267,6 +304,12 @@ namespace Parser
|
|||||||
}
|
}
|
||||||
|
|
||||||
public override string FullText => Token.FullText;
|
public override string FullText => Token.FullText;
|
||||||
|
|
||||||
|
public override IEnumerable<Token> ChildTokens
|
||||||
|
{
|
||||||
|
get { yield return Token; }
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class StatementNode : SyntaxNode
|
public class StatementNode : SyntaxNode
|
||||||
@ -397,6 +440,12 @@ namespace Parser
|
|||||||
public EmptyExpressionNode() : base(null)
|
public EmptyExpressionNode() : base(null)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override IEnumerable<Token> ChildTokens
|
||||||
|
{
|
||||||
|
get { yield break; }
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class MemberAccessNode : ExpressionNode
|
public class MemberAccessNode : ExpressionNode
|
||||||
|
Loading…
x
Reference in New Issue
Block a user