diff options
Diffstat (limited to 'src/lisp/ao_lisp_read.c')
| -rw-r--r-- | src/lisp/ao_lisp_read.c | 23 | 
1 files changed, 13 insertions, 10 deletions
| diff --git a/src/lisp/ao_lisp_read.c b/src/lisp/ao_lisp_read.c index 8fc134e5..bc1eb36b 100644 --- a/src/lisp/ao_lisp_read.c +++ b/src/lisp/ao_lisp_read.c @@ -188,8 +188,6 @@ lex_quoted (void)  	int	count;  	c = lex_get(); -//	if (jumping) -//		return nil;  	if (c == EOF)  		return EOF;  	c &= 0x7f; @@ -218,8 +216,6 @@ lex_quoted (void)  		count = 1;  		while (count <= 3) {  			c = lex_get(); -//			if (jumping) -//				return nil;  			if (c == EOF)  				return EOF;  			c &= 0x7f; @@ -288,11 +284,17 @@ lex(void)  		if (lex_class & ENDOFFILE)  			return AO_LISP_NIL; -//		if (jumping) -//			return nil;  		if (lex_class & WHITE)  			continue; +		if (lex_class & COMMENT) { +			while ((c = lexc()) != '\n') { +				if (lex_class & ENDOFFILE) +					return AO_LISP_NIL; +			} +			continue; +		} +  		if (lex_class & (BRA|KET|QUOTEC)) {  			add_token(c);  			end_token(); @@ -312,8 +314,6 @@ lex(void)  		if (lex_class & STRINGC) {  			for (;;) {  				c = lexc(); -//				if (jumping) -//					return nil;  				if (lex_class & (STRINGC|ENDOFFILE)) {  					end_token();  					return STRING; @@ -349,8 +349,6 @@ lex(void)  				}  				add_token (c);  				c = lexc (); -//				if (jumping) -//					return nil;  				if (lex_class & (NOTNAME)) {  //					if (lex_class & ENDOFFILE)  //						clearerr (f); @@ -403,6 +401,10 @@ pop_read_stack(int cons)  		     read_cons_tail && read_cons_tail->cdr;  		     read_cons_tail = ao_lisp_poly_cons(read_cons_tail->cdr))  			; +	} else { +		read_cons = 0; +		read_cons_tail = 0; +		read_stack = 0;  	}  	return in_quote;  } @@ -420,6 +422,7 @@ ao_lisp_read(void)  		ao_lisp_root_add(&ao_lisp_cons_type, &read_cons);  		ao_lisp_root_add(&ao_lisp_cons_type, &read_cons_tail);  		ao_lisp_root_add(&ao_lisp_cons_type, &read_stack); +		been_here = 1;  	}  	parse_token = lex(); | 
