From e0f81e71b1b1878eca8a63cb8cc13b0c611257b5 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Fri, 10 Dec 2010 18:55:32 +0300 Subject: [PATCH] Elvis and null-safe access --- grammar/src/expressions.grm | 8 +++++++- grammar/src/lexical.grm | 2 ++ grammar/src/types.grm | 4 +--- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/grammar/src/expressions.grm b/grammar/src/expressions.grm index fc64a858cec..01942310760 100644 --- a/grammar/src/expressions.grm +++ b/grammar/src/expressions.grm @@ -49,7 +49,12 @@ expressionWithPrecedences // See the precedence table, everything associates to ; memberAccessExpression - : (expression ".")? memberAccess + : (expression accessOp)? memberAccess + ; + +accessOp + : "." + : "?." ; typingExpression @@ -78,6 +83,7 @@ binaryOperation // Decreasing precedence // No | & ^ ~ : "&&" : "||" + : "?:" // assignments ; diff --git a/grammar/src/lexical.grm b/grammar/src/lexical.grm index b700228cea5..de688c15bed 100644 --- a/grammar/src/lexical.grm +++ b/grammar/src/lexical.grm @@ -25,6 +25,8 @@ NoEscapeString : /* """-quoted string */; => .. ? +?: +?. */ /* Keywords: diff --git a/grammar/src/types.grm b/grammar/src/types.grm index 5318da251c7..9d41878a3a0 100644 --- a/grammar/src/types.grm +++ b/grammar/src/types.grm @@ -41,6 +41,4 @@ tupleType : "(" parameter{","} ")" // tuple with named entries, the names do not affect assignment compatibility ; - -//////////////////////////////////////// - +//////////////////////////////////////// \ No newline at end of file