X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;ds=sidebyside;f=mcs%2Fmcs%2Fcs-tokenizer.cs;h=e6a95fe8163a3590acb9f23602cc10d4cdec63dd;hb=b57f33ba97720ada4e3000672175d0e16e9a5732;hp=02f6f3df77494ae11eec7fda3dd1b388fd94fc9b;hpb=87141d4dfc4162316ff89a5ce631e55e045cb011;p=mono.git diff --git a/mcs/mcs/cs-tokenizer.cs b/mcs/mcs/cs-tokenizer.cs index 02f6f3df774..e6a95fe8163 100644 --- a/mcs/mcs/cs-tokenizer.cs +++ b/mcs/mcs/cs-tokenizer.cs @@ -1095,6 +1095,7 @@ namespace Mono.CSharp case Token.DECIMAL: case Token.BOOL: case Token.STRING: + case Token.SBYTE: return Token.OPEN_PARENS_CAST; } } @@ -2464,6 +2465,12 @@ namespace Mono.CSharp case '\"': ++str_quote; break; + case '\\': + // Skip escaped " character + c = reader.Read (); + if (c == -1) + res = false; + break; case -1: res = false; break; @@ -2522,7 +2529,6 @@ namespace Mono.CSharp int TokenizePragmaWarningIdentifier (ref int c, ref bool identifier) { - if ((c >= '0' && c <= '9') || is_identifier_start_character (c)) { int number; @@ -2547,7 +2553,7 @@ namespace Mono.CSharp id_builder [pos] = (char)c; if (c >= '0' && c <= '9') { - if (pos == 6 && id_builder [0] == 'C' && id_builder [1] == 'S') { + if (pos == 5 && id_builder [0] == 'C' && id_builder [1] == 'S') { // Recognize CSXXXX as C# XXXX warning number = 0; int pow = 1000; @@ -2562,6 +2568,9 @@ namespace Mono.CSharp pow /= 10; } } + } else if (c == '\n' || c == UnicodeLS || c == UnicodePS) { + advance_line (); + break; } else if ((c < 'a' || c > 'z') && (c < 'A' || c > 'Z') && c != '_') { break; } @@ -4057,6 +4066,9 @@ namespace Mono.CSharp --braces; break; case '\\': + if (parsing_string_interpolation_quoted != null && parsing_string_interpolation_quoted.Peek ()) + break; + ++col; int surrogate; ch = escape (ch, out surrogate); @@ -4101,8 +4113,6 @@ namespace Mono.CSharp private void handle_one_line_xml_comment () { int c; - while ((c = peek_char ()) == ' ') - get_char (); // skip heading whitespaces. while ((c = peek_char ()) != -1 && c != '\n' && c != '\r') { xml_comment_buffer.Append ((char) get_char ()); }