Detail
Code for multi-character tokens can start right after maximum char.
diff --git a/llex.c b/llex.c
index 90a7951..3d6b2b9 100644
--- a/llex.c
+++ b/llex.c
@@ -81,7 +81,6 @@
const char *luaX_token2str (LexState *ls, int token) {
if (token < FIRST_RESERVED) { /* single-byte symbols? */
- lua_assert(token == cast_uchar(token));
if (lisprint(token))
return luaO_pushfstring(ls->L, "'%c'", token);
else /* control character */
diff --git a/llex.h b/llex.h
index d1a4cba..389d2f8 100644
--- a/llex.h
+++ b/llex.h
@@ -7,11 +7,17 @@
#ifndef llex_h
#define llex_h
+#include <limits.h>
+
#include "lobject.h"
#include "lzio.h"
-#define FIRST_RESERVED 257
+/*
+** Single-char tokens (terminal symbols) are represented by their own
+** numeric code. Other tokens start at the following value.
+*/
+#define FIRST_RESERVED (UCHAR_MAX + 1)
#if !defined(LUA_ENV)