From 7b7fe6c5a9c8db33f54f3fcc5e4568ee117c5373 Mon Sep 17 00:00:00 2001 From: John Schneiderman Date: Sun, 15 Sep 2024 10:49:33 +0200 Subject: [PATCH] Adds the warning diagnositc directive. --- oscar64/Scanner.cpp | 18 ++++++++++++++++++ oscar64/Scanner.h | 1 + 2 files changed, 19 insertions(+) diff --git a/oscar64/Scanner.cpp b/oscar64/Scanner.cpp index 7be59c4..a7fe446 100644 --- a/oscar64/Scanner.cpp +++ b/oscar64/Scanner.cpp @@ -144,6 +144,7 @@ const char* TokenNames[] = "'#ifdef'", "'#ifndef'", "'#error'", + "'#warning'", "'#pragma'", "'#line'", @@ -784,6 +785,19 @@ void Scanner::NextPreToken(void) } exit(EXIT_FAILURE); } + else if (mToken == TK_PREP_WARN) + { + NextRawToken(); + + if (mToken == TK_STRING) + { + this->Warning((const char*)mTokenString); + } + else + { + this->Warning("Missing or invalid warning message"); + } + } else if (mToken == TK_PREP_IDENT) { Macro* def = nullptr; @@ -1166,6 +1180,8 @@ void Scanner::NextSkipRawToken(void) mToken = TK_PREP_DEFINE; else if (!strcmp(tkprep, "error")) mToken = TK_PREP_ERROR; + else if (!strcmp(tkprep, "warning")) + mToken = TK_PREP_WARN; else if (!strcmp(tkprep, "undef")) mToken = TK_PREP_UNDEF; else if (!strcmp(tkprep, "include")) @@ -1556,6 +1572,8 @@ void Scanner::NextRawToken(void) mToken = TK_PREP_DEFINE; else if (!strcmp(tkprep, "error")) mToken = TK_PREP_ERROR; + else if (!strcmp(tkprep, "warning")) + mToken = TK_PREP_WARN; else if (!strcmp(tkprep, "undef")) mToken = TK_PREP_UNDEF; else if (!strcmp(tkprep, "include")) diff --git a/oscar64/Scanner.h b/oscar64/Scanner.h index e9f478c..daea112 100644 --- a/oscar64/Scanner.h +++ b/oscar64/Scanner.h @@ -142,6 +142,7 @@ enum Token TK_PREP_IFDEF, TK_PREP_IFNDEF, TK_PREP_ERROR, + TK_PREP_WARN, TK_PREP_PRAGMA, TK_PREP_LINE,