diff lwbasic/lexer.c @ 34:bfea77812e64

Start of assignment code
author Lost Wizard (lost@starbug3)
date Fri, 04 Feb 2011 21:27:03 -0700
parents 890a8f688889
children cdb0175e1063
line wrap: on
line diff
--- a/lwbasic/lexer.c	Thu Feb 03 22:15:57 2011 -0700
+++ b/lwbasic/lexer.c	Fri Feb 04 21:27:03 2011 -0700
@@ -59,9 +59,39 @@
 	{ "endsub",			token_kw_endsub },
 	{ "endfunction",	token_kw_endfunction },
 	{ "dim",			token_kw_dim },
+	{ "=",				token_op_assignment },
 	{ NULL }
 };
 
+static char *lexer_token_names[] =
+{
+	"SUB",
+	"FUNCTION",
+	"AS",
+	"PUBLIC",
+	"PRIVATE",
+	"PARAMS",
+	"RETURNS",
+	"INTEGER",
+	"ENDSUB",
+	"ENDFUNCTION",
+	"DIM",
+	"<assignment>",
+	"<identifier>",
+	"<char>",
+	"<uint>",
+	"<int>",
+	"<eol>",
+	"<eof>"
+};
+
+char *lexer_token_name(int token)
+{
+	if (token > token_eol)
+		return "???";
+	return lexer_token_names[token];
+}
+
 static int lexer_getchar(cstate *state)
 {
 	int c;
@@ -231,12 +261,12 @@
 		buflen = 128;
 	}
 
-	l = snprintf(buffer, buflen, "%s (%d)", state -> lexer_token_string, state -> lexer_token);
+	l = snprintf(buffer, buflen, "%s (%s)", state -> lexer_token_string, lexer_token_name(state -> lexer_token));
 	if (l >= buflen)
 	{
 		buffer = lw_realloc(buffer, l + 1);
 		buflen = l + 1;
-		snprintf(buffer, buflen, "%s (%d)", state -> lexer_token_string, state -> lexer_token);
+		snprintf(buffer, buflen, "%s (%s)", state -> lexer_token_string, lexer_token_name(state -> lexer_token));
 	}
 	return buffer;
 }