From 0995df197ee613136ae0285a4fcba8315a011245 Mon Sep 17 00:00:00 2001 From: Alexander Luzgarev Date: Tue, 3 Apr 2018 19:40:04 +0200 Subject: [PATCH] Parse unary question mark operator --- Lexer/PureTokenFactory.cs | 2 +- Lexer/TokenKind.cs | 1 + Parser/MParser.cs | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Lexer/PureTokenFactory.cs b/Lexer/PureTokenFactory.cs index a3a998e..82e8fd4 100644 --- a/Lexer/PureTokenFactory.cs +++ b/Lexer/PureTokenFactory.cs @@ -58,7 +58,7 @@ "+", // UnaryPlus = 57, "-", // UnaryMinus = 58, "~", // UnaryNot = 59, - + "?", // UnaryQuestionMark = 60, }; public PureToken CreatePunctuation(TokenKind kind) diff --git a/Lexer/TokenKind.cs b/Lexer/TokenKind.cs index d67a3c5..ea77db8 100644 --- a/Lexer/TokenKind.cs +++ b/Lexer/TokenKind.cs @@ -50,5 +50,6 @@ UnaryPlus = 57, UnaryMinus = 58, UnaryNot = 59, + UnaryQuestionMark = 60, } } \ No newline at end of file diff --git a/Parser/MParser.cs b/Parser/MParser.cs index 5293c1f..a9fb988 100644 --- a/Parser/MParser.cs +++ b/Parser/MParser.cs @@ -495,6 +495,7 @@ namespace Parser case TokenKind.Plus: case TokenKind.Minus: case TokenKind.Not: + case TokenKind.QuestionMark: return true; default: return false; @@ -549,6 +550,8 @@ namespace Parser return TokenKind.UnaryMinus; case TokenKind.Not: return TokenKind.UnaryNot; + case TokenKind.QuestionMark: + return TokenKind.UnaryQuestionMark; default: throw new ArgumentException(nameof(kind)); }