diff --git a/doc/language/lexical-structure/punctuators.md b/doc/language/lexical-structure/punctuators.md index e0692bad..6c90269e 100644 --- a/doc/language/lexical-structure/punctuators.md +++ b/doc/language/lexical-structure/punctuators.md @@ -8,7 +8,6 @@ punctuator ::= '.' | '::' | ';' | '->' | - '=>' | '@' | '#' | '?' | diff --git a/doc/language/syntactic-structure/expressions/call.md b/doc/language/syntactic-structure/expressions/call.md index 9375ffd5..24b63bbd 100644 --- a/doc/language/syntactic-structure/expressions/call.md +++ b/doc/language/syntactic-structure/expressions/call.md @@ -9,6 +9,6 @@ call-argument ::= expression ```ebnf call-expression-try ::= '?' call-expression-try-catch? call-expression-try-catch ::= 'catch' '{' call-expression-try-catch-arm (',' call-expression-try-catch-arm)* ','? '}' -call-expression-try-catch-arm ::= try-catch-pattern call-expression-try-catch-arm-guard? '=>' expression +call-expression-try-catch-arm ::= try-catch-pattern call-expression-try-catch-arm-guard? '->' expression call-expression-try-catch-arm-guard ::= 'if' expression ``` diff --git a/doc/language/syntactic-structure/expressions/control/condition.md b/doc/language/syntactic-structure/expressions/control/condition.md index 11e8825f..36a98654 100644 --- a/doc/language/syntactic-structure/expressions/control/condition.md +++ b/doc/language/syntactic-structure/expressions/control/condition.md @@ -2,5 +2,5 @@ ```ebnf condition-expression ::= 'cond' '{' condition-expression-arm (',' condition-expression-arm)* ','? '}' -condition-expression-arm ::= expression '=>' expression +condition-expression-arm ::= expression '->' expression ``` diff --git a/doc/language/syntactic-structure/expressions/control/match.md b/doc/language/syntactic-structure/expressions/control/match.md index 6efd37a1..08883295 100644 --- a/doc/language/syntactic-structure/expressions/control/match.md +++ b/doc/language/syntactic-structure/expressions/control/match.md @@ -2,6 +2,6 @@ ```ebnf match-expression ::= 'match' expression '{' match-expression-arm (',' match-expression-arm)* ','? '}' -match-expression-arm ::= pattern match-expression-arm-guard? '=>' expression +match-expression-arm ::= pattern match-expression-arm-guard? '->' expression match-expression-arm-guard ::= 'if' expression ``` diff --git a/doc/language/syntactic-structure/expressions/control/receive.md b/doc/language/syntactic-structure/expressions/control/receive.md index 9e45e4b2..827d1755 100644 --- a/doc/language/syntactic-structure/expressions/control/receive.md +++ b/doc/language/syntactic-structure/expressions/control/receive.md @@ -2,7 +2,7 @@ ```ebnf receive-expression ::= 'recv' '{' receive-expression-arm (',' receive-expression-arm)* ','? '}' receive-expression-else? -receive-expression-arm ::= lower-identifier receive-parameter-list receive-expression-arm-guard? '=>' expression ';' +receive-expression-arm ::= lower-identifier receive-parameter-list receive-expression-arm-guard? '->' expression ';' receive-expression-arm-guard ::= 'if' expression receive-expression-else ::= 'else' block-expression receive-parameter-list ::= '(' (receive-parameter (',' receive-parameter)*)? ')' diff --git a/doc/language/syntactic-structure/expressions/values/lambda.md b/doc/language/syntactic-structure/expressions/values/lambda.md index 9d2547c0..9acdc937 100644 --- a/doc/language/syntactic-structure/expressions/values/lambda.md +++ b/doc/language/syntactic-structure/expressions/values/lambda.md @@ -1,7 +1,7 @@ # Lambda Expression ```ebnf -lambda-expression ::= 'fn' lambda-parameter-list '=>' expression +lambda-expression ::= 'fn' lambda-parameter-list '->' expression lambda-parameter-list ::= '(' (lambda-parameter (',' lambda-parameter)*)? ')' lambda-parameter ::= attribute* lambda-parameter-binding lambda-parameter-binding ::= lower-identifier | diff --git a/src/syntax/LanguageLexer.cs b/src/syntax/LanguageLexer.cs index afde5f0e..d5f93cc5 100644 --- a/src/syntax/LanguageLexer.cs +++ b/src/syntax/LanguageLexer.cs @@ -144,7 +144,6 @@ SyntaxTokenKind.Colon or SyntaxTokenKind.ColonColon or SyntaxTokenKind.Semicolon or SyntaxTokenKind.MinusCloseAngle or - SyntaxTokenKind.EqualsCloseAngle or SyntaxTokenKind.At or SyntaxTokenKind.Hash or SyntaxTokenKind.Question or @@ -461,7 +460,6 @@ private void LexComment(SourceLocation location, ImmutableArray.Bu ('!', '=') => SyntaxTokenKind.ExclamationEquals, ('<', '=') => SyntaxTokenKind.OpenAngleEquals, ('=', '=') => SyntaxTokenKind.EqualsEquals, - ('=', '>') => SyntaxTokenKind.EqualsCloseAngle, ('=', _) => SyntaxTokenKind.Equals, _ => default(SyntaxTokenKind?), }; @@ -490,7 +488,7 @@ private void LexComment(SourceLocation location, ImmutableArray.Bu parts++; } - // Handle remaining special operators and custom operators. + // Handle remaining special operators, and then custom operators. return (parts, ch1, ch2) switch { (1, '<', _) => (location, SyntaxTokenKind.OpenAngle), diff --git a/src/syntax/LanguageParser.cs b/src/syntax/LanguageParser.cs index 43c05387..7b85baf4 100644 --- a/src/syntax/LanguageParser.cs +++ b/src/syntax/LanguageParser.cs @@ -1406,7 +1406,7 @@ private LambdaExpressionSyntax ParseLambdaExpression() { var fn = Read(); var parms = ParseLambdaParameterList(); - var arrow = Expect(SyntaxTokenKind.EqualsCloseAngle); + var arrow = Expect(SyntaxTokenKind.MinusCloseAngle); var body = ParseExpression(); return new(fn, parms, arrow, body); @@ -1470,7 +1470,7 @@ private ConditionExpressionSyntax ParseConditionExpression() private ConditionExpressionArmSyntax ParseConditionExpressionArm() { var condition = ParseExpression(); - var arrow = Expect(SyntaxTokenKind.EqualsCloseAngle); + var arrow = Expect(SyntaxTokenKind.MinusCloseAngle); var body = ParseExpression(); return new(condition, arrow, body); @@ -1496,7 +1496,7 @@ private ExpressionPatternArmSyntax ParseExpressionPatternArm() { var pat = ParsePattern(); var guard = ParseOptional(SyntaxTokenKind.IfKeyword, static @this => @this.ParseExpressionArmGuard()); - var arrow = Expect(SyntaxTokenKind.EqualsCloseAngle); + var arrow = Expect(SyntaxTokenKind.MinusCloseAngle); var body = ParseExpression(); return new(pat, guard, arrow, body); @@ -1531,7 +1531,7 @@ private ReceiveExpressionArmSyntax ParseReceiveExpressionArm() var name = ExpectCodeIdentifier(); var parms = ParseReceiveParameterList(); var guard = ParseOptional(SyntaxTokenKind.IfKeyword, static @this => @this.ParseExpressionArmGuard()); - var arrow = Expect(SyntaxTokenKind.EqualsCloseAngle); + var arrow = Expect(SyntaxTokenKind.MinusCloseAngle); var body = ParseExpression(); return new(name, parms, guard, arrow, body); diff --git a/src/syntax/SyntaxFacts.cs b/src/syntax/SyntaxFacts.cs index 3e9ef7cc..fd4c0995 100644 --- a/src/syntax/SyntaxFacts.cs +++ b/src/syntax/SyntaxFacts.cs @@ -325,7 +325,6 @@ internal static string GetFriendlyName(SyntaxTokenKind kind) SyntaxTokenKind.ColonColon => "'::'", SyntaxTokenKind.Semicolon => "';'", SyntaxTokenKind.MinusCloseAngle => "'->'", - SyntaxTokenKind.EqualsCloseAngle => "'=>'", SyntaxTokenKind.At => "'@'", SyntaxTokenKind.Hash => "'#'", SyntaxTokenKind.Question => "'?'", @@ -378,15 +377,6 @@ internal static string GetFriendlyName(SyntaxTokenKind kind) SyntaxTokenKind.RealKeyword => "'real' keyword", SyntaxTokenKind.RefKeyword => "'ref' keyword", SyntaxTokenKind.StrKeyword => "'str' keyword", - SyntaxTokenKind.FriendKeyword => "'friend' keyword", - SyntaxTokenKind.MacroKeyword => "'macro' keyword", - SyntaxTokenKind.MetaKeyword => "'meta' keyword", - SyntaxTokenKind.PragmaKeyword => "'pragma' keyword", - SyntaxTokenKind.QuoteKeyword => "'quote' keyword", - SyntaxTokenKind.TryKeyword => "'try' keyword", - SyntaxTokenKind.UnquoteKeyword => "'unquote' keyword", - SyntaxTokenKind.WithKeyword => "'with' keyword", - SyntaxTokenKind.YieldKeyword => "'yield' keyword", SyntaxTokenKind.UpperIdentifier => "uppercase identifier", SyntaxTokenKind.LowerIdentifier => "lowercase identifier", SyntaxTokenKind.DiscardIdentifier => "discard identifier", diff --git a/src/syntax/Tree/SyntaxTokenKind.cs b/src/syntax/Tree/SyntaxTokenKind.cs index a0292b0f..b4719a28 100644 --- a/src/syntax/Tree/SyntaxTokenKind.cs +++ b/src/syntax/Tree/SyntaxTokenKind.cs @@ -23,7 +23,6 @@ public enum SyntaxTokenKind ColonColon, Semicolon, MinusCloseAngle, - EqualsCloseAngle, At, Hash, Question,