diff options
Diffstat (limited to 'src/ProtocolBuffers/TextTokenizer.cs')
-rw-r--r-- | src/ProtocolBuffers/TextTokenizer.cs | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/ProtocolBuffers/TextTokenizer.cs b/src/ProtocolBuffers/TextTokenizer.cs index 8d639990..d25a5874 100644 --- a/src/ProtocolBuffers/TextTokenizer.cs +++ b/src/ProtocolBuffers/TextTokenizer.cs @@ -69,9 +69,15 @@ namespace Google.ProtocolBuffers { /// </summary> private int previousColumn = 0; +#if SILVERLIGHT + private const RegexOptions CompiledRegexWhereAvailable = RegexOptions.None; +#else + private const RegexOptions CompiledRegexWhereAvailable = RegexOptions.Compiled; +#endif + // Note: atomic groups used to mimic possessive quantifiers in Java in both of these regexes private static readonly Regex WhitespaceAndCommentPattern = new Regex("\\G(?>(\\s|(#.*$))+)", - RegexOptions.Compiled | RegexOptions.Multiline); + CompiledRegexWhereAvailable | RegexOptions.Multiline); private static readonly Regex TokenPattern = new Regex( "\\G[a-zA-Z_](?>[0-9a-zA-Z_+-]*)|" + // an identifier "\\G[0-9+-](?>[0-9a-zA-Z_.+-]*)|" + // a number @@ -79,9 +85,9 @@ namespace Google.ProtocolBuffers { "\\G\'(?>([^\"\\\n\\\\]|\\\\.)*)(\'|\\\\?$)", // a single-quoted string RegexOptions.Compiled | RegexOptions.Multiline); - private static readonly Regex DoubleInfinity = new Regex("^-?inf(inity)?$", RegexOptions.Compiled | RegexOptions.IgnoreCase); - private static readonly Regex FloatInfinity = new Regex("^-?inf(inity)?f?$", RegexOptions.Compiled | RegexOptions.IgnoreCase); - private static readonly Regex FloatNan = new Regex("^nanf?$", RegexOptions.Compiled | RegexOptions.IgnoreCase); + private static readonly Regex DoubleInfinity = new Regex("^-?inf(inity)?$", CompiledRegexWhereAvailable | RegexOptions.IgnoreCase); + private static readonly Regex FloatInfinity = new Regex("^-?inf(inity)?f?$", CompiledRegexWhereAvailable | RegexOptions.IgnoreCase); + private static readonly Regex FloatNan = new Regex("^nanf?$", CompiledRegexWhereAvailable | RegexOptions.IgnoreCase); /** Construct a tokenizer that parses tokens from the given text. */ public TextTokenizer(string text) { |