]> granicus.if.org Git - re2c/commitdiff
- Improve error messages
authorhelly <helly@642ea486-5414-0410-9d7f-a0204ed87703>
Sat, 5 May 2007 17:14:38 +0000 (17:14 +0000)
committerhelly <helly@642ea486-5414-0410-9d7f-a0204ed87703>
Sat, 5 May 2007 17:14:38 +0000 (17:14 +0000)
re2c/bootstrap/scanner.cc
re2c/code.cc
re2c/scanner.h
re2c/scanner.re

index 3a6073755bdcc5112f0f12830ad9ab153bbc81b4..20c6d45af72a34886f2b604d7d3fd823f6115fe9 100644 (file)
@@ -1,10 +1,11 @@
-/* Generated by re2c 0.13.0.dev on Tue May  1 09:59:49 2007 */
+/* Generated by re2c 0.13.0.dev on Sat May  5 19:12:48 2007 */
 #line 1 "scanner.re"
 /* $Id$ */
 #include <stdlib.h>
 #include <string.h>
 #include <iostream>
 #include <sstream>
+#include <stdarg.h>
 #include "scanner.h"
 #include "parser.h"
 #include "y.tab.h"
@@ -17,8 +18,7 @@ extern YYSTYPE yylval;
 #define MAX(a,b) (((a)>(b))?(a):(b))
 #endif
 
-#define        BSIZE   8192
-
+#define        BSIZE           8192
 #define        YYCTYPE         unsigned char
 #define        YYCURSOR        cursor
 #define        YYLIMIT         lim
@@ -1585,6 +1585,21 @@ void Scanner::fatal(uint ofs, const char *msg) const
        exit(1);
 }
 
+void Scanner::fatalf(const char *fmt, ...) const
+{
+       char szBuf[4096];
+
+       va_list args;
+       
+       va_start(args, fmt);
+       vsnprintf(szBuf, sizeof(szBuf), fmt, args);
+       va_end(args);
+       
+       szBuf[sizeof(szBuf)-1] = '0';
+       
+       fatal(szBuf);
+}
+
 Scanner::~Scanner()
 {
        if (bot)
index 1acdba2da41345248ca0d15010f410a78acd9051..307622b6d15720d6907d69c73cda47e0b0facb49 100644 (file)
@@ -2051,7 +2051,7 @@ void Scanner::config(const Str& cfg, const Str& val)
                        std::make_pair(cfg.to_string().substr(sizeof("variable:") - 1), strVal)
                        ).second)
        {
-                       fatal("variable already being used and cannot be changed");
+                       fatalf("variable '%s' already being used and cannot be changed", cfg.to_string().c_str());
        }
     }
        else if (mapDefineKeys.find(cfg.to_string()) != mapDefineKeys.end())
@@ -2060,7 +2060,7 @@ void Scanner::config(const Str& cfg, const Str& val)
                        std::make_pair(cfg.to_string().substr(sizeof("define:") - 1), strVal)
                        ).second)
        {
-                       fatal("define already being used and cannot be changed");
+                       fatalf("define '%s' already being used and cannot be changed", cfg.to_string().c_str());
                }
     }
        else if (mapLabelKeys.find(cfg.to_string()) != mapLabelKeys.end())
@@ -2069,7 +2069,7 @@ void Scanner::config(const Str& cfg, const Str& val)
                        std::make_pair(cfg.to_string().substr(sizeof("label:") - 1), strVal)
                        ).second)
        {
-                       fatal("label already being used and cannot be changed");
+                       fatalf("label '%s' already being used and cannot be changed", cfg.to_string().c_str());
        }
     }
        else
index a15e96d64fee56d519bd535bea9d0be17d50d3b3..cce224dc3269a74927fa0f6101fed9a91c14083e 100644 (file)
@@ -32,6 +32,7 @@ public:
        int echo();
        int scan();
        
+       void fatalf(const char*, ...) const;
        void fatal(const char*) const;
        void fatal(uint, const char*) const;
 
index a03008af79a7400db07040e393ec10a9e94cf678..5e2ff816ebfbd3c071057678e9a8c585fc43b393 100644 (file)
@@ -3,6 +3,7 @@
 #include <string.h>
 #include <iostream>
 #include <sstream>
+#include <stdarg.h>
 #include "scanner.h"
 #include "parser.h"
 #include "y.tab.h"
@@ -15,8 +16,7 @@ extern YYSTYPE yylval;
 #define MAX(a,b) (((a)>(b))?(a):(b))
 #endif
 
-#define        BSIZE   8192
-
+#define        BSIZE           8192
 #define        YYCTYPE         unsigned char
 #define        YYCURSOR        cursor
 #define        YYLIMIT         lim
@@ -492,6 +492,21 @@ void Scanner::fatal(uint ofs, const char *msg) const
        exit(1);
 }
 
+void Scanner::fatalf(const char *fmt, ...) const
+{
+       char szBuf[4096];
+
+       va_list args;
+       
+       va_start(args, fmt);
+       vsnprintf(szBuf, sizeof(szBuf), fmt, args);
+       va_end(args);
+       
+       szBuf[sizeof(szBuf)-1] = '0';
+       
+       fatal(szBuf);
+}
+
 Scanner::~Scanner()
 {
        if (bot)