* ch-exp.y (match_simple_name_string): Don't lower-case here.

* ch-exp.y (yylex):  First try name lookup using exact name
	typed by user;  if that fails, try lower-cased name.
This commit is contained in:
Per Bothner 1994-07-07 03:27:48 +00:00
parent 874a43273c
commit ad86f71799

View File

@ -1053,9 +1053,6 @@ match_simple_name_string ()
yylval.sval.length = tokptr - lexptr; yylval.sval.length = tokptr - lexptr;
lexptr = tokptr; lexptr = tokptr;
result = copy_name (yylval.sval); result = copy_name (yylval.sval);
for (tokptr = result; *tokptr; tokptr++)
if (isupper (*tokptr))
*tokptr = tolower(*tokptr);
return result; return result;
} }
return (NULL); return (NULL);
@ -1776,7 +1773,7 @@ yylex ()
{ {
unsigned int i; unsigned int i;
int token; int token;
char *simplename; char *inputname;
struct symbol *sym; struct symbol *sym;
/* Skip over any leading whitespace. */ /* Skip over any leading whitespace. */
@ -1888,10 +1885,16 @@ yylex ()
the token from lexptr, so we can't back out if we later find that the token from lexptr, so we can't back out if we later find that
we can't classify what sort of name it is. */ we can't classify what sort of name it is. */
simplename = match_simple_name_string (); inputname = match_simple_name_string ();
if (simplename != NULL) if (inputname != NULL)
{ {
char *simplename = (char*) alloca (strlen (inputname));
char *dptr = simplename, *sptr = inputname;
for (; *sptr; sptr++)
*dptr++ = isupper (*sptr) ? tolower(*sptr) : *sptr;
/* See if it is a reserved identifier. */ /* See if it is a reserved identifier. */
for (i = 0; i < sizeof (idtokentab) / sizeof (idtokentab[0]); i++) for (i = 0; i < sizeof (idtokentab) / sizeof (idtokentab[0]); i++)
{ {
@ -1913,9 +1916,15 @@ yylex ()
return (BOOLEAN_LITERAL); return (BOOLEAN_LITERAL);
} }
sym = lookup_symbol (simplename, expression_context_block, sym = lookup_symbol (inputname, expression_context_block,
VAR_NAMESPACE, (int *) NULL, VAR_NAMESPACE, (int *) NULL,
(struct symtab **) NULL); (struct symtab **) NULL);
if (sym == NULL && strcmp (inputname, simplename) != 0)
{
sym = lookup_symbol (simplename, expression_context_block,
VAR_NAMESPACE, (int *) NULL,
(struct symtab **) NULL);
}
if (sym != NULL) if (sym != NULL)
{ {
yylval.ssym.stoken.ptr = NULL; yylval.ssym.stoken.ptr = NULL;
@ -1956,7 +1965,7 @@ yylex ()
case LOC_UNDEF: case LOC_UNDEF:
case LOC_CONST_BYTES: case LOC_CONST_BYTES:
case LOC_OPTIMIZED_OUT: case LOC_OPTIMIZED_OUT:
error ("Symbol \"%s\" names no location.", simplename); error ("Symbol \"%s\" names no location.", inputname);
break; break;
} }
} }
@ -1966,7 +1975,7 @@ yylex ()
} }
else else
{ {
error ("No symbol \"%s\" in current context.", simplename); error ("No symbol \"%s\" in current context.", inputname);
} }
} }
@ -1978,8 +1987,8 @@ yylex ()
case '.': /* Not float for example. */ case '.': /* Not float for example. */
lexptr++; lexptr++;
while (isspace (*lexptr)) lexptr++; while (isspace (*lexptr)) lexptr++;
simplename = match_simple_name_string (); inputname = match_simple_name_string ();
if (!simplename) if (!inputname)
return '.'; return '.';
return FIELD_NAME; return FIELD_NAME;
} }