diff --git a/src/lexer.l b/src/lexer.l
index e392324a..f2f4b2ce 100644
--- a/src/lexer.l
+++ b/src/lexer.l
@@ -57,12 +57,9 @@ SIGN     [+-]
 
 %%
 
-#{SIGN}*{DIGIT}+            { yylval = number(yytext); return TKN_NUMBER; }
-#{SIGN}*{DIGIT}+"."{DIGIT}* { yylval = number_real(yytext); return TKN_NUMBER_REAL; }
-#{SIGN}*"."{DIGIT}*         { yylval = number_real(yytext); return TKN_NUMBER_REAL; }
-{DIGIT}+            { yylval = number(yytext); return TKN_NUMBER; }
-{DIGIT}+"."{DIGIT}* { yylval = number_real(yytext); return TKN_NUMBER_REAL; }
-"."{DIGIT}+         { yylval = number_real(yytext); return TKN_NUMBER_REAL; }
+{SIGN}?{DIGIT}+            { yylval = number(yytext); return TKN_NUMBER; }
+{SIGN}?{DIGIT}+"."{DIGIT}* { yylval = number_real(yytext); return TKN_NUMBER_REAL; }
+{SIGN}?"."{DIGIT}+         { yylval = number_real(yytext); return TKN_NUMBER_REAL; }
 
 "\""      { string_buf_ptr = string_buf; BEGIN(strng); }