Style fixes
This commit is contained in:
parent
165cd35485
commit
c70e94d166
@ -13,7 +13,7 @@ namespace Parser.Binding
|
|||||||
{
|
{
|
||||||
private readonly DiagnosticsBag _diagnostics = new DiagnosticsBag();
|
private readonly DiagnosticsBag _diagnostics = new DiagnosticsBag();
|
||||||
|
|
||||||
private BoundProgram? BindProgramInternal(SyntaxTree syntaxTree)
|
private BoundProgram BindProgramInternal(SyntaxTree syntaxTree)
|
||||||
{
|
{
|
||||||
var boundRoot = BindRoot(syntaxTree.NullRoot);
|
var boundRoot = BindRoot(syntaxTree.NullRoot);
|
||||||
var statements = ((BoundBlockStatement)boundRoot.File.Body).Statements;
|
var statements = ((BoundBlockStatement)boundRoot.File.Body).Statements;
|
||||||
@ -31,7 +31,11 @@ namespace Parser.Binding
|
|||||||
{
|
{
|
||||||
_diagnostics.ReportMainIsNotAllowed(
|
_diagnostics.ReportMainIsNotAllowed(
|
||||||
f.Syntax.Span);
|
f.Syntax.Span);
|
||||||
return null;
|
return new BoundProgram(
|
||||||
|
_diagnostics.ToImmutableArray(),
|
||||||
|
mainFunction: null,
|
||||||
|
scriptFunction: null,
|
||||||
|
functions: functionsBuilder.ToImmutable());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,7 +74,7 @@ namespace Parser.Binding
|
|||||||
functionsBuilder.ToImmutable());
|
functionsBuilder.ToImmutable());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static BoundProgram? BindProgram(SyntaxTree syntaxTree)
|
public static BoundProgram BindProgram(SyntaxTree syntaxTree)
|
||||||
{
|
{
|
||||||
var binder = new Binder();
|
var binder = new Binder();
|
||||||
return binder.BindProgramInternal(syntaxTree);
|
return binder.BindProgramInternal(syntaxTree);
|
||||||
|
@ -858,46 +858,40 @@ namespace Parser.Internal
|
|||||||
List<SyntaxTrivia> leadingTrivia,
|
List<SyntaxTrivia> leadingTrivia,
|
||||||
List<SyntaxTrivia> trailingTrivia)
|
List<SyntaxTrivia> trailingTrivia)
|
||||||
{
|
{
|
||||||
switch (tokenInfo.Kind)
|
return tokenInfo.Kind switch
|
||||||
{
|
{
|
||||||
case TokenKind.IdentifierToken:
|
TokenKind.IdentifierToken => TokenFactory.CreateIdentifier(
|
||||||
return TokenFactory.CreateIdentifier(
|
|
||||||
tokenInfo.Text,
|
tokenInfo.Text,
|
||||||
leadingTrivia,
|
leadingTrivia,
|
||||||
trailingTrivia);
|
trailingTrivia),
|
||||||
case TokenKind.UnquotedStringLiteralToken:
|
TokenKind.UnquotedStringLiteralToken => TokenFactory.CreateUnquotedStringLiteral(
|
||||||
return TokenFactory.CreateUnquotedStringLiteral(
|
|
||||||
tokenInfo.Text,
|
tokenInfo.Text,
|
||||||
tokenInfo.StringValue,
|
tokenInfo.StringValue,
|
||||||
leadingTrivia,
|
leadingTrivia,
|
||||||
trailingTrivia);
|
trailingTrivia),
|
||||||
case TokenKind.NumberLiteralToken:
|
TokenKind.NumberLiteralToken => TokenFactory.CreateTokenWithValueAndTrivia<double>(
|
||||||
return TokenFactory.CreateTokenWithValueAndTrivia<double>(
|
|
||||||
tokenInfo.Kind,
|
tokenInfo.Kind,
|
||||||
tokenInfo.Text,
|
tokenInfo.Text,
|
||||||
tokenInfo.DoubleValue,
|
tokenInfo.DoubleValue,
|
||||||
leadingTrivia,
|
leadingTrivia,
|
||||||
trailingTrivia);
|
trailingTrivia),
|
||||||
case TokenKind.StringLiteralToken:
|
TokenKind.StringLiteralToken => TokenFactory.CreateTokenWithValueAndTrivia<string>(
|
||||||
return TokenFactory.CreateTokenWithValueAndTrivia<string>(
|
|
||||||
tokenInfo.Kind,
|
tokenInfo.Kind,
|
||||||
tokenInfo.Text,
|
tokenInfo.Text,
|
||||||
tokenInfo.StringValue,
|
tokenInfo.StringValue,
|
||||||
leadingTrivia,
|
leadingTrivia,
|
||||||
trailingTrivia);
|
trailingTrivia),
|
||||||
case TokenKind.DoubleQuotedStringLiteralToken:
|
TokenKind.DoubleQuotedStringLiteralToken => TokenFactory.CreateTokenWithValueAndTrivia<string>(
|
||||||
return TokenFactory.CreateTokenWithValueAndTrivia<string>(
|
|
||||||
tokenInfo.Kind,
|
tokenInfo.Kind,
|
||||||
tokenInfo.Text,
|
tokenInfo.Text,
|
||||||
tokenInfo.StringValue,
|
tokenInfo.StringValue,
|
||||||
leadingTrivia,
|
leadingTrivia,
|
||||||
trailingTrivia);
|
trailingTrivia),
|
||||||
default:
|
_ => TokenFactory.CreateTokenWithTrivia(
|
||||||
return TokenFactory.CreateTokenWithTrivia(
|
|
||||||
tokenInfo.Kind,
|
tokenInfo.Kind,
|
||||||
leadingTrivia,
|
leadingTrivia,
|
||||||
trailingTrivia);
|
trailingTrivia),
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<(SyntaxToken, Position)> ParseAll()
|
public List<(SyntaxToken, Position)> ParseAll()
|
||||||
|
@ -76,17 +76,6 @@ namespace Parser.Internal
|
|||||||
return token;
|
return token;
|
||||||
}
|
}
|
||||||
|
|
||||||
private SyntaxToken? PossiblyEatIdentifier(string s)
|
|
||||||
{
|
|
||||||
var token = CurrentToken;
|
|
||||||
if (token.Kind == TokenKind.IdentifierToken && token.Text == s)
|
|
||||||
{
|
|
||||||
return EatToken();
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private SyntaxToken EatPossiblyMissingIdentifier(string s)
|
private SyntaxToken EatPossiblyMissingIdentifier(string s)
|
||||||
{
|
{
|
||||||
var token = CurrentToken;
|
var token = CurrentToken;
|
||||||
@ -300,43 +289,20 @@ namespace Parser.Internal
|
|||||||
return builder.ToList();
|
return builder.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
private ExpressionSyntaxNode? ParseTerm(ParseOptions options)
|
private ExpressionSyntaxNode ParseTerm(ParseOptions options)
|
||||||
{
|
{
|
||||||
var token = CurrentToken;
|
var token = CurrentToken;
|
||||||
ExpressionSyntaxNode? expression = null;
|
ExpressionSyntaxNode expression = token.Kind switch
|
||||||
switch (token.Kind)
|
|
||||||
{
|
{
|
||||||
case TokenKind.NumberLiteralToken:
|
TokenKind.NumberLiteralToken => Factory.NumberLiteralExpressionSyntax(EatToken()),
|
||||||
expression = Factory.NumberLiteralExpressionSyntax(EatToken());
|
TokenKind.StringLiteralToken => Factory.StringLiteralExpressionSyntax(EatToken()),
|
||||||
break;
|
TokenKind.DoubleQuotedStringLiteralToken => Factory.DoubleQuotedStringLiteralExpressionSyntax(EatToken()),
|
||||||
case TokenKind.StringLiteralToken:
|
TokenKind.OpenSquareBracketToken => ParseArrayLiteral(),
|
||||||
expression = Factory.StringLiteralExpressionSyntax(EatToken());
|
TokenKind.OpenBraceToken => ParseCellArrayLiteral(),
|
||||||
break;
|
TokenKind.ColonToken => Factory.EmptyExpressionSyntax(),
|
||||||
case TokenKind.DoubleQuotedStringLiteralToken:
|
TokenKind.OpenParenthesisToken => ParseParenthesizedExpression(),
|
||||||
expression = Factory.DoubleQuotedStringLiteralExpressionSyntax(EatToken());
|
_ => Factory.IdentifierNameExpressionSyntax(EatToken(TokenKind.IdentifierToken)),
|
||||||
break;
|
};
|
||||||
case TokenKind.OpenSquareBracketToken:
|
|
||||||
expression = ParseArrayLiteral();
|
|
||||||
break;
|
|
||||||
case TokenKind.OpenBraceToken:
|
|
||||||
expression = ParseCellArrayLiteral();
|
|
||||||
break;
|
|
||||||
case TokenKind.ColonToken:
|
|
||||||
expression = Factory.EmptyExpressionSyntax();
|
|
||||||
break;
|
|
||||||
case TokenKind.OpenParenthesisToken:
|
|
||||||
expression = ParseParenthesizedExpression();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
var id = EatToken(TokenKind.IdentifierToken);
|
|
||||||
expression = Factory.IdentifierNameExpressionSyntax(id);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (expression == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return ParsePostfix(options, expression);
|
return ParsePostfix(options, expression);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -599,10 +565,6 @@ namespace Parser.Internal
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
lhs = ParseTerm(options);
|
lhs = ParseTerm(options);
|
||||||
if (lhs is null)
|
|
||||||
{
|
|
||||||
throw new Exception("Left-hand side in subexpression cannot be empty.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
@ -858,8 +820,7 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
private bool TriviaContainsNewLine(GreenNode? trivia)
|
private bool TriviaContainsNewLine(GreenNode? trivia)
|
||||||
{
|
{
|
||||||
var triviaList = trivia as SyntaxList<SyntaxTrivia>;
|
if (trivia is not SyntaxList<SyntaxTrivia> triviaList)
|
||||||
if (triviaList is null)
|
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -121,11 +121,11 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
public override GreenNode? GetSlot(int i)
|
public override GreenNode? GetSlot(int i)
|
||||||
{
|
{
|
||||||
switch (i)
|
return i switch
|
||||||
{
|
{
|
||||||
case 0: return _file;
|
0 => _file,
|
||||||
default: return null;
|
_ => null,
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public override GreenNode SetDiagnostics(TokenDiagnostic[] diagnostics)
|
public override GreenNode SetDiagnostics(TokenDiagnostic[] diagnostics)
|
||||||
|
@ -13,7 +13,7 @@ namespace Parser.MFunctions
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int Len(MObject? obj)
|
public static int Len(MObject obj)
|
||||||
{
|
{
|
||||||
return obj switch
|
return obj switch
|
||||||
{
|
{
|
||||||
|
@ -51,7 +51,7 @@ namespace Parser
|
|||||||
|
|
||||||
public override bool Equals(object? obj)
|
public override bool Equals(object? obj)
|
||||||
{
|
{
|
||||||
if (ReferenceEquals(null, obj)) return false;
|
if (obj is null) return false;
|
||||||
return obj is SyntaxToken token && Equals(token);
|
return obj is SyntaxToken token && Equals(token);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,8 +58,7 @@ namespace Semantics
|
|||||||
|
|
||||||
public static MClass FromTree(FileSyntaxNode tree, string fileName)
|
public static MClass FromTree(FileSyntaxNode tree, string fileName)
|
||||||
{
|
{
|
||||||
var classDeclaration = tree.Body.Statements[0].AsNode() as ClassDeclarationSyntaxNode;
|
if (tree.Body.Statements[0].AsNode() is not ClassDeclarationSyntaxNode classDeclaration)
|
||||||
if (classDeclaration == null)
|
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ namespace cmi
|
|||||||
var child = children[index];
|
var child = children[index];
|
||||||
if (child.IsNode)
|
if (child.IsNode)
|
||||||
{
|
{
|
||||||
RenderNode(child.AsNode(), indent, index == last);
|
RenderNode(child.AsNode()!, indent, index == last);
|
||||||
}
|
}
|
||||||
else if (child.IsToken)
|
else if (child.IsToken)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user