* app.c (do_scrub_begin): In MRI mode, set lex of ' to
LEX_IS_STRINGQUOTE.
This commit is contained in:
parent
075e616c28
commit
7172e2266f
38
gas/app.c
38
gas/app.c
|
@ -69,17 +69,20 @@ do_scrub_begin ()
|
|||
lex['\t'] = LEX_IS_WHITESPACE;
|
||||
lex['\n'] = LEX_IS_NEWLINE;
|
||||
lex[';'] = LEX_IS_LINE_SEPARATOR;
|
||||
lex[':'] = LEX_IS_COLON;
|
||||
|
||||
if (! flag_mri)
|
||||
{
|
||||
lex['"'] = LEX_IS_STRINGQUOTE;
|
||||
|
||||
#ifndef TC_HPPA
|
||||
lex['\''] = LEX_IS_ONECHAR_QUOTE;
|
||||
#endif
|
||||
lex[':'] = LEX_IS_COLON;
|
||||
|
||||
|
||||
|
||||
#ifdef SINGLE_QUOTE_STRINGS
|
||||
lex['\''] = LEX_IS_STRINGQUOTE;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Note that these override the previous defaults, e.g. if ';' is a
|
||||
comment char, then it isn't a line separator. */
|
||||
|
@ -114,6 +117,16 @@ do_scrub_begin ()
|
|||
{
|
||||
lex['*'] = LEX_IS_TWOCHAR_COMMENT_2ND;
|
||||
}
|
||||
|
||||
if (flag_mri)
|
||||
{
|
||||
lex['\''] = LEX_IS_STRINGQUOTE;
|
||||
lex[';'] = LEX_IS_COMMENT_START;
|
||||
lex['*'] = LEX_IS_LINE_COMMENT_START;
|
||||
/* The MRI documentation says '!' is LEX_IS_COMMENT_START, but
|
||||
then it can't be used in an expression. */
|
||||
lex['!'] = LEX_IS_LINE_COMMENT_START;
|
||||
}
|
||||
} /* do_scrub_begin() */
|
||||
|
||||
FILE *scrub_file;
|
||||
|
@ -381,9 +394,7 @@ do_scrub_next_char (get, unget)
|
|||
case 'n':
|
||||
case 'r':
|
||||
case 't':
|
||||
#ifdef BACKSLASH_V
|
||||
case 'v':
|
||||
#endif /* BACKSLASH_V */
|
||||
case 'x':
|
||||
case 'X':
|
||||
case '0':
|
||||
|
@ -468,15 +479,15 @@ recycle:
|
|||
not_cpp_line = 1;
|
||||
goto recycle;
|
||||
}
|
||||
#ifdef MRI
|
||||
(*unget) (ch); /* Put back */
|
||||
return ' '; /* Always return one space at start of line */
|
||||
#endif
|
||||
|
||||
/* If we're in state 2 or 11, we've seen a non-white character
|
||||
followed by whitespace. If the next character is ':', this
|
||||
is whitespace after a label name which we *must* ignore. */
|
||||
if ((state == 2 || state == 11) && lex[ch] == LEX_IS_COLON)
|
||||
is whitespace after a label name which we normally must
|
||||
ignore. In MRI mode, though, spaces are not permitted
|
||||
between the label and the colon. */
|
||||
if ((state == 2 || state == 11)
|
||||
&& lex[ch] == LEX_IS_COLON
|
||||
&& ! flag_mri)
|
||||
{
|
||||
state = 1;
|
||||
return ch;
|
||||
|
@ -559,7 +570,6 @@ recycle:
|
|||
old_state = state;
|
||||
state = 5;
|
||||
return ch;
|
||||
#ifndef MRI
|
||||
#ifndef IEEE_STYLE
|
||||
case LEX_IS_ONECHAR_QUOTE:
|
||||
ch = GET ();
|
||||
|
@ -596,7 +606,6 @@ recycle:
|
|||
state = -1;
|
||||
out_string = out_buf;
|
||||
return *out_string++;
|
||||
#endif
|
||||
#endif
|
||||
case LEX_IS_COLON:
|
||||
if (state == 9 || state == 10)
|
||||
|
@ -671,7 +680,8 @@ recycle:
|
|||
/* We have a line comment character which is not at the start of
|
||||
a line. If this is also a normal comment character, fall
|
||||
through. Otherwise treat it as a default character. */
|
||||
if (strchr (comment_chars, ch) == NULL)
|
||||
if ((flag_mri && (ch == '!' || ch == '*'))
|
||||
|| strchr (comment_chars, ch) == NULL)
|
||||
goto de_fault;
|
||||
/* Fall through. */
|
||||
case LEX_IS_COMMENT_START:
|
||||
|
|
Loading…
Reference in New Issue