fix long string test and escaped \0
This commit is contained in:
parent
dcff1387d9
commit
402f26b01d
@ -69,7 +69,7 @@ clean-compile:
|
||||
-include ${CFIL:.cc=.d}
|
||||
|
||||
|
||||
comparetest:
|
||||
comparetest: lexer
|
||||
${CLASSDIR}/bin/lexer ${TESTCASE} > std.out
|
||||
./lexer ${TESTCASE} > my.out
|
||||
diff my.out std.out
|
||||
|
||||
@ -216,7 +216,7 @@ FALSE f[Aa][Ll][Ss][Ee]
|
||||
/* it is necessary to exclude \0 here */
|
||||
*string_buf_ptr = yytext[0];
|
||||
string_buf_ptr ++;
|
||||
if (string_buf_ptr > string_buf + MAX_STR_CONST) {
|
||||
if (string_buf_ptr >= string_buf + MAX_STR_CONST) {
|
||||
BEGIN(STRINGREC);
|
||||
cool_yylval.error_msg = "String constant too long";
|
||||
return (ERROR);
|
||||
@ -240,6 +240,11 @@ FALSE f[Aa][Ll][Ss][Ee]
|
||||
case 't': *string_buf_ptr = '\t'; break;
|
||||
case 'n': *string_buf_ptr = '\n'; break;
|
||||
case 'f': *string_buf_ptr = '\f'; break;
|
||||
/*
|
||||
* This rule is not described in PA2's section4, though it could be implied by manual's
|
||||
* `A string may not contain the null (character \0)`.
|
||||
*/
|
||||
case '\0': BEGIN(STRINGREC); cool_yylval.error_msg = "String contains escaped null character."; return (ERROR);
|
||||
default: *string_buf_ptr = yytext[1]; break; /* \\n is included here*/
|
||||
}
|
||||
/*
|
||||
@ -247,7 +252,7 @@ FALSE f[Aa][Ll][Ss][Ee]
|
||||
* this is handled in the default branch
|
||||
*/
|
||||
string_buf_ptr ++;
|
||||
if (string_buf_ptr > string_buf + MAX_STR_CONST) {
|
||||
if (string_buf_ptr >= string_buf + MAX_STR_CONST) {
|
||||
BEGIN(STRINGREC);
|
||||
cool_yylval.error_msg = "String constant too long";
|
||||
return (ERROR);
|
||||
|
||||
@ -182,7 +182,7 @@ long string long string long string long string long string long string long str
|
||||
long string long string long string long string long string long string long string long string long string long string \
|
||||
long string long string long string long string long string long string long string long string long string long string \
|
||||
long string long string long string long string long string long string long string long string long string long string \
|
||||
long string long string long string long string long string long strin ";
|
||||
long string long string long string long string long string long strin ";
|
||||
|
||||
long_string_1025: String <- " long string long string long string long string long string long string long string long string \
|
||||
long string long string long string long string long string long string long string long string long string long string \
|
||||
@ -192,7 +192,7 @@ long string long string long string long string long string long string long str
|
||||
long string long string long string long string long string long string long string long string long string long string \
|
||||
long string long string long string long string long string long string long string long string long string long string \
|
||||
long string long string long string long string long string long string long string long string long string long string \
|
||||
long string long string long string long string long string long strin ";
|
||||
long string long string long string long string long string long strin ";
|
||||
|
||||
long_string_1024: String <- " long string long string long string long string long string long string long string long string \
|
||||
long string long string long string long string long string long string long string long string long string long string \
|
||||
@ -202,5 +202,5 @@ long string long string long string long string long string long string long str
|
||||
long string long string long string long string long string long string long string long string long string long string \
|
||||
long string long string long string long string long string long string long string long string long string long string \
|
||||
long string long string long string long string long string long string long string long string long string long string \
|
||||
long string long string long string long string long string long strin ";
|
||||
long string long string long string long string long string long strin ";
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user