From db216671c33660e723c0048d819540742b337d71 Mon Sep 17 00:00:00 2001 From: Alexander Luzgarev Date: Wed, 4 Apr 2018 10:55:54 +0200 Subject: [PATCH] Parse postfix dot-transpose --- Parser.Tests/MParserShould.cs | 14 ++++++++++++++ Parser/MParser.cs | 5 +++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/Parser.Tests/MParserShould.cs b/Parser.Tests/MParserShould.cs index c2b8b44..21a8ac9 100644 --- a/Parser.Tests/MParserShould.cs +++ b/Parser.Tests/MParserShould.cs @@ -412,6 +412,20 @@ namespace Parser.Tests var f = (FunctionDeclarationNode) actual; Assert.AreEqual(3, f.InputDescription.Parameters.Parameters.Count); CollectionAssert.AreEqual(new[] { "b", "~", "c" }, f.InputDescription.Parameters.Parameters.Select(p => (p as TokenNode).Token.PureToken.LiteralText)); + Assert.AreEqual(text, actual.FullText); + } + + [Test] + public void ParseDotTranspose() + { + var text = "a.'"; + var sut = CreateParser(text); + var actual = sut.ParseExpression(); + Assert.IsInstanceOf(actual); + var e = (UnaryPostfixOperationExpressionNode) actual; + Assert.AreEqual(TokenKind.DotTranspose, e.Operation.Token.Kind); + Assert.AreEqual("a", (e.Operand as IdentifierNameNode)?.Token.PureToken.LiteralText); + Assert.AreEqual(text, actual.FullText); } } } \ No newline at end of file diff --git a/Parser/MParser.cs b/Parser/MParser.cs index 2ab4a01..d06b867 100644 --- a/Parser/MParser.cs +++ b/Parser/MParser.cs @@ -343,8 +343,9 @@ namespace Parser break; case TokenKind.Transpose: - var transposeSign = Factory.Token(EatToken()); - expression = Factory.UnaryPostfixOperationExpression(expression, transposeSign); + case TokenKind.DotTranspose: + var operation = Factory.Token(EatToken()); + expression = Factory.UnaryPostfixOperationExpression(expression, operation); break; default: return expression;