|
1 |
| -/* uLisp ESP Version 3.0 - www.ulisp.com |
2 |
| - David Johnson-Davies - www.technoblogy.com - 28th November 2019 |
| 1 | +/* uLisp ESP Version 3.0a - www.ulisp.com |
| 2 | + David Johnson-Davies - www.technoblogy.com - 6th December 2019 |
3 | 3 |
|
4 | 4 | Licensed under the MIT license: https://opensource.org/licenses/MIT
|
5 | 5 | */
|
@@ -171,7 +171,7 @@ char LastChar = 0;
|
171 | 171 | char LastPrint = 0;
|
172 | 172 |
|
173 | 173 | // Flags
|
174 |
| -enum flag { PRINTREADABLY, RETURNFLAG, ESCAPE, EXITEDITOR, LIBRARYLOADED }; |
| 174 | +enum flag { PRINTREADABLY, RETURNFLAG, ESCAPE, EXITEDITOR, LIBRARYLOADED, NOESC }; |
175 | 175 | volatile char Flags = 0b00001; // PRINTREADABLY set by default
|
176 | 176 |
|
177 | 177 | // Forward references
|
@@ -3692,7 +3692,7 @@ object *eval (object *form, object *env) {
|
3692 | 3692 | // Escape
|
3693 | 3693 | if (tstflag(ESCAPE)) { clrflag(ESCAPE); error2(0, PSTR("Escape!"));}
|
3694 | 3694 | #if defined (serialmonitor)
|
3695 |
| - testescape(); |
| 3695 | + if (!tstflag(NOESC)) testescape(); |
3696 | 3696 | #endif
|
3697 | 3697 |
|
3698 | 3698 | if (form == NULL) return nil;
|
@@ -4066,8 +4066,12 @@ object *nextitem (gfun_t gfun) {
|
4066 | 4066 | else if (ch2 == 'O') base = 8;
|
4067 | 4067 | else if (ch2 == 'X') base = 16;
|
4068 | 4068 | else if (ch == '\'') return nextitem(gfun);
|
4069 |
| - else if (ch == '.') return eval(read(gfun), NULL); |
4070 |
| - else error2(0, PSTR("illegal character after #")); |
| 4069 | + else if (ch == '.') { |
| 4070 | + setflag(NOESC); |
| 4071 | + object *result = eval(read(gfun), NULL); |
| 4072 | + clrflag(NOESC); |
| 4073 | + return result; |
| 4074 | + } else error2(0, PSTR("illegal character after #")); |
4071 | 4075 | ch = gfun();
|
4072 | 4076 | }
|
4073 | 4077 | int valid; // 0=undecided, -1=invalid, +1=valid
|
|
0 commit comments