@@ -12,35 +12,14 @@ public class TextParser
12
12
private const char DefaultNumberDecimalSeparator = '.' ;
13
13
private static readonly char [ ] EscapeCharacters = { '\\ ' , 'a' , 'b' , 'f' , 'n' , 'r' , 't' , 'v' } ;
14
14
15
- // These aliases are supposed to simply the where clause and make it more human readable
16
- private static readonly Dictionary < string , TokenId > PredefinedOperatorAliases = new ( StringComparer . OrdinalIgnoreCase )
17
- {
18
- { "eq" , TokenId . Equal } ,
19
- { "equal" , TokenId . Equal } ,
20
- { "ne" , TokenId . ExclamationEqual } ,
21
- { "notequal" , TokenId . ExclamationEqual } ,
22
- { "neq" , TokenId . ExclamationEqual } ,
23
- { "lt" , TokenId . LessThan } ,
24
- { "LessThan" , TokenId . LessThan } ,
25
- { "le" , TokenId . LessThanEqual } ,
26
- { "LessThanEqual" , TokenId . LessThanEqual } ,
27
- { "gt" , TokenId . GreaterThan } ,
28
- { "GreaterThan" , TokenId . GreaterThan } ,
29
- { "ge" , TokenId . GreaterThanEqual } ,
30
- { "GreaterThanEqual" , TokenId . GreaterThanEqual } ,
31
- { "and" , TokenId . DoubleAmpersand } ,
32
- { "AndAlso" , TokenId . DoubleAmpersand } ,
33
- { "or" , TokenId . DoubleBar } ,
34
- { "OrElse" , TokenId . DoubleBar } ,
35
- { "not" , TokenId . Exclamation } ,
36
- { "mod" , TokenId . Percent }
37
- } ;
38
-
39
15
private readonly char _numberDecimalSeparator ;
40
16
private readonly string _text ;
41
17
private readonly int _textLen ;
42
18
private readonly ParsingConfig _parsingConfig ;
43
19
20
+ // These aliases simplify the "Where"-clause and make it more human-readable.
21
+ private readonly Dictionary < string , TokenId > _predefinedOperatorAliases ;
22
+
44
23
private int _textPos ;
45
24
private char _ch ;
46
25
@@ -58,6 +37,29 @@ public TextParser(ParsingConfig config, string text)
58
37
{
59
38
_parsingConfig = config ;
60
39
40
+ _predefinedOperatorAliases = new ( config . IsCaseSensitive ? StringComparer . Ordinal : StringComparer . OrdinalIgnoreCase )
41
+ {
42
+ { "eq" , TokenId . Equal } ,
43
+ { "equal" , TokenId . Equal } ,
44
+ { "ne" , TokenId . ExclamationEqual } ,
45
+ { "notequal" , TokenId . ExclamationEqual } ,
46
+ { "neq" , TokenId . ExclamationEqual } ,
47
+ { "lt" , TokenId . LessThan } ,
48
+ { "LessThan" , TokenId . LessThan } ,
49
+ { "le" , TokenId . LessThanEqual } ,
50
+ { "LessThanEqual" , TokenId . LessThanEqual } ,
51
+ { "gt" , TokenId . GreaterThan } ,
52
+ { "GreaterThan" , TokenId . GreaterThan } ,
53
+ { "ge" , TokenId . GreaterThanEqual } ,
54
+ { "GreaterThanEqual" , TokenId . GreaterThanEqual } ,
55
+ { "and" , TokenId . DoubleAmpersand } ,
56
+ { "AndAlso" , TokenId . DoubleAmpersand } ,
57
+ { "or" , TokenId . DoubleBar } ,
58
+ { "OrElse" , TokenId . DoubleBar } ,
59
+ { "not" , TokenId . Exclamation } ,
60
+ { "mod" , TokenId . Percent }
61
+ } ;
62
+
61
63
_numberDecimalSeparator = config . NumberParseCulture ? . NumberFormat . NumberDecimalSeparator [ 0 ] ?? DefaultNumberDecimalSeparator ;
62
64
63
65
_text = text ;
@@ -529,14 +531,14 @@ private Exception ParseError(string format, params object[] args)
529
531
return ParseError ( CurrentToken . Pos , format , args ) ;
530
532
}
531
533
532
- private static Exception ParseError ( int pos , string format , params object [ ] args )
534
+ private TokenId GetAliasedTokenId ( TokenId tokenId , string alias )
533
535
{
534
- return new ParseException ( string . Format ( CultureInfo . CurrentCulture , format , args ) , pos ) ;
536
+ return tokenId == TokenId . Identifier && _predefinedOperatorAliases . TryGetValue ( alias , out TokenId id ) ? id : tokenId ;
535
537
}
536
538
537
- private static TokenId GetAliasedTokenId ( TokenId tokenId , string alias )
539
+ private static Exception ParseError ( int pos , string format , params object [ ] args )
538
540
{
539
- return tokenId == TokenId . Identifier && PredefinedOperatorAliases . TryGetValue ( alias , out TokenId id ) ? id : tokenId ;
541
+ return new ParseException ( string . Format ( CultureInfo . CurrentCulture , format , args ) , pos ) ;
540
542
}
541
543
542
544
private static bool IsHexChar ( char c )
0 commit comments