From 3045bd2d88b15db84a182561d0d1035e0fbdbfd3 Mon Sep 17 00:00:00 2001 From: belliash Date: Thu, 20 Jun 2019 14:30:49 +0200 Subject: [PATCH] Update lexer. Add missing operators. --- engine/lexer.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/engine/lexer.c b/engine/lexer.c index b427b21..973b593 100644 --- a/engine/lexer.c +++ b/engine/lexer.c @@ -340,6 +340,12 @@ static sxi32 TokenizeAerScript(SyStream *pStream, SyToken *pToken, void *pUserDa case '\\': pToken->nType = PH7_TK_NSSEP; break; + case '?': + if(pStream->zText < pStream->zEnd && pStream->zText[0] == '?') { + /* Current operator '??' */ + pStream->zText++; + } + break; case ':': if(pStream->zText < pStream->zEnd && pStream->zText[0] == ':') { /* Current operator: '::' */ @@ -426,9 +432,20 @@ static sxi32 TokenizeAerScript(SyStream *pStream, SyToken *pToken, void *pUserDa } break; case '*': - if(pStream->zText < pStream->zEnd && pStream->zText[0] == '=') { - /* Current operator: *= */ - pStream->zText++; + if(pStream->zText < pStream->zEnd) { + if(pStream->zText[0] == '*') { + /* Current operator: '**' */ + pStream->zText++; + if(pStream->zText < pStream->zEnd) { + if(pStream->zText[0] == '=') { + /* Current operator: **= */ + pStream->zText++; + } + } + } else if(pStream->zText[0] == '=') { + /* Current operator: *= */ + pStream->zText++; + } } break; case '/':