Rename TokenKinds for consistency
This commit is contained in:
parent
1c37559d9e
commit
5eb63a00e0
@ -53,7 +53,7 @@ namespace ConsoleDemo
|
|||||||
{
|
{
|
||||||
switch (token.Kind)
|
switch (token.Kind)
|
||||||
{
|
{
|
||||||
case TokenKind.Comma:
|
case TokenKind.CommaToken:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -150,7 +150,7 @@ namespace ProjectConsole
|
|||||||
if (nodeOrToken.IsToken)
|
if (nodeOrToken.IsToken)
|
||||||
{
|
{
|
||||||
var token = nodeOrToken.AsToken();
|
var token = nodeOrToken.AsToken();
|
||||||
if (token.Kind == TokenKind.Identifier)
|
if (token.Kind == TokenKind.IdentifierToken)
|
||||||
{
|
{
|
||||||
OutputIdentifier(token);
|
OutputIdentifier(token);
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ namespace Parser.Tests
|
|||||||
private IEnumerable<Internal.SyntaxToken> ParseText(string text)
|
private IEnumerable<Internal.SyntaxToken> ParseText(string text)
|
||||||
{
|
{
|
||||||
var lexer = new MLexerGreen(new TextWindowWithNull(text));
|
var lexer = new MLexerGreen(new TextWindowWithNull(text));
|
||||||
return lexer.ParseAll().Select(x => x.Item1).Where(x => x.Kind != TokenKind.EndOfFile);
|
return lexer.ParseAll().Select(x => x.Item1).Where(x => x.Kind != TokenKind.EndOfFileToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
@ -40,12 +40,12 @@ namespace Parser.Tests
|
|||||||
{
|
{
|
||||||
var text = text1 + separatorText + text2;
|
var text = text1 + separatorText + text2;
|
||||||
var tokens = ParseText(text).ToArray();
|
var tokens = ParseText(text).ToArray();
|
||||||
if (kind1 == TokenKind.Identifier && !ContainsNewLine(separatorText))
|
if (kind1 == TokenKind.IdentifierToken && !ContainsNewLine(separatorText))
|
||||||
{
|
{
|
||||||
Assert.Equal(TokenKind.Identifier, tokens[0].Kind);
|
Assert.Equal(TokenKind.IdentifierToken, tokens[0].Kind);
|
||||||
foreach (var token in tokens.Skip(1))
|
foreach (var token in tokens.Skip(1))
|
||||||
{
|
{
|
||||||
Assert.Equal(TokenKind.UnquotedStringLiteral, token.Kind);
|
Assert.Equal(TokenKind.UnquotedStringLiteralToken, token.Kind);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -85,20 +85,20 @@ namespace Parser.Tests
|
|||||||
.Where(t => !(SyntaxFacts.IsUnaryTokenKind(t.kind)
|
.Where(t => !(SyntaxFacts.IsUnaryTokenKind(t.kind)
|
||||||
|| SyntaxFacts.IsOpeningToken(t.kind)
|
|| SyntaxFacts.IsOpeningToken(t.kind)
|
||||||
|| SyntaxFacts.IsClosingToken(t.kind)
|
|| SyntaxFacts.IsClosingToken(t.kind)
|
||||||
|| t.kind == TokenKind.Transpose));
|
|| t.kind == TokenKind.ApostropheToken));
|
||||||
|
|
||||||
|
|
||||||
var dynamicTokens = new[]
|
var dynamicTokens = new[]
|
||||||
{
|
{
|
||||||
(TokenKind.Identifier, "a"),
|
(TokenKind.IdentifierToken, "a"),
|
||||||
(TokenKind.Identifier, "abc"),
|
(TokenKind.IdentifierToken, "abc"),
|
||||||
(TokenKind.NumberLiteral, "1"),
|
(TokenKind.NumberLiteralToken, "1"),
|
||||||
(TokenKind.NumberLiteral, "123"),
|
(TokenKind.NumberLiteralToken, "123"),
|
||||||
(TokenKind.NumberLiteral, "145.67"),
|
(TokenKind.NumberLiteralToken, "145.67"),
|
||||||
(TokenKind.NumberLiteral, "14.5e-3"),
|
(TokenKind.NumberLiteralToken, "14.5e-3"),
|
||||||
(TokenKind.NumberLiteral, "3.14e8"),
|
(TokenKind.NumberLiteralToken, "3.14e8"),
|
||||||
(TokenKind.StringLiteral, "'what is that'"),
|
(TokenKind.StringLiteralToken, "'what is that'"),
|
||||||
(TokenKind.DoubleQuotedStringLiteral, "\"Another ' string\"")
|
(TokenKind.DoubleQuotedStringLiteralToken, "\"Another ' string\"")
|
||||||
};
|
};
|
||||||
return fixedTokens.Concat(dynamicTokens);
|
return fixedTokens.Concat(dynamicTokens);
|
||||||
}
|
}
|
||||||
@ -136,127 +136,127 @@ namespace Parser.Tests
|
|||||||
|
|
||||||
private static bool RequiresSeparator(TokenKind kind1, TokenKind kind2)
|
private static bool RequiresSeparator(TokenKind kind1, TokenKind kind2)
|
||||||
{
|
{
|
||||||
if (kind1 == TokenKind.Less && kind2 == TokenKind.Equality)
|
if (kind1 == TokenKind.LessToken && kind2 == TokenKind.EqualsEqualsToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.Less && kind2 == TokenKind.Assignment)
|
if (kind1 == TokenKind.LessToken && kind2 == TokenKind.EqualsToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.Greater && kind2 == TokenKind.Equality)
|
if (kind1 == TokenKind.GreaterToken && kind2 == TokenKind.EqualsEqualsToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.Greater && kind2 == TokenKind.Assignment)
|
if (kind1 == TokenKind.GreaterToken && kind2 == TokenKind.EqualsToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.Not && kind2 == TokenKind.Assignment)
|
if (kind1 == TokenKind.TildeToken && kind2 == TokenKind.EqualsToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.Not && kind2 == TokenKind.Equality)
|
if (kind1 == TokenKind.TildeToken && kind2 == TokenKind.EqualsEqualsToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.Assignment && kind2 == TokenKind.Assignment)
|
if (kind1 == TokenKind.EqualsToken && kind2 == TokenKind.EqualsToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.Assignment && kind2 == TokenKind.Equality)
|
if (kind1 == TokenKind.EqualsToken && kind2 == TokenKind.EqualsEqualsToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.BitwiseAnd && kind2 == TokenKind.LogicalAnd)
|
if (kind1 == TokenKind.AmpersandToken && kind2 == TokenKind.AmpersandAmpersandToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.BitwiseAnd && kind2 == TokenKind.BitwiseAnd)
|
if (kind1 == TokenKind.AmpersandToken && kind2 == TokenKind.AmpersandToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.BitwiseOr && kind2 == TokenKind.LogicalOr)
|
if (kind1 == TokenKind.PipeToken && kind2 == TokenKind.PipePipeToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.BitwiseOr && kind2 == TokenKind.BitwiseOr)
|
if (kind1 == TokenKind.PipeToken && kind2 == TokenKind.PipeToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.Dot && kind2 == TokenKind.Multiply)
|
if (kind1 == TokenKind.DotToken && kind2 == TokenKind.StarToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.Dot && kind2 == TokenKind.Divide)
|
if (kind1 == TokenKind.DotToken && kind2 == TokenKind.SlashToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.Dot && kind2 == TokenKind.Backslash)
|
if (kind1 == TokenKind.DotToken && kind2 == TokenKind.BackslashToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.Dot && kind2 == TokenKind.Power)
|
if (kind1 == TokenKind.DotToken && kind2 == TokenKind.CaretToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.Dot && kind2 == TokenKind.NumberLiteral)
|
if (kind1 == TokenKind.DotToken && kind2 == TokenKind.NumberLiteralToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.NumberLiteral && kind2 == TokenKind.Dot)
|
if (kind1 == TokenKind.NumberLiteralToken && kind2 == TokenKind.DotToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.Dot && kind2 == TokenKind.StringLiteral)
|
if (kind1 == TokenKind.DotToken && kind2 == TokenKind.StringLiteralToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.NumberLiteral && kind2 == TokenKind.NumberLiteral)
|
if (kind1 == TokenKind.NumberLiteralToken && kind2 == TokenKind.NumberLiteralToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.StringLiteral && kind2 == TokenKind.StringLiteral)
|
if (kind1 == TokenKind.StringLiteralToken && kind2 == TokenKind.StringLiteralToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.DoubleQuotedStringLiteral && kind2 == TokenKind.DoubleQuotedStringLiteral)
|
if (kind1 == TokenKind.DoubleQuotedStringLiteralToken && kind2 == TokenKind.DoubleQuotedStringLiteralToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.Identifier && kind2 == TokenKind.Identifier)
|
if (kind1 == TokenKind.IdentifierToken && kind2 == TokenKind.IdentifierToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.Identifier && kind2 == TokenKind.NumberLiteral)
|
if (kind1 == TokenKind.IdentifierToken && kind2 == TokenKind.NumberLiteralToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kind1 == TokenKind.Identifier && kind2 == TokenKind.StringLiteral)
|
if (kind1 == TokenKind.IdentifierToken && kind2 == TokenKind.StringLiteralToken)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ namespace Parser.Internal
|
|||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return TokenFactory.CreateTrivia(TokenKind.Comment, Window.GetAndConsumeChars(n));
|
return TokenFactory.CreateTrivia(TokenKind.CommentToken, Window.GetAndConsumeChars(n));
|
||||||
}
|
}
|
||||||
|
|
||||||
private SyntaxTrivia LexMultilineComment()
|
private SyntaxTrivia LexMultilineComment()
|
||||||
@ -54,7 +54,7 @@ namespace Parser.Internal
|
|||||||
if (c == '\0')
|
if (c == '\0')
|
||||||
{
|
{
|
||||||
Diagnostics.ReportUnexpectedEndOfFile(new TextSpan(Window.Position.Offset, 0));
|
Diagnostics.ReportUnexpectedEndOfFile(new TextSpan(Window.Position.Offset, 0));
|
||||||
return TokenFactory.CreateTrivia(TokenKind.Comment, Window.GetAndConsumeChars(n));
|
return TokenFactory.CreateTrivia(TokenKind.CommentToken, Window.GetAndConsumeChars(n));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c == '\n' || (c == '\r' && Window.PeekChar(n + 1) == '\n'))
|
if (c == '\n' || (c == '\r' && Window.PeekChar(n + 1) == '\n'))
|
||||||
@ -69,12 +69,12 @@ namespace Parser.Internal
|
|||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return TokenFactory.CreateTrivia(TokenKind.Comment, Window.GetAndConsumeChars(n));
|
return TokenFactory.CreateTrivia(TokenKind.CommentToken, Window.GetAndConsumeChars(n));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (metPercentSign && c == '}')
|
if (metPercentSign && c == '}')
|
||||||
{
|
{
|
||||||
return TokenFactory.CreateTrivia(TokenKind.Comment, Window.GetAndConsumeChars(n+1));
|
return TokenFactory.CreateTrivia(TokenKind.CommentToken, Window.GetAndConsumeChars(n+1));
|
||||||
}
|
}
|
||||||
|
|
||||||
metPercentSign = c == '%';
|
metPercentSign = c == '%';
|
||||||
@ -91,13 +91,13 @@ namespace Parser.Internal
|
|||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
|
|
||||||
var comment = TokenFactory.CreateTrivia(TokenKind.Comment, Window.GetAndConsumeChars(n));
|
var comment = TokenFactory.CreateTrivia(TokenKind.CommentToken, Window.GetAndConsumeChars(n));
|
||||||
var result = new List<SyntaxTrivia> { comment };
|
var result = new List<SyntaxTrivia> { comment };
|
||||||
var character = Window.PeekChar();
|
var character = Window.PeekChar();
|
||||||
if (character == '\n' || character == '\r')
|
if (character == '\n' || character == '\r')
|
||||||
{
|
{
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
result.Add(TokenFactory.CreateTrivia(TokenKind.Whitespace, character.ToString()));
|
result.Add(TokenFactory.CreateTrivia(TokenKind.WhitespaceToken, character.ToString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@ -112,7 +112,7 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
if (whitespaceCache.Length > 0)
|
if (whitespaceCache.Length > 0)
|
||||||
{
|
{
|
||||||
triviaList.Add(TokenFactory.CreateTrivia(TokenKind.Whitespace, whitespaceCache.ToString()));
|
triviaList.Add(TokenFactory.CreateTrivia(TokenKind.WhitespaceToken, whitespaceCache.ToString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
whitespaceCache.Clear();
|
whitespaceCache.Clear();
|
||||||
@ -132,7 +132,7 @@ namespace Parser.Internal
|
|||||||
case '\n':
|
case '\n':
|
||||||
FlushWhitespaceCache();
|
FlushWhitespaceCache();
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
triviaList.Add(TokenFactory.CreateTrivia(TokenKind.Newline, character.ToString()));
|
triviaList.Add(TokenFactory.CreateTrivia(TokenKind.NewlineToken, character.ToString()));
|
||||||
if (isTrailing)
|
if (isTrailing)
|
||||||
{
|
{
|
||||||
return triviaList;
|
return triviaList;
|
||||||
@ -177,7 +177,7 @@ namespace Parser.Internal
|
|||||||
}
|
}
|
||||||
|
|
||||||
var identifier = Window.GetAndConsumeChars(n);
|
var identifier = Window.GetAndConsumeChars(n);
|
||||||
tokenInfo.Kind = TokenKind.Identifier;
|
tokenInfo.Kind = TokenKind.IdentifierToken;
|
||||||
tokenInfo.Text = identifier;
|
tokenInfo.Text = identifier;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -191,7 +191,7 @@ namespace Parser.Internal
|
|||||||
if (c == ' ' || c == '\n' || c == '\0')
|
if (c == ' ' || c == '\n' || c == '\0')
|
||||||
{
|
{
|
||||||
var literal = Window.GetAndConsumeChars(n);
|
var literal = Window.GetAndConsumeChars(n);
|
||||||
tokenInfo.Kind = TokenKind.UnquotedStringLiteral;
|
tokenInfo.Kind = TokenKind.UnquotedStringLiteralToken;
|
||||||
tokenInfo.Text = literal;
|
tokenInfo.Text = literal;
|
||||||
tokenInfo.StringValue = literal;
|
tokenInfo.StringValue = literal;
|
||||||
return true;
|
return true;
|
||||||
@ -330,7 +330,7 @@ namespace Parser.Internal
|
|||||||
if (fail)
|
if (fail)
|
||||||
{
|
{
|
||||||
var s = Window.GetAndConsumeChars(n);
|
var s = Window.GetAndConsumeChars(n);
|
||||||
tokenInfo.Kind = TokenKind.NumberLiteral;
|
tokenInfo.Kind = TokenKind.NumberLiteralToken;
|
||||||
tokenInfo.Text = s;
|
tokenInfo.Text = s;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -363,7 +363,7 @@ namespace Parser.Internal
|
|||||||
}
|
}
|
||||||
var s = Window.GetAndConsumeChars(n);
|
var s = Window.GetAndConsumeChars(n);
|
||||||
|
|
||||||
tokenInfo.Kind = TokenKind.NumberLiteral;
|
tokenInfo.Kind = TokenKind.NumberLiteralToken;
|
||||||
tokenInfo.Text = s;
|
tokenInfo.Text = s;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -439,14 +439,14 @@ namespace Parser.Internal
|
|||||||
private bool ContinueLexingStringLiteral(ref TokenInfo tokenInfo)
|
private bool ContinueLexingStringLiteral(ref TokenInfo tokenInfo)
|
||||||
{
|
{
|
||||||
ContinueLexingGeneralStringLiteral(ref tokenInfo, '\'');
|
ContinueLexingGeneralStringLiteral(ref tokenInfo, '\'');
|
||||||
tokenInfo.Kind = TokenKind.StringLiteral;
|
tokenInfo.Kind = TokenKind.StringLiteralToken;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool ContinueLexingDoubleQuotedStringLiteral(ref TokenInfo tokenInfo)
|
private bool ContinueLexingDoubleQuotedStringLiteral(ref TokenInfo tokenInfo)
|
||||||
{
|
{
|
||||||
ContinueLexingGeneralStringLiteral(ref tokenInfo, '"');
|
ContinueLexingGeneralStringLiteral(ref tokenInfo, '"');
|
||||||
tokenInfo.Kind = TokenKind.DoubleQuotedStringLiteral;
|
tokenInfo.Kind = TokenKind.DoubleQuotedStringLiteralToken;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -455,14 +455,14 @@ namespace Parser.Internal
|
|||||||
var character = Window.PeekChar();
|
var character = Window.PeekChar();
|
||||||
if (character == '\0')
|
if (character == '\0')
|
||||||
{
|
{
|
||||||
tokenInfo.Kind = TokenKind.EndOfFile;
|
tokenInfo.Kind = TokenKind.EndOfFileToken;
|
||||||
tokenInfo.Text = "";
|
tokenInfo.Text = "";
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TokensSinceNewLine == 1
|
if (TokensSinceNewLine == 1
|
||||||
&& !TokenStack.Any()
|
&& !TokenStack.Any()
|
||||||
&& LastToken.Kind == TokenKind.Identifier
|
&& LastToken.Kind == TokenKind.IdentifierToken
|
||||||
&& LastToken.TrailingTrivia.Any()
|
&& LastToken.TrailingTrivia.Any()
|
||||||
&& character != '='
|
&& character != '='
|
||||||
&& character != '('
|
&& character != '('
|
||||||
@ -470,7 +470,7 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
return ContinueParsingUnquotedStringLiteral(ref tokenInfo);
|
return ContinueParsingUnquotedStringLiteral(ref tokenInfo);
|
||||||
}
|
}
|
||||||
if (LastToken?.Kind == TokenKind.UnquotedStringLiteral
|
if (LastToken?.Kind == TokenKind.UnquotedStringLiteralToken
|
||||||
&& !TokenStack.Any()
|
&& !TokenStack.Any()
|
||||||
&& TokensSinceNewLine > 0)
|
&& TokensSinceNewLine > 0)
|
||||||
{
|
{
|
||||||
@ -553,11 +553,11 @@ namespace Parser.Internal
|
|||||||
if (Window.PeekChar() == '=')
|
if (Window.PeekChar() == '=')
|
||||||
{
|
{
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.Equality;
|
tokenInfo.Kind = TokenKind.EqualsEqualsToken;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tokenInfo.Kind = TokenKind.Assignment;
|
tokenInfo.Kind = TokenKind.EqualsToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -578,72 +578,72 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
case '*':
|
case '*':
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.DotMultiply;
|
tokenInfo.Kind = TokenKind.DotStarToken;
|
||||||
break;
|
break;
|
||||||
case '/':
|
case '/':
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.DotDivide;
|
tokenInfo.Kind = TokenKind.DotSlashToken;
|
||||||
break;
|
break;
|
||||||
case '^':
|
case '^':
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.DotPower;
|
tokenInfo.Kind = TokenKind.DotCaretToken;
|
||||||
break;
|
break;
|
||||||
case '\\':
|
case '\\':
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.DotBackslash;
|
tokenInfo.Kind = TokenKind.DotBackslashToken;
|
||||||
break;
|
break;
|
||||||
case '\'':
|
case '\'':
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.DotTranspose;
|
tokenInfo.Kind = TokenKind.DotApostropheToken;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
tokenInfo.Kind = TokenKind.Dot;
|
tokenInfo.Kind = TokenKind.DotToken;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
case '(':
|
case '(':
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.OpeningBracket;
|
tokenInfo.Kind = TokenKind.OpenParenthesisToken;
|
||||||
return true;
|
return true;
|
||||||
case ')':
|
case ')':
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.ClosingBracket;
|
tokenInfo.Kind = TokenKind.CloseParenthesisToken;
|
||||||
return true;
|
return true;
|
||||||
case '[':
|
case '[':
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.OpeningSquareBracket;
|
tokenInfo.Kind = TokenKind.OpenSquareBracketToken;
|
||||||
return true;
|
return true;
|
||||||
case ']':
|
case ']':
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.ClosingSquareBracket;
|
tokenInfo.Kind = TokenKind.CloseSquareBracketToken;
|
||||||
return true;
|
return true;
|
||||||
case '{':
|
case '{':
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.OpeningBrace;
|
tokenInfo.Kind = TokenKind.OpenBraceToken;
|
||||||
return true;
|
return true;
|
||||||
case '}':
|
case '}':
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.ClosingBrace;
|
tokenInfo.Kind = TokenKind.CloseBraceToken;
|
||||||
return true;
|
return true;
|
||||||
case ',':
|
case ',':
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.Comma;
|
tokenInfo.Kind = TokenKind.CommaToken;
|
||||||
return true;
|
return true;
|
||||||
case ';':
|
case ';':
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.Semicolon;
|
tokenInfo.Kind = TokenKind.SemicolonToken;
|
||||||
return true;
|
return true;
|
||||||
case '&':
|
case '&':
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
if (Window.PeekChar() == '&')
|
if (Window.PeekChar() == '&')
|
||||||
{
|
{
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.LogicalAnd;
|
tokenInfo.Kind = TokenKind.AmpersandAmpersandToken;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tokenInfo.Kind = TokenKind.BitwiseAnd;
|
tokenInfo.Kind = TokenKind.AmpersandToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -652,11 +652,11 @@ namespace Parser.Internal
|
|||||||
if (Window.PeekChar() == '|')
|
if (Window.PeekChar() == '|')
|
||||||
{
|
{
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.LogicalOr;
|
tokenInfo.Kind = TokenKind.PipePipeToken;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tokenInfo.Kind = TokenKind.BitwiseOr;
|
tokenInfo.Kind = TokenKind.PipeToken;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -666,11 +666,11 @@ namespace Parser.Internal
|
|||||||
if (Window.PeekChar() == '=')
|
if (Window.PeekChar() == '=')
|
||||||
{
|
{
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.LessOrEqual;
|
tokenInfo.Kind = TokenKind.LessOrEqualsToken;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tokenInfo.Kind = TokenKind.Less;
|
tokenInfo.Kind = TokenKind.LessToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -679,11 +679,11 @@ namespace Parser.Internal
|
|||||||
if (Window.PeekChar() == '=')
|
if (Window.PeekChar() == '=')
|
||||||
{
|
{
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.GreaterOrEqual;
|
tokenInfo.Kind = TokenKind.GreaterOrEqualsToken;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tokenInfo.Kind = TokenKind.Greater;
|
tokenInfo.Kind = TokenKind.GreaterToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -692,61 +692,61 @@ namespace Parser.Internal
|
|||||||
if (Window.PeekChar() == '=')
|
if (Window.PeekChar() == '=')
|
||||||
{
|
{
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.Inequality;
|
tokenInfo.Kind = TokenKind.TildeEqualsToken;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tokenInfo.Kind = TokenKind.Not;
|
tokenInfo.Kind = TokenKind.TildeToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
case '+':
|
case '+':
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.Plus;
|
tokenInfo.Kind = TokenKind.PlusToken;
|
||||||
return true;
|
return true;
|
||||||
case '-':
|
case '-':
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.Minus;
|
tokenInfo.Kind = TokenKind.MinusToken;
|
||||||
return true;
|
return true;
|
||||||
case '*':
|
case '*':
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.Multiply;
|
tokenInfo.Kind = TokenKind.StarToken;
|
||||||
return true;
|
return true;
|
||||||
case '/':
|
case '/':
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.Divide;
|
tokenInfo.Kind = TokenKind.SlashToken;
|
||||||
return true;
|
return true;
|
||||||
case '\\':
|
case '\\':
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.Backslash;
|
tokenInfo.Kind = TokenKind.BackslashToken;
|
||||||
return true;
|
return true;
|
||||||
case '^':
|
case '^':
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.Power;
|
tokenInfo.Kind = TokenKind.CaretToken;
|
||||||
return true;
|
return true;
|
||||||
case '@':
|
case '@':
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.At;
|
tokenInfo.Kind = TokenKind.AtToken;
|
||||||
return true;
|
return true;
|
||||||
case ':':
|
case ':':
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.Colon;
|
tokenInfo.Kind = TokenKind.ColonToken;
|
||||||
return true;
|
return true;
|
||||||
case '?':
|
case '?':
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.QuestionMark;
|
tokenInfo.Kind = TokenKind.QuestionToken;
|
||||||
return true;
|
return true;
|
||||||
case '\'':
|
case '\'':
|
||||||
if (LastToken != null &&
|
if (LastToken != null &&
|
||||||
(LastToken.Kind == TokenKind.ClosingBrace
|
(LastToken.Kind == TokenKind.CloseBraceToken
|
||||||
|| LastToken.Kind == TokenKind.ClosingBracket
|
|| LastToken.Kind == TokenKind.CloseParenthesisToken
|
||||||
|| LastToken.Kind == TokenKind.ClosingSquareBracket
|
|| LastToken.Kind == TokenKind.CloseSquareBracketToken
|
||||||
|| LastToken.Kind == TokenKind.Identifier))
|
|| LastToken.Kind == TokenKind.IdentifierToken))
|
||||||
{
|
{
|
||||||
if (LastToken.TrailingTrivia.Count == 0 && leadingTrivia.Count == 0)
|
if (LastToken.TrailingTrivia.Count == 0 && leadingTrivia.Count == 0)
|
||||||
{
|
{
|
||||||
Window.ConsumeChar();
|
Window.ConsumeChar();
|
||||||
tokenInfo.Kind = TokenKind.Transpose;
|
tokenInfo.Kind = TokenKind.ApostropheToken;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -754,7 +754,7 @@ namespace Parser.Internal
|
|||||||
case '"':
|
case '"':
|
||||||
return ContinueLexingDoubleQuotedStringLiteral(ref tokenInfo);
|
return ContinueLexingDoubleQuotedStringLiteral(ref tokenInfo);
|
||||||
case '\0':
|
case '\0':
|
||||||
tokenInfo.Kind = TokenKind.EndOfFile;
|
tokenInfo.Kind = TokenKind.EndOfFileToken;
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
Diagnostics.ReportUnknownSymbol(new TextSpan(Window.Position.Offset, 1), character);
|
Diagnostics.ReportUnknownSymbol(new TextSpan(Window.Position.Offset, 1), character);
|
||||||
@ -772,7 +772,7 @@ namespace Parser.Internal
|
|||||||
var tokenInfo = new TokenInfo();
|
var tokenInfo = new TokenInfo();
|
||||||
LexTokenWithoutTrivia(leadingTrivia, ref tokenInfo);
|
LexTokenWithoutTrivia(leadingTrivia, ref tokenInfo);
|
||||||
var trailingTrivia = LexTrivia(true);
|
var trailingTrivia = LexTrivia(true);
|
||||||
if (trailingTrivia.Any(t => t.Kind == TokenKind.Newline))
|
if (trailingTrivia.Any(t => t.Kind == TokenKind.NewlineToken))
|
||||||
{
|
{
|
||||||
TokensSinceNewLine = 0;
|
TokensSinceNewLine = 0;
|
||||||
}
|
}
|
||||||
@ -806,7 +806,7 @@ namespace Parser.Internal
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tokenInfo.Kind == TokenKind.EndOfFile
|
if (tokenInfo.Kind == TokenKind.EndOfFileToken
|
||||||
&& TokenStack.Any())
|
&& TokenStack.Any())
|
||||||
{
|
{
|
||||||
throw new ParsingException($"Unmatched \"{TokenStack.Pop()}\" by the end of file.");
|
throw new ParsingException($"Unmatched \"{TokenStack.Pop()}\" by the end of file.");
|
||||||
@ -827,32 +827,32 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
switch (tokenInfo.Kind)
|
switch (tokenInfo.Kind)
|
||||||
{
|
{
|
||||||
case TokenKind.Identifier:
|
case TokenKind.IdentifierToken:
|
||||||
return TokenFactory.CreateIdentifier(
|
return TokenFactory.CreateIdentifier(
|
||||||
tokenInfo.Text,
|
tokenInfo.Text,
|
||||||
leadingTrivia,
|
leadingTrivia,
|
||||||
trailingTrivia);
|
trailingTrivia);
|
||||||
case TokenKind.UnquotedStringLiteral:
|
case TokenKind.UnquotedStringLiteralToken:
|
||||||
return TokenFactory.CreateUnquotedStringLiteral(
|
return TokenFactory.CreateUnquotedStringLiteral(
|
||||||
tokenInfo.Text,
|
tokenInfo.Text,
|
||||||
tokenInfo.StringValue,
|
tokenInfo.StringValue,
|
||||||
leadingTrivia,
|
leadingTrivia,
|
||||||
trailingTrivia);
|
trailingTrivia);
|
||||||
case TokenKind.NumberLiteral:
|
case TokenKind.NumberLiteralToken:
|
||||||
return 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.StringLiteral:
|
case TokenKind.StringLiteralToken:
|
||||||
return 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.DoubleQuotedStringLiteral:
|
case TokenKind.DoubleQuotedStringLiteralToken:
|
||||||
return TokenFactory.CreateTokenWithValueAndTrivia<string>(
|
return TokenFactory.CreateTokenWithValueAndTrivia<string>(
|
||||||
tokenInfo.Kind,
|
tokenInfo.Kind,
|
||||||
tokenInfo.Text,
|
tokenInfo.Text,
|
||||||
@ -879,7 +879,7 @@ namespace Parser.Internal
|
|||||||
throw new ParsingException($"Unexpected character: '{Window.PeekChar()}' at {Window.Position}.");
|
throw new ParsingException($"Unexpected character: '{Window.PeekChar()}' at {Window.Position}.");
|
||||||
}
|
}
|
||||||
result.Add(pair);
|
result.Add(pair);
|
||||||
if (token.Kind == TokenKind.EndOfFile)
|
if (token.Kind == TokenKind.EndOfFileToken)
|
||||||
{
|
{
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -41,27 +41,27 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
private SyntaxToken EatIdentifier()
|
private SyntaxToken EatIdentifier()
|
||||||
{
|
{
|
||||||
return EatToken(TokenKind.Identifier);
|
return EatToken(TokenKind.IdentifierToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsIdentifier(SyntaxToken token, string s)
|
private bool IsIdentifier(SyntaxToken token, string s)
|
||||||
{
|
{
|
||||||
return token.Kind == TokenKind.Identifier && token.Text == s;
|
return token.Kind == TokenKind.IdentifierToken && token.Text == s;
|
||||||
}
|
}
|
||||||
|
|
||||||
private SyntaxToken EatIdentifier(string s)
|
private SyntaxToken EatIdentifier(string s)
|
||||||
{
|
{
|
||||||
var token = CurrentToken;
|
var token = CurrentToken;
|
||||||
if (token.Kind != TokenKind.Identifier)
|
if (token.Kind != TokenKind.IdentifierToken)
|
||||||
{
|
{
|
||||||
Errors.Add($"Unexpected token \"{token.Text}\" instead of {TokenKind.Identifier} at {CurrentPosition}.");
|
Errors.Add($"Unexpected token \"{token.Text}\" instead of {TokenKind.IdentifierToken} at {CurrentPosition}.");
|
||||||
return TokenFactory.CreateMissing(TokenKind.Identifier, null, null);
|
return TokenFactory.CreateMissing(TokenKind.IdentifierToken, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (token.Text != s)
|
if (token.Text != s)
|
||||||
{
|
{
|
||||||
Errors.Add($"Unexpected token \"{token.Text}\" instead of identifier {s} at {CurrentPosition}.");
|
Errors.Add($"Unexpected token \"{token.Text}\" instead of identifier {s} at {CurrentPosition}.");
|
||||||
return TokenFactory.CreateMissing(TokenKind.Identifier, null, null);
|
return TokenFactory.CreateMissing(TokenKind.IdentifierToken, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
_index++;
|
_index++;
|
||||||
@ -71,7 +71,7 @@ namespace Parser.Internal
|
|||||||
private SyntaxToken PossiblyEatIdentifier(string s)
|
private SyntaxToken PossiblyEatIdentifier(string s)
|
||||||
{
|
{
|
||||||
var token = CurrentToken;
|
var token = CurrentToken;
|
||||||
if (token.Kind == TokenKind.Identifier && token.Text == s)
|
if (token.Kind == TokenKind.IdentifierToken && token.Text == s)
|
||||||
{
|
{
|
||||||
return EatToken();
|
return EatToken();
|
||||||
}
|
}
|
||||||
@ -82,13 +82,13 @@ namespace Parser.Internal
|
|||||||
private SyntaxToken EatPossiblyMissingIdentifier(string s)
|
private SyntaxToken EatPossiblyMissingIdentifier(string s)
|
||||||
{
|
{
|
||||||
var token = CurrentToken;
|
var token = CurrentToken;
|
||||||
if (token.Kind == TokenKind.Identifier && token.Text == s)
|
if (token.Kind == TokenKind.IdentifierToken && token.Text == s)
|
||||||
{
|
{
|
||||||
return EatToken();
|
return EatToken();
|
||||||
}
|
}
|
||||||
|
|
||||||
return TokenFactory.CreateMissing(
|
return TokenFactory.CreateMissing(
|
||||||
TokenKind.Identifier,
|
TokenKind.IdentifierToken,
|
||||||
new List<SyntaxTrivia>(),
|
new List<SyntaxTrivia>(),
|
||||||
new List<SyntaxTrivia>());
|
new List<SyntaxTrivia>());
|
||||||
}
|
}
|
||||||
@ -97,15 +97,15 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
var outputs = new SyntaxListBuilder();
|
var outputs = new SyntaxListBuilder();
|
||||||
var firstToken = true;
|
var firstToken = true;
|
||||||
while (CurrentToken.Kind != TokenKind.ClosingSquareBracket)
|
while (CurrentToken.Kind != TokenKind.CloseSquareBracketToken)
|
||||||
{
|
{
|
||||||
if (!firstToken && CurrentToken.Kind == TokenKind.Comma)
|
if (!firstToken && CurrentToken.Kind == TokenKind.CommaToken)
|
||||||
{
|
{
|
||||||
outputs.Add(EatToken());
|
outputs.Add(EatToken());
|
||||||
}
|
}
|
||||||
|
|
||||||
firstToken = false;
|
firstToken = false;
|
||||||
outputs.Add(Factory.IdentifierNameSyntax(EatToken(TokenKind.Identifier)));
|
outputs.Add(Factory.IdentifierNameSyntax(EatToken(TokenKind.IdentifierToken)));
|
||||||
}
|
}
|
||||||
|
|
||||||
return outputs.ToList();
|
return outputs.ToList();
|
||||||
@ -116,19 +116,19 @@ namespace Parser.Internal
|
|||||||
SyntaxToken assignmentSign;
|
SyntaxToken assignmentSign;
|
||||||
var builder = new SyntaxListBuilder();
|
var builder = new SyntaxListBuilder();
|
||||||
|
|
||||||
if (CurrentToken.Kind == TokenKind.Identifier)
|
if (CurrentToken.Kind == TokenKind.IdentifierToken)
|
||||||
{
|
{
|
||||||
if (PeekToken(1).Kind == TokenKind.Assignment)
|
if (PeekToken(1).Kind == TokenKind.EqualsToken)
|
||||||
{
|
{
|
||||||
builder.Add(Factory.IdentifierNameSyntax(EatToken()));
|
builder.Add(Factory.IdentifierNameSyntax(EatToken()));
|
||||||
assignmentSign = EatToken(TokenKind.Assignment);
|
assignmentSign = EatToken(TokenKind.EqualsToken);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (CurrentToken.Kind == TokenKind.OpeningSquareBracket)
|
else if (CurrentToken.Kind == TokenKind.OpenSquareBracketToken)
|
||||||
{
|
{
|
||||||
builder.Add(EatToken());
|
builder.Add(EatToken());
|
||||||
var outputs = ParseFunctionOutputList();
|
var outputs = ParseFunctionOutputList();
|
||||||
@ -137,8 +137,8 @@ namespace Parser.Internal
|
|||||||
builder.AddRange(outputs);
|
builder.AddRange(outputs);
|
||||||
}
|
}
|
||||||
|
|
||||||
builder.Add(EatToken(TokenKind.ClosingSquareBracket));
|
builder.Add(EatToken(TokenKind.CloseSquareBracketToken));
|
||||||
assignmentSign = EatToken(TokenKind.Assignment);
|
assignmentSign = EatToken(TokenKind.EqualsToken);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -154,25 +154,25 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
var builder = new SyntaxListBuilder();
|
var builder = new SyntaxListBuilder();
|
||||||
var firstToken = true;
|
var firstToken = true;
|
||||||
while (CurrentToken.Kind != TokenKind.ClosingBracket)
|
while (CurrentToken.Kind != TokenKind.CloseParenthesisToken)
|
||||||
{
|
{
|
||||||
if (!firstToken)
|
if (!firstToken)
|
||||||
{
|
{
|
||||||
builder.Add(EatToken(TokenKind.Comma));
|
builder.Add(EatToken(TokenKind.CommaToken));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
firstToken = false;
|
firstToken = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CurrentToken.Kind == TokenKind.Not)
|
if (CurrentToken.Kind == TokenKind.TildeToken)
|
||||||
{
|
{
|
||||||
var notToken = EatToken();
|
var notToken = EatToken();
|
||||||
builder.Add(notToken);
|
builder.Add(notToken);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var identifierToken = EatToken(TokenKind.Identifier);
|
var identifierToken = EatToken(TokenKind.IdentifierToken);
|
||||||
builder.Add(Factory.IdentifierNameSyntax(identifierToken));
|
builder.Add(Factory.IdentifierNameSyntax(identifierToken));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -182,11 +182,11 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
private FunctionInputDescriptionSyntaxNode ParseFunctionInputDescription()
|
private FunctionInputDescriptionSyntaxNode ParseFunctionInputDescription()
|
||||||
{
|
{
|
||||||
if (CurrentToken.Kind == TokenKind.OpeningBracket)
|
if (CurrentToken.Kind == TokenKind.OpenParenthesisToken)
|
||||||
{
|
{
|
||||||
var openingBracket = EatToken(TokenKind.OpeningBracket);
|
var openingBracket = EatToken(TokenKind.OpenParenthesisToken);
|
||||||
var parameterList = ParseParameterList();
|
var parameterList = ParseParameterList();
|
||||||
var closingBracket = EatToken(TokenKind.ClosingBracket);
|
var closingBracket = EatToken(TokenKind.CloseParenthesisToken);
|
||||||
return Factory.FunctionInputDescriptionSyntax(
|
return Factory.FunctionInputDescriptionSyntax(
|
||||||
openingBracket,
|
openingBracket,
|
||||||
parameterList,
|
parameterList,
|
||||||
@ -202,7 +202,7 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
var functionKeyword = EatIdentifier("function");
|
var functionKeyword = EatIdentifier("function");
|
||||||
var outputDescription = ParseFunctionOutputDescription();
|
var outputDescription = ParseFunctionOutputDescription();
|
||||||
var name = EatToken(TokenKind.Identifier);
|
var name = EatToken(TokenKind.IdentifierToken);
|
||||||
var inputDescription = ParseFunctionInputDescription();
|
var inputDescription = ParseFunctionInputDescription();
|
||||||
var commas = ParseOptionalCommas();
|
var commas = ParseOptionalCommas();
|
||||||
var body = ParseStatementList();
|
var body = ParseStatementList();
|
||||||
@ -236,9 +236,9 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
private ArrayLiteralExpressionSyntaxNode ParseArrayLiteral()
|
private ArrayLiteralExpressionSyntaxNode ParseArrayLiteral()
|
||||||
{
|
{
|
||||||
var openingSquareBracket = EatToken(TokenKind.OpeningSquareBracket);
|
var openingSquareBracket = EatToken(TokenKind.OpenSquareBracketToken);
|
||||||
var elements = ParseArrayElementList(TokenKind.ClosingSquareBracket);
|
var elements = ParseArrayElementList(TokenKind.CloseSquareBracketToken);
|
||||||
var closingSquareBracket = EatToken(TokenKind.ClosingSquareBracket);
|
var closingSquareBracket = EatToken(TokenKind.CloseSquareBracketToken);
|
||||||
return Factory.ArrayLiteralExpressionSyntax(
|
return Factory.ArrayLiteralExpressionSyntax(
|
||||||
openingSquareBracket,
|
openingSquareBracket,
|
||||||
elements,
|
elements,
|
||||||
@ -247,9 +247,9 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
private CellArrayLiteralExpressionSyntaxNode ParseCellArrayLiteral()
|
private CellArrayLiteralExpressionSyntaxNode ParseCellArrayLiteral()
|
||||||
{
|
{
|
||||||
var openingBrace = EatToken(TokenKind.OpeningBrace);
|
var openingBrace = EatToken(TokenKind.OpenBraceToken);
|
||||||
var elements = ParseArrayElementList(TokenKind.ClosingBrace);
|
var elements = ParseArrayElementList(TokenKind.CloseBraceToken);
|
||||||
var closingBrace = EatToken(TokenKind.ClosingBrace);
|
var closingBrace = EatToken(TokenKind.CloseBraceToken);
|
||||||
return Factory.CellArrayLiteralExpressionSyntax(
|
return Factory.CellArrayLiteralExpressionSyntax(
|
||||||
openingBrace,
|
openingBrace,
|
||||||
elements,
|
elements,
|
||||||
@ -265,8 +265,8 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
if (!firstToken)
|
if (!firstToken)
|
||||||
{
|
{
|
||||||
if (CurrentToken.Kind == TokenKind.Comma
|
if (CurrentToken.Kind == TokenKind.CommaToken
|
||||||
|| CurrentToken.Kind == TokenKind.Semicolon)
|
|| CurrentToken.Kind == TokenKind.SemicolonToken)
|
||||||
{
|
{
|
||||||
builder.Add(EatToken());
|
builder.Add(EatToken());
|
||||||
}
|
}
|
||||||
@ -292,28 +292,28 @@ namespace Parser.Internal
|
|||||||
ExpressionSyntaxNode expression = null;
|
ExpressionSyntaxNode expression = null;
|
||||||
switch (token.Kind)
|
switch (token.Kind)
|
||||||
{
|
{
|
||||||
case TokenKind.Identifier:
|
case TokenKind.IdentifierToken:
|
||||||
expression = Factory.IdentifierNameSyntax(EatToken());
|
expression = Factory.IdentifierNameSyntax(EatToken());
|
||||||
break;
|
break;
|
||||||
case TokenKind.NumberLiteral:
|
case TokenKind.NumberLiteralToken:
|
||||||
expression = Factory.NumberLiteralSyntax(EatToken());
|
expression = Factory.NumberLiteralSyntax(EatToken());
|
||||||
break;
|
break;
|
||||||
case TokenKind.StringLiteral:
|
case TokenKind.StringLiteralToken:
|
||||||
expression = Factory.StringLiteralSyntax(EatToken());
|
expression = Factory.StringLiteralSyntax(EatToken());
|
||||||
break;
|
break;
|
||||||
case TokenKind.DoubleQuotedStringLiteral:
|
case TokenKind.DoubleQuotedStringLiteralToken:
|
||||||
expression = Factory.DoubleQuotedStringLiteralSyntax(EatToken());
|
expression = Factory.DoubleQuotedStringLiteralSyntax(EatToken());
|
||||||
break;
|
break;
|
||||||
case TokenKind.OpeningSquareBracket:
|
case TokenKind.OpenSquareBracketToken:
|
||||||
expression = ParseArrayLiteral();
|
expression = ParseArrayLiteral();
|
||||||
break;
|
break;
|
||||||
case TokenKind.OpeningBrace:
|
case TokenKind.OpenBraceToken:
|
||||||
expression = ParseCellArrayLiteral();
|
expression = ParseCellArrayLiteral();
|
||||||
break;
|
break;
|
||||||
case TokenKind.Colon:
|
case TokenKind.ColonToken:
|
||||||
expression = Factory.EmptyExpressionSyntax();
|
expression = Factory.EmptyExpressionSyntax();
|
||||||
break;
|
break;
|
||||||
case TokenKind.OpeningBracket:
|
case TokenKind.OpenParenthesisToken:
|
||||||
expression = ParseParenthesizedExpression();
|
expression = ParseParenthesizedExpression();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -332,14 +332,14 @@ namespace Parser.Internal
|
|||||||
var token = CurrentToken;
|
var token = CurrentToken;
|
||||||
switch (token.Kind)
|
switch (token.Kind)
|
||||||
{
|
{
|
||||||
case TokenKind.OpeningBrace: // cell array element access
|
case TokenKind.OpenBraceToken: // cell array element access
|
||||||
if (options.ParsingArrayElements && expression.TrailingTrivia.Any())
|
if (options.ParsingArrayElements && expression.TrailingTrivia.Any())
|
||||||
{
|
{
|
||||||
return expression;
|
return expression;
|
||||||
}
|
}
|
||||||
var openingBrace = EatToken();
|
var openingBrace = EatToken();
|
||||||
var indices = ParseArrayElementList(TokenKind.ClosingBrace);
|
var indices = ParseArrayElementList(TokenKind.CloseBraceToken);
|
||||||
var closingBrace = EatToken(TokenKind.ClosingBrace);
|
var closingBrace = EatToken(TokenKind.CloseBraceToken);
|
||||||
expression = Factory.CellArrayElementAccessExpressionSyntax(
|
expression = Factory.CellArrayElementAccessExpressionSyntax(
|
||||||
expression,
|
expression,
|
||||||
openingBrace,
|
openingBrace,
|
||||||
@ -347,21 +347,21 @@ namespace Parser.Internal
|
|||||||
closingBrace
|
closingBrace
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case TokenKind.OpeningBracket: // function call
|
case TokenKind.OpenParenthesisToken: // function call
|
||||||
if (options.ParsingArrayElements && expression.TrailingTrivia.Any())
|
if (options.ParsingArrayElements && expression.TrailingTrivia.Any())
|
||||||
{
|
{
|
||||||
return expression;
|
return expression;
|
||||||
}
|
}
|
||||||
var openingBracket = EatToken();
|
var openingBracket = EatToken();
|
||||||
var parameters = ParseFunctionCallParameterList();
|
var parameters = ParseFunctionCallParameterList();
|
||||||
var closingBracket = EatToken(TokenKind.ClosingBracket);
|
var closingBracket = EatToken(TokenKind.CloseParenthesisToken);
|
||||||
expression = Factory.FunctionCallExpressionSyntax(
|
expression = Factory.FunctionCallExpressionSyntax(
|
||||||
expression,
|
expression,
|
||||||
openingBracket,
|
openingBracket,
|
||||||
parameters,
|
parameters,
|
||||||
closingBracket);
|
closingBracket);
|
||||||
break;
|
break;
|
||||||
case TokenKind.Dot: // member access
|
case TokenKind.DotToken: // member access
|
||||||
if (expression is IdentifierNameSyntaxNode
|
if (expression is IdentifierNameSyntaxNode
|
||||||
|| expression is MemberAccessSyntaxNode
|
|| expression is MemberAccessSyntaxNode
|
||||||
|| expression is FunctionCallExpressionSyntaxNode
|
|| expression is FunctionCallExpressionSyntaxNode
|
||||||
@ -378,14 +378,14 @@ namespace Parser.Internal
|
|||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case TokenKind.Transpose:
|
case TokenKind.ApostropheToken:
|
||||||
case TokenKind.DotTranspose:
|
case TokenKind.DotApostropheToken:
|
||||||
var operation = EatToken();
|
var operation = EatToken();
|
||||||
expression = Factory.UnaryPostixOperationExpressionSyntax(expression, operation);
|
expression = Factory.UnaryPostixOperationExpressionSyntax(expression, operation);
|
||||||
break;
|
break;
|
||||||
case TokenKind.UnquotedStringLiteral:
|
case TokenKind.UnquotedStringLiteralToken:
|
||||||
return ParseCommandExpression(expression);
|
return ParseCommandExpression(expression);
|
||||||
case TokenKind.At:
|
case TokenKind.AtToken:
|
||||||
if (expression.TrailingTrivia.Any())
|
if (expression.TrailingTrivia.Any())
|
||||||
{
|
{
|
||||||
return expression;
|
return expression;
|
||||||
@ -402,7 +402,7 @@ namespace Parser.Internal
|
|||||||
if (expression is IdentifierNameSyntaxNode idNameNode)
|
if (expression is IdentifierNameSyntaxNode idNameNode)
|
||||||
{
|
{
|
||||||
var builder = new SyntaxListBuilder<UnquotedStringLiteralSyntaxNode>();
|
var builder = new SyntaxListBuilder<UnquotedStringLiteralSyntaxNode>();
|
||||||
while (CurrentToken.Kind == TokenKind.UnquotedStringLiteral)
|
while (CurrentToken.Kind == TokenKind.UnquotedStringLiteralToken)
|
||||||
{
|
{
|
||||||
builder.Add(Factory.UnquotedStringLiteralSyntax(EatToken()));
|
builder.Add(Factory.UnquotedStringLiteralSyntax(EatToken()));
|
||||||
}
|
}
|
||||||
@ -433,15 +433,15 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
private ExpressionSyntaxNode ParseMemberAccess()
|
private ExpressionSyntaxNode ParseMemberAccess()
|
||||||
{
|
{
|
||||||
if (CurrentToken.Kind == TokenKind.Identifier)
|
if (CurrentToken.Kind == TokenKind.IdentifierToken)
|
||||||
{
|
{
|
||||||
return Factory.IdentifierNameSyntax(EatToken());
|
return Factory.IdentifierNameSyntax(EatToken());
|
||||||
}
|
}
|
||||||
if (CurrentToken.Kind == TokenKind.OpeningBracket)
|
if (CurrentToken.Kind == TokenKind.OpenParenthesisToken)
|
||||||
{
|
{
|
||||||
var openingBracket = EatToken();
|
var openingBracket = EatToken();
|
||||||
var indirectMember = ParseExpression();
|
var indirectMember = ParseExpression();
|
||||||
var closingBracket = EatToken(TokenKind.ClosingBracket);
|
var closingBracket = EatToken(TokenKind.CloseParenthesisToken);
|
||||||
return Factory.IndirectMemberAccessSyntax(
|
return Factory.IndirectMemberAccessSyntax(
|
||||||
openingBracket,
|
openingBracket,
|
||||||
indirectMember,
|
indirectMember,
|
||||||
@ -454,11 +454,11 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
var builder = new SyntaxListBuilder();
|
var builder = new SyntaxListBuilder();
|
||||||
var firstToken = true;
|
var firstToken = true;
|
||||||
while (CurrentToken.Kind != TokenKind.ClosingBracket)
|
while (CurrentToken.Kind != TokenKind.CloseParenthesisToken)
|
||||||
{
|
{
|
||||||
if (!firstToken)
|
if (!firstToken)
|
||||||
{
|
{
|
||||||
builder.Add(EatToken(TokenKind.Comma));
|
builder.Add(EatToken(TokenKind.CommaToken));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -473,9 +473,9 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
private ParenthesizedExpressionSyntaxNode ParseParenthesizedExpression()
|
private ParenthesizedExpressionSyntaxNode ParseParenthesizedExpression()
|
||||||
{
|
{
|
||||||
var openParen = EatToken(TokenKind.OpeningBracket);
|
var openParen = EatToken(TokenKind.OpenParenthesisToken);
|
||||||
var expression = ParseExpression();
|
var expression = ParseExpression();
|
||||||
var closeParen = EatToken(TokenKind.ClosingBracket);
|
var closeParen = EatToken(TokenKind.CloseParenthesisToken);
|
||||||
return Factory.ParenthesizedExpressionSyntax(
|
return Factory.ParenthesizedExpressionSyntax(
|
||||||
openParen,
|
openParen,
|
||||||
expression,
|
expression,
|
||||||
@ -484,16 +484,16 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
private CompoundNameSyntaxNode ParseCompoundName()
|
private CompoundNameSyntaxNode ParseCompoundName()
|
||||||
{
|
{
|
||||||
var lastToken = EatToken(TokenKind.Identifier);
|
var lastToken = EatToken(TokenKind.IdentifierToken);
|
||||||
var firstName = lastToken;
|
var firstName = lastToken;
|
||||||
var builder = new SyntaxListBuilder();
|
var builder = new SyntaxListBuilder();
|
||||||
builder.Add(firstName);
|
builder.Add(firstName);
|
||||||
while (CurrentToken.Kind == TokenKind.Dot
|
while (CurrentToken.Kind == TokenKind.DotToken
|
||||||
&& !lastToken.TrailingTrivia.Any())
|
&& !lastToken.TrailingTrivia.Any())
|
||||||
{
|
{
|
||||||
var dot = EatToken();
|
var dot = EatToken();
|
||||||
builder.Add(dot);
|
builder.Add(dot);
|
||||||
lastToken = EatToken(TokenKind.Identifier);
|
lastToken = EatToken(TokenKind.IdentifierToken);
|
||||||
builder.Add(lastToken);
|
builder.Add(lastToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -503,14 +503,14 @@ namespace Parser.Internal
|
|||||||
private FunctionHandleSyntaxNode ParseFunctionHandle()
|
private FunctionHandleSyntaxNode ParseFunctionHandle()
|
||||||
{
|
{
|
||||||
var atSign = EatToken();
|
var atSign = EatToken();
|
||||||
if (CurrentToken.Kind == TokenKind.Identifier)
|
if (CurrentToken.Kind == TokenKind.IdentifierToken)
|
||||||
{
|
{
|
||||||
var compoundName = ParseCompoundName();
|
var compoundName = ParseCompoundName();
|
||||||
return Factory.NamedFunctionHandleSyntax(
|
return Factory.NamedFunctionHandleSyntax(
|
||||||
atSign,
|
atSign,
|
||||||
compoundName);
|
compoundName);
|
||||||
}
|
}
|
||||||
else if (CurrentToken.Kind == TokenKind.OpeningBracket)
|
else if (CurrentToken.Kind == TokenKind.OpenParenthesisToken)
|
||||||
{
|
{
|
||||||
var inputs = ParseFunctionInputDescription();
|
var inputs = ParseFunctionInputDescription();
|
||||||
var body = ParseExpression();
|
var body = ParseExpression();
|
||||||
@ -532,7 +532,7 @@ namespace Parser.Internal
|
|||||||
var operand = ParseSubExpression(options, newPrecedence);
|
var operand = ParseSubExpression(options, newPrecedence);
|
||||||
if (operand == null)
|
if (operand == null)
|
||||||
{
|
{
|
||||||
if (options.ParsingArrayElements && operation.Kind == TokenKind.Not)
|
if (options.ParsingArrayElements && operation.Kind == TokenKind.TildeToken)
|
||||||
{
|
{
|
||||||
operand = Factory.EmptyExpressionSyntax();
|
operand = Factory.EmptyExpressionSyntax();
|
||||||
}
|
}
|
||||||
@ -543,7 +543,7 @@ namespace Parser.Internal
|
|||||||
}
|
}
|
||||||
lhs = Factory.UnaryPrefixOperationExpressionSyntax(operation, operand);
|
lhs = Factory.UnaryPrefixOperationExpressionSyntax(operation, operand);
|
||||||
}
|
}
|
||||||
else if (CurrentToken.Kind == TokenKind.At)
|
else if (CurrentToken.Kind == TokenKind.AtToken)
|
||||||
{
|
{
|
||||||
return ParseFunctionHandle();
|
return ParseFunctionHandle();
|
||||||
}
|
}
|
||||||
@ -570,11 +570,11 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
EatToken();
|
EatToken();
|
||||||
var rhs = ParseSubExpression(options, newPrecedence);
|
var rhs = ParseSubExpression(options, newPrecedence);
|
||||||
if (rhs == null && token.Kind == TokenKind.Colon) // for parsing things like a{:}
|
if (rhs == null && token.Kind == TokenKind.ColonToken) // for parsing things like a{:}
|
||||||
{
|
{
|
||||||
rhs = Factory.EmptyExpressionSyntax();
|
rhs = Factory.EmptyExpressionSyntax();
|
||||||
}
|
}
|
||||||
if (token.Kind == TokenKind.Assignment)
|
if (token.Kind == TokenKind.EqualsToken)
|
||||||
{
|
{
|
||||||
lhs = Factory.AssignmentExpressionSyntax(lhs, token, rhs);
|
lhs = Factory.AssignmentExpressionSyntax(lhs, token, rhs);
|
||||||
}
|
}
|
||||||
@ -595,7 +595,7 @@ namespace Parser.Internal
|
|||||||
private SyntaxList<SyntaxToken> ParseOptionalCommas()
|
private SyntaxList<SyntaxToken> ParseOptionalCommas()
|
||||||
{
|
{
|
||||||
var builder = new SyntaxListBuilder<SyntaxToken>();
|
var builder = new SyntaxListBuilder<SyntaxToken>();
|
||||||
while (CurrentToken.Kind == TokenKind.Comma)
|
while (CurrentToken.Kind == TokenKind.CommaToken)
|
||||||
{
|
{
|
||||||
builder.Add(EatToken());
|
builder.Add(EatToken());
|
||||||
}
|
}
|
||||||
@ -606,8 +606,8 @@ namespace Parser.Internal
|
|||||||
private SyntaxList<SyntaxToken> ParseOptionalSemicolonsOrCommas()
|
private SyntaxList<SyntaxToken> ParseOptionalSemicolonsOrCommas()
|
||||||
{
|
{
|
||||||
var builder = new SyntaxListBuilder<SyntaxToken>();
|
var builder = new SyntaxListBuilder<SyntaxToken>();
|
||||||
while (CurrentToken.Kind == TokenKind.Comma
|
while (CurrentToken.Kind == TokenKind.CommaToken
|
||||||
|| CurrentToken.Kind == TokenKind.Semicolon)
|
|| CurrentToken.Kind == TokenKind.SemicolonToken)
|
||||||
{
|
{
|
||||||
builder.Add(EatToken());
|
builder.Add(EatToken());
|
||||||
}
|
}
|
||||||
@ -763,7 +763,7 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
private AttributeAssignmentSyntaxNode ParseAttributeAssignment()
|
private AttributeAssignmentSyntaxNode ParseAttributeAssignment()
|
||||||
{
|
{
|
||||||
if (CurrentToken.Kind == TokenKind.Assignment)
|
if (CurrentToken.Kind == TokenKind.EqualsToken)
|
||||||
{
|
{
|
||||||
var assignmentSign = EatToken();
|
var assignmentSign = EatToken();
|
||||||
var value = ParseExpression();
|
var value = ParseExpression();
|
||||||
@ -775,7 +775,7 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
private AttributeSyntaxNode ParseAttribute()
|
private AttributeSyntaxNode ParseAttribute()
|
||||||
{
|
{
|
||||||
var name = Factory.IdentifierNameSyntax(EatToken(TokenKind.Identifier));
|
var name = Factory.IdentifierNameSyntax(EatToken(TokenKind.IdentifierToken));
|
||||||
var assignment = ParseAttributeAssignment();
|
var assignment = ParseAttributeAssignment();
|
||||||
return Factory.AttributeSyntax(name, assignment);
|
return Factory.AttributeSyntax(name, assignment);
|
||||||
}
|
}
|
||||||
@ -785,11 +785,11 @@ namespace Parser.Internal
|
|||||||
var openingBracket = EatToken();
|
var openingBracket = EatToken();
|
||||||
var first = true;
|
var first = true;
|
||||||
var builder = new SyntaxListBuilder();
|
var builder = new SyntaxListBuilder();
|
||||||
while (CurrentToken.Kind != TokenKind.ClosingBracket)
|
while (CurrentToken.Kind != TokenKind.CloseParenthesisToken)
|
||||||
{
|
{
|
||||||
if (!first)
|
if (!first)
|
||||||
{
|
{
|
||||||
var comma = EatToken(TokenKind.Comma);
|
var comma = EatToken(TokenKind.CommaToken);
|
||||||
builder.Add(comma);
|
builder.Add(comma);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -816,13 +816,13 @@ namespace Parser.Internal
|
|||||||
return ParseMethodDefinition();
|
return ParseMethodDefinition();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CurrentToken.Kind == TokenKind.OpeningSquareBracket
|
if (CurrentToken.Kind == TokenKind.OpenSquareBracketToken
|
||||||
|| CurrentToken.Kind == TokenKind.Identifier)
|
|| CurrentToken.Kind == TokenKind.IdentifierToken)
|
||||||
{
|
{
|
||||||
return ParseAbstractMethodDeclaration();
|
return ParseAbstractMethodDeclaration();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CurrentToken.Kind == TokenKind.Semicolon)
|
if (CurrentToken.Kind == TokenKind.SemicolonToken)
|
||||||
{
|
{
|
||||||
return Factory.EmptyStatementSyntax(EatToken());
|
return Factory.EmptyStatementSyntax(EatToken());
|
||||||
}
|
}
|
||||||
@ -852,7 +852,7 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
var methodsKeyword = EatToken();
|
var methodsKeyword = EatToken();
|
||||||
AttributeListSyntaxNode attributes = null;
|
AttributeListSyntaxNode attributes = null;
|
||||||
if (CurrentToken.Kind == TokenKind.OpeningBracket)
|
if (CurrentToken.Kind == TokenKind.OpenParenthesisToken)
|
||||||
{
|
{
|
||||||
attributes = ParseAttributesList();
|
attributes = ParseAttributesList();
|
||||||
}
|
}
|
||||||
@ -870,7 +870,7 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
private GreenNode ParsePropertyDeclaration()
|
private GreenNode ParsePropertyDeclaration()
|
||||||
{
|
{
|
||||||
if (CurrentToken.Kind == TokenKind.Comma)
|
if (CurrentToken.Kind == TokenKind.CommaToken)
|
||||||
{
|
{
|
||||||
return EatToken();
|
return EatToken();
|
||||||
}
|
}
|
||||||
@ -886,7 +886,7 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
var propertiesKeyword = EatToken();
|
var propertiesKeyword = EatToken();
|
||||||
AttributeListSyntaxNode attributes = null;
|
AttributeListSyntaxNode attributes = null;
|
||||||
if (CurrentToken.Kind == TokenKind.OpeningBracket)
|
if (CurrentToken.Kind == TokenKind.OpenParenthesisToken)
|
||||||
{
|
{
|
||||||
attributes = ParseAttributesList();
|
attributes = ParseAttributesList();
|
||||||
}
|
}
|
||||||
@ -903,18 +903,18 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
private EnumerationItemValueSyntaxNode ParseEnumerationValue()
|
private EnumerationItemValueSyntaxNode ParseEnumerationValue()
|
||||||
{
|
{
|
||||||
if (CurrentToken.Kind == TokenKind.OpeningBracket)
|
if (CurrentToken.Kind == TokenKind.OpenParenthesisToken)
|
||||||
{
|
{
|
||||||
var builder = new SyntaxListBuilder();
|
var builder = new SyntaxListBuilder();
|
||||||
var openingBracket = EatToken(TokenKind.OpeningBracket);
|
var openingBracket = EatToken(TokenKind.OpenParenthesisToken);
|
||||||
var expression = ParseExpression() ?? Factory.EmptyExpressionSyntax();
|
var expression = ParseExpression() ?? Factory.EmptyExpressionSyntax();
|
||||||
builder.Add(expression);
|
builder.Add(expression);
|
||||||
while (CurrentToken.Kind == TokenKind.Comma)
|
while (CurrentToken.Kind == TokenKind.CommaToken)
|
||||||
{
|
{
|
||||||
builder.Add(EatToken());
|
builder.Add(EatToken());
|
||||||
builder.Add(ParseExpression());
|
builder.Add(ParseExpression());
|
||||||
}
|
}
|
||||||
var closingBracket = EatToken(TokenKind.ClosingBracket);
|
var closingBracket = EatToken(TokenKind.CloseParenthesisToken);
|
||||||
return Factory.EnumerationItemValueSyntax(openingBracket, builder.ToList(), closingBracket);
|
return Factory.EnumerationItemValueSyntax(openingBracket, builder.ToList(), closingBracket);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@ -933,7 +933,7 @@ namespace Parser.Internal
|
|||||||
var enumerationKeyword = EatToken();
|
var enumerationKeyword = EatToken();
|
||||||
var builder = new SyntaxListBuilder<EnumerationItemSyntaxNode>();
|
var builder = new SyntaxListBuilder<EnumerationItemSyntaxNode>();
|
||||||
AttributeListSyntaxNode attributes = null;
|
AttributeListSyntaxNode attributes = null;
|
||||||
if (CurrentToken.Kind == TokenKind.OpeningBracket)
|
if (CurrentToken.Kind == TokenKind.OpenParenthesisToken)
|
||||||
{
|
{
|
||||||
attributes = ParseAttributesList();
|
attributes = ParseAttributesList();
|
||||||
}
|
}
|
||||||
@ -955,7 +955,7 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
var eventsKeyword = EatToken();
|
var eventsKeyword = EatToken();
|
||||||
AttributeListSyntaxNode attributes = null;
|
AttributeListSyntaxNode attributes = null;
|
||||||
if (CurrentToken.Kind == TokenKind.OpeningBracket)
|
if (CurrentToken.Kind == TokenKind.OpenParenthesisToken)
|
||||||
{
|
{
|
||||||
attributes = ParseAttributesList();
|
attributes = ParseAttributesList();
|
||||||
}
|
}
|
||||||
@ -974,7 +974,7 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
var builder = new SyntaxListBuilder();
|
var builder = new SyntaxListBuilder();
|
||||||
builder.Add(ParseCompoundName());
|
builder.Add(ParseCompoundName());
|
||||||
while (CurrentToken.Kind == TokenKind.BitwiseAnd)
|
while (CurrentToken.Kind == TokenKind.AmpersandToken)
|
||||||
{
|
{
|
||||||
builder.Add(EatToken());
|
builder.Add(EatToken());
|
||||||
builder.Add(ParseCompoundName());
|
builder.Add(ParseCompoundName());
|
||||||
@ -994,13 +994,13 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
var classdefKeyword = EatToken();
|
var classdefKeyword = EatToken();
|
||||||
AttributeListSyntaxNode attributes = null;
|
AttributeListSyntaxNode attributes = null;
|
||||||
if (CurrentToken.Kind == TokenKind.OpeningBracket)
|
if (CurrentToken.Kind == TokenKind.OpenParenthesisToken)
|
||||||
{
|
{
|
||||||
attributes = ParseAttributesList();
|
attributes = ParseAttributesList();
|
||||||
}
|
}
|
||||||
var className = Factory.IdentifierNameSyntax(EatToken(TokenKind.Identifier));
|
var className = Factory.IdentifierNameSyntax(EatToken(TokenKind.IdentifierToken));
|
||||||
BaseClassListSyntaxNode baseClassList = null;
|
BaseClassListSyntaxNode baseClassList = null;
|
||||||
if (CurrentToken.Kind == TokenKind.Less)
|
if (CurrentToken.Kind == TokenKind.LessToken)
|
||||||
{
|
{
|
||||||
baseClassList = ParseBaseClassList();
|
baseClassList = ParseBaseClassList();
|
||||||
}
|
}
|
||||||
@ -1046,7 +1046,7 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
private StatementSyntaxNode ParseStatement()
|
private StatementSyntaxNode ParseStatement()
|
||||||
{
|
{
|
||||||
if (CurrentToken.Kind == TokenKind.Identifier)
|
if (CurrentToken.Kind == TokenKind.IdentifierToken)
|
||||||
{
|
{
|
||||||
switch (CurrentToken.Text)
|
switch (CurrentToken.Text)
|
||||||
{
|
{
|
||||||
@ -1075,12 +1075,12 @@ namespace Parser.Internal
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CurrentToken.Kind == TokenKind.OpeningSquareBracket)
|
if (CurrentToken.Kind == TokenKind.OpenSquareBracketToken)
|
||||||
{
|
{
|
||||||
return ParseExpressionStatement();
|
return ParseExpressionStatement();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CurrentToken.Kind == TokenKind.Semicolon)
|
if (CurrentToken.Kind == TokenKind.SemicolonToken)
|
||||||
{
|
{
|
||||||
return Factory.EmptyStatementSyntax(EatToken());
|
return Factory.EmptyStatementSyntax(EatToken());
|
||||||
}
|
}
|
||||||
@ -1090,7 +1090,7 @@ namespace Parser.Internal
|
|||||||
private SyntaxList ParseStatementList()
|
private SyntaxList ParseStatementList()
|
||||||
{
|
{
|
||||||
var builder = new SyntaxListBuilder();
|
var builder = new SyntaxListBuilder();
|
||||||
while (CurrentToken.Kind != TokenKind.EndOfFile)
|
while (CurrentToken.Kind != TokenKind.EndOfFileToken)
|
||||||
{
|
{
|
||||||
var node = ParseStatement();
|
var node = ParseStatement();
|
||||||
if (node == null)
|
if (node == null)
|
||||||
@ -1098,8 +1098,8 @@ namespace Parser.Internal
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
builder.Add(node);
|
builder.Add(node);
|
||||||
while (CurrentToken.Kind == TokenKind.Comma
|
while (CurrentToken.Kind == TokenKind.CommaToken
|
||||||
|| CurrentToken.Kind == TokenKind.Semicolon)
|
|| CurrentToken.Kind == TokenKind.SemicolonToken)
|
||||||
{
|
{
|
||||||
builder.Add(EatToken());
|
builder.Add(EatToken());
|
||||||
}
|
}
|
||||||
|
@ -38,41 +38,41 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
switch (kind)
|
switch (kind)
|
||||||
{
|
{
|
||||||
case TokenKind.Assignment:
|
case TokenKind.EqualsToken:
|
||||||
return Precedence.Assignment;
|
return Precedence.Assignment;
|
||||||
case TokenKind.LogicalOr:
|
case TokenKind.PipePipeToken:
|
||||||
return Precedence.LogicalOr;
|
return Precedence.LogicalOr;
|
||||||
case TokenKind.LogicalAnd:
|
case TokenKind.AmpersandAmpersandToken:
|
||||||
return Precedence.LogicalAnd;
|
return Precedence.LogicalAnd;
|
||||||
case TokenKind.BitwiseOr:
|
case TokenKind.PipeToken:
|
||||||
return Precedence.BitwiseOr;
|
return Precedence.BitwiseOr;
|
||||||
case TokenKind.BitwiseAnd:
|
case TokenKind.AmpersandToken:
|
||||||
return Precedence.BitwiseAnd;
|
return Precedence.BitwiseAnd;
|
||||||
case TokenKind.Less:
|
case TokenKind.LessToken:
|
||||||
case TokenKind.LessOrEqual:
|
case TokenKind.LessOrEqualsToken:
|
||||||
case TokenKind.Greater:
|
case TokenKind.GreaterToken:
|
||||||
case TokenKind.GreaterOrEqual:
|
case TokenKind.GreaterOrEqualsToken:
|
||||||
case TokenKind.Equality:
|
case TokenKind.EqualsEqualsToken:
|
||||||
case TokenKind.Inequality:
|
case TokenKind.TildeEqualsToken:
|
||||||
return Precedence.Relational;
|
return Precedence.Relational;
|
||||||
case TokenKind.Colon:
|
case TokenKind.ColonToken:
|
||||||
return Precedence.Colon;
|
return Precedence.Colon;
|
||||||
case TokenKind.Plus:
|
case TokenKind.PlusToken:
|
||||||
case TokenKind.Minus:
|
case TokenKind.MinusToken:
|
||||||
return Precedence.Additive;
|
return Precedence.Additive;
|
||||||
case TokenKind.Multiply:
|
case TokenKind.StarToken:
|
||||||
case TokenKind.DotMultiply:
|
case TokenKind.DotStarToken:
|
||||||
case TokenKind.Divide:
|
case TokenKind.SlashToken:
|
||||||
case TokenKind.DotDivide:
|
case TokenKind.DotSlashToken:
|
||||||
case TokenKind.Backslash:
|
case TokenKind.BackslashToken:
|
||||||
case TokenKind.DotBackslash:
|
case TokenKind.DotBackslashToken:
|
||||||
return Precedence.Multiplicative;
|
return Precedence.Multiplicative;
|
||||||
case TokenKind.Not:
|
case TokenKind.TildeToken:
|
||||||
return Precedence.Unary;
|
return Precedence.Unary;
|
||||||
case TokenKind.Power:
|
case TokenKind.CaretToken:
|
||||||
case TokenKind.DotPower:
|
case TokenKind.DotCaretToken:
|
||||||
case TokenKind.Transpose:
|
case TokenKind.ApostropheToken:
|
||||||
case TokenKind.DotTranspose:
|
case TokenKind.DotApostropheToken:
|
||||||
return Precedence.Power;
|
return Precedence.Power;
|
||||||
default:
|
default:
|
||||||
return Precedence.Expression;
|
return Precedence.Expression;
|
||||||
@ -113,9 +113,9 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
switch (tokenKind)
|
switch (tokenKind)
|
||||||
{
|
{
|
||||||
case TokenKind.OpeningBrace:
|
case TokenKind.OpenBraceToken:
|
||||||
case TokenKind.OpeningBracket:
|
case TokenKind.OpenParenthesisToken:
|
||||||
case TokenKind.OpeningSquareBracket:
|
case TokenKind.OpenSquareBracketToken:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
@ -126,9 +126,9 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
switch (tokenKind)
|
switch (tokenKind)
|
||||||
{
|
{
|
||||||
case TokenKind.ClosingBrace:
|
case TokenKind.CloseBraceToken:
|
||||||
case TokenKind.ClosingBracket:
|
case TokenKind.CloseParenthesisToken:
|
||||||
case TokenKind.ClosingSquareBracket:
|
case TokenKind.CloseSquareBracketToken:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
@ -144,12 +144,12 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
switch (tokenKind)
|
switch (tokenKind)
|
||||||
{
|
{
|
||||||
case TokenKind.ClosingBrace:
|
case TokenKind.CloseBraceToken:
|
||||||
return TokenKind.OpeningBrace;
|
return TokenKind.OpenBraceToken;
|
||||||
case TokenKind.ClosingBracket:
|
case TokenKind.CloseParenthesisToken:
|
||||||
return TokenKind.OpeningBracket;
|
return TokenKind.OpenParenthesisToken;
|
||||||
case TokenKind.ClosingSquareBracket:
|
case TokenKind.CloseSquareBracketToken:
|
||||||
return TokenKind.OpeningSquareBracket;
|
return TokenKind.OpenSquareBracketToken;
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -224,10 +224,10 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
switch (kind)
|
switch (kind)
|
||||||
{
|
{
|
||||||
case TokenKind.Plus:
|
case TokenKind.PlusToken:
|
||||||
case TokenKind.Minus:
|
case TokenKind.MinusToken:
|
||||||
case TokenKind.Not:
|
case TokenKind.TildeToken:
|
||||||
case TokenKind.QuestionMark:
|
case TokenKind.QuestionToken:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
@ -252,29 +252,29 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
switch (kind)
|
switch (kind)
|
||||||
{
|
{
|
||||||
case TokenKind.Assignment:
|
case TokenKind.EqualsToken:
|
||||||
case TokenKind.LogicalOr:
|
case TokenKind.PipePipeToken:
|
||||||
case TokenKind.LogicalAnd:
|
case TokenKind.AmpersandAmpersandToken:
|
||||||
case TokenKind.BitwiseOr:
|
case TokenKind.PipeToken:
|
||||||
case TokenKind.BitwiseAnd:
|
case TokenKind.AmpersandToken:
|
||||||
case TokenKind.Less:
|
case TokenKind.LessToken:
|
||||||
case TokenKind.LessOrEqual:
|
case TokenKind.LessOrEqualsToken:
|
||||||
case TokenKind.Greater:
|
case TokenKind.GreaterToken:
|
||||||
case TokenKind.GreaterOrEqual:
|
case TokenKind.GreaterOrEqualsToken:
|
||||||
case TokenKind.Equality:
|
case TokenKind.EqualsEqualsToken:
|
||||||
case TokenKind.Inequality:
|
case TokenKind.TildeEqualsToken:
|
||||||
case TokenKind.Colon:
|
case TokenKind.ColonToken:
|
||||||
case TokenKind.Plus:
|
case TokenKind.PlusToken:
|
||||||
case TokenKind.Minus:
|
case TokenKind.MinusToken:
|
||||||
case TokenKind.Multiply:
|
case TokenKind.StarToken:
|
||||||
case TokenKind.DotMultiply:
|
case TokenKind.DotStarToken:
|
||||||
case TokenKind.Divide:
|
case TokenKind.SlashToken:
|
||||||
case TokenKind.DotDivide:
|
case TokenKind.DotSlashToken:
|
||||||
case TokenKind.Backslash:
|
case TokenKind.BackslashToken:
|
||||||
case TokenKind.DotBackslash:
|
case TokenKind.DotBackslashToken:
|
||||||
case TokenKind.Not:
|
case TokenKind.TildeToken:
|
||||||
case TokenKind.Power:
|
case TokenKind.CaretToken:
|
||||||
case TokenKind.DotPower:
|
case TokenKind.DotCaretToken:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
@ -290,13 +290,13 @@ namespace Parser.Internal
|
|||||||
{
|
{
|
||||||
switch (kind)
|
switch (kind)
|
||||||
{
|
{
|
||||||
case TokenKind.Plus:
|
case TokenKind.PlusToken:
|
||||||
return TokenKind.UnaryPlus;
|
return TokenKind.UnaryPlus;
|
||||||
case TokenKind.Minus:
|
case TokenKind.MinusToken:
|
||||||
return TokenKind.UnaryMinus;
|
return TokenKind.UnaryMinus;
|
||||||
case TokenKind.Not:
|
case TokenKind.TildeToken:
|
||||||
return TokenKind.UnaryNot;
|
return TokenKind.UnaryNot;
|
||||||
case TokenKind.QuestionMark:
|
case TokenKind.QuestionToken:
|
||||||
return TokenKind.UnaryQuestionMark;
|
return TokenKind.UnaryQuestionMark;
|
||||||
default:
|
default:
|
||||||
throw new ArgumentException(nameof(kind));
|
throw new ArgumentException(nameof(kind));
|
||||||
|
@ -124,7 +124,7 @@ namespace Parser.Internal
|
|||||||
|
|
||||||
public SyntaxIdentifier(
|
public SyntaxIdentifier(
|
||||||
string text
|
string text
|
||||||
) : base(TokenKind.Identifier)
|
) : base(TokenKind.IdentifierToken)
|
||||||
{
|
{
|
||||||
_text = text;
|
_text = text;
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ namespace Parser.Internal
|
|||||||
IReadOnlyList<SyntaxTrivia> trailingTrivia)
|
IReadOnlyList<SyntaxTrivia> trailingTrivia)
|
||||||
{
|
{
|
||||||
return new SyntaxToken.SyntaxTokenWithValueAndTrivia<string>(
|
return new SyntaxToken.SyntaxTokenWithValueAndTrivia<string>(
|
||||||
TokenKind.UnquotedStringLiteral,
|
TokenKind.UnquotedStringLiteralToken,
|
||||||
text,
|
text,
|
||||||
value,
|
value,
|
||||||
leadingTrivia,
|
leadingTrivia,
|
||||||
|
@ -8,114 +8,115 @@
|
|||||||
None = 0,
|
None = 0,
|
||||||
BadToken = 1,
|
BadToken = 1,
|
||||||
// The lexer puts a virtual "end of file" token at the end of the parsed file.
|
// The lexer puts a virtual "end of file" token at the end of the parsed file.
|
||||||
EndOfFile = 2,
|
EndOfFileToken = 2,
|
||||||
// Identifier: could be a reserved word, a variable name, a class name, etc.
|
// Identifier: could be a reserved word, a variable name, a class name, etc.
|
||||||
Identifier = 3,
|
IdentifierToken = 3,
|
||||||
// Number literal: 123, 45.678, 2e-5, etc.
|
// Number literal: 123, 45.678, 2e-5, etc.
|
||||||
NumberLiteral = 4,
|
NumberLiteralToken = 4,
|
||||||
// String literal: 'abc', '123', etc. The "usual" string literals are single-quoted and are just char arrays.
|
// String literal: 'abc', '123', etc. The "usual" string literals are single-quoted and are just char arrays.
|
||||||
StringLiteral = 5,
|
StringLiteralToken = 5,
|
||||||
// Double-quoted string literal: "abc", "123", etc. These are the "new" string literal that are more like strings
|
// Double-quoted string literal: "abc", "123", etc. These are the "new" string literal that are more like strings
|
||||||
// and less like char arrays (for example, char arrays could be columns instead of rows, or even multi-dimensional).
|
// and less like char arrays (for example, char arrays could be columns instead of rows, or even multi-dimensional).
|
||||||
DoubleQuotedStringLiteral = 6,
|
DoubleQuotedStringLiteralToken = 6,
|
||||||
// This is for supporting "command statements" like
|
// This is for supporting "command statements" like
|
||||||
// > cd some/+folder/
|
// > cd some/+folder/
|
||||||
// In this example, "some/folder" should be treated as a string literal (for example, "+' there should be a part
|
// In this example, "some/folder" should be treated as a string literal (for example, "+' there should be a part
|
||||||
// of it, and not parsed as a binary operator).
|
// of it, and not parsed as a binary operator).
|
||||||
UnquotedStringLiteral = 7,
|
UnquotedStringLiteralToken = 7,
|
||||||
|
|
||||||
// trivia
|
// trivia
|
||||||
|
|
||||||
// Spaces, tabs, etc.
|
// Spaces, tabs, etc.
|
||||||
Whitespace = 10,
|
WhitespaceToken = 10,
|
||||||
// New line characters.
|
// New line characters.
|
||||||
Newline = 11,
|
NewlineToken = 11,
|
||||||
// There are three types of comments:
|
// There are three types of comments:
|
||||||
// * comments starting with % and lasting till the end of the line;
|
// * comments starting with % and lasting till the end of the line;
|
||||||
// * comments starting with %{ and ending with %}, possibly spanning several lines;
|
// * comments starting with %{ and ending with %}, possibly spanning several lines;
|
||||||
// * comments starting with ... and lasting till the end of the line.
|
// * comments starting with ... and lasting till the end of the line.
|
||||||
// At the moment, this token is used to accomodate all of them, so the other two
|
// At the moment, this token is used to accomodate all of them, so the other two
|
||||||
// (MultilineComment = 13 and DotDotDot = 56 are not used).
|
// (MultilineComment = 13 and DotDotDot = 56 are not used).
|
||||||
Comment = 12,
|
CommentToken = 12,
|
||||||
// Comments starting with %{ and ending with %}, possibly spanning several lines. Not used, see Comment = 12.
|
// Comments starting with %{ and ending with %}, possibly spanning several lines. Not used, see Comment = 12.
|
||||||
MultilineComment = 13,
|
MultilineCommentToken = 13,
|
||||||
|
|
||||||
// operators
|
// operators
|
||||||
|
|
||||||
// =
|
// =
|
||||||
Assignment = 20,
|
EqualsToken = 20,
|
||||||
// ==
|
// ==
|
||||||
Equality = 21,
|
EqualsEqualsToken = 21,
|
||||||
// ~=
|
// ~=
|
||||||
Inequality = 22,
|
TildeEqualsToken = 22,
|
||||||
// &&
|
// &&
|
||||||
LogicalAnd = 23,
|
AmpersandAmpersandToken = 23,
|
||||||
// ||
|
// ||
|
||||||
LogicalOr = 24,
|
PipePipeToken = 24,
|
||||||
// &
|
// &
|
||||||
BitwiseAnd = 25,
|
AmpersandToken = 25,
|
||||||
// |
|
// |
|
||||||
BitwiseOr = 26,
|
PipeToken = 26,
|
||||||
// <
|
// <
|
||||||
Less = 27,
|
LessToken = 27,
|
||||||
// <=
|
// <=
|
||||||
LessOrEqual = 28,
|
LessOrEqualsToken = 28,
|
||||||
// >
|
// >
|
||||||
Greater = 29,
|
GreaterToken = 29,
|
||||||
// >=
|
// >=
|
||||||
GreaterOrEqual = 30,
|
GreaterOrEqualsToken = 30,
|
||||||
// ~
|
// ~
|
||||||
Not = 31,
|
TildeToken = 31,
|
||||||
// +
|
// +
|
||||||
Plus = 32,
|
PlusToken = 32,
|
||||||
// -
|
// -
|
||||||
Minus = 33,
|
MinusToken = 33,
|
||||||
// *
|
// *
|
||||||
Multiply = 34,
|
StarToken = 34,
|
||||||
// /
|
// /
|
||||||
Divide = 35,
|
SlashToken = 35,
|
||||||
// ^
|
// ^
|
||||||
Power = 36,
|
CaretToken = 36,
|
||||||
// \
|
// \
|
||||||
Backslash = 37,
|
BackslashToken = 37,
|
||||||
// ' (this is the same as starting string literal; we'll have some fun distinguishing those).
|
// ' (this is the same as starting string literal; we'll have some fun distinguishing those).
|
||||||
Transpose = 38,
|
ApostropheToken = 38,
|
||||||
// .*
|
// .*
|
||||||
DotMultiply = 39,
|
DotStarToken = 39,
|
||||||
// ./
|
// ./
|
||||||
DotDivide = 40,
|
DotSlashToken = 40,
|
||||||
// .^
|
// .^
|
||||||
DotPower = 41,
|
DotCaretToken = 41,
|
||||||
// .\
|
// .\
|
||||||
DotBackslash = 42,
|
DotBackslashToken = 42,
|
||||||
// .'
|
// .'
|
||||||
DotTranspose = 43,
|
DotApostropheToken = 43,
|
||||||
// @
|
// @
|
||||||
At = 44,
|
AtToken = 44,
|
||||||
// :
|
// :
|
||||||
Colon = 45,
|
ColonToken = 45,
|
||||||
// ?
|
// ?
|
||||||
QuestionMark = 46,
|
QuestionToken = 46,
|
||||||
// ,
|
// ,
|
||||||
Comma = 47,
|
CommaToken = 47,
|
||||||
// ;
|
// ;
|
||||||
Semicolon = 48,
|
SemicolonToken = 48,
|
||||||
// {
|
// {
|
||||||
OpeningBrace = 49,
|
OpenBraceToken = 49,
|
||||||
// }
|
// }
|
||||||
ClosingBrace = 50,
|
CloseBraceToken = 50,
|
||||||
// [
|
// [
|
||||||
OpeningSquareBracket = 51,
|
OpenSquareBracketToken = 51,
|
||||||
// ]
|
// ]
|
||||||
ClosingSquareBracket = 52,
|
CloseSquareBracketToken = 52,
|
||||||
// (
|
// (
|
||||||
OpeningBracket = 53,
|
OpenParenthesisToken = 53,
|
||||||
// )
|
// )
|
||||||
ClosingBracket = 54,
|
CloseParenthesisToken = 54,
|
||||||
// .
|
// .
|
||||||
Dot = 55,
|
DotToken = 55,
|
||||||
// Comments starting with ... and lasting till the end of the line. Not used, see Comment = 12.
|
// Comments starting with ... and lasting till the end of the line. Not used, see Comment = 12.
|
||||||
DotDotDot = 56,
|
DotDotDotToken = 56,
|
||||||
|
|
||||||
// Unary tokens are not recognized during lexing; they are contextually recognized while parsing.
|
// Unary tokens are not recognized during lexing; they are contextually recognized while parsing.
|
||||||
UnaryPlus = 57,
|
UnaryPlus = 57,
|
||||||
UnaryMinus = 58,
|
UnaryMinus = 58,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user