     buffer[index++] = ch;
     ch = gfun();
   } else if (ch == '#') {
-    ch = gfun() & ~0x20;
+    ch = gfun();
+    char ch2 = ch & ~0x20; // force to upper case
     if (ch == '\\') base = 0; // character
-    else if (ch == 'B') base = 2;
-    else if (ch == 'O') base = 8;
-    else if (ch == 'X') base = 16;
-    else if (ch == 0x07) return nextitem(gfun);
+    else if (ch2 == 'B') base = 2;
+    else if (ch2 == 'O') base = 8;
+    else if (ch2 == 'X') base = 16;
+    else if (ch == '\'') return nextitem(gfun);
+    else if (ch == '.') return eval(read(gfun), NULL);
     else error2(0, PSTR("illegal character after #"));
     ch = gfun();
   }


// Flags
enum flag { PRINTREADABLY, RETURNFLAG, ESCAPE, EXITEDITOR, LIBRARYLOADED };
volatile char Flags;

// Forward references
object *tee;

/* uLisp AVR Version 3.0 - www.ulisp.com
   David Johnson-Davies - www.technoblogy.com - 28th November 2019

   Licensed under the MIT license: https://opensource.org/licenses/MIT
*/
