43
private ParseNode ParseRelationalExpression(TokenStream tokenStream, ref ParserState state)
45
return ParseRelationalExpression(tokenStream, ref state, false);
48
private ParseNode ParseRelationalExpression(TokenStream tokenStream, ref ParserState state, bool isSubTree)
50
var node = new ParseNode(ParseNodeKind.InfixOperator);
51
node.Children.Add(ParseFractionalExpression(tokenStream, ref state));
52
switch (tokenStream.Current.Symbol)
54
case TexSymbolKind.EndOfStream:
56
case TexSymbolKind.Equals:
57
case TexSymbolKind.NotEquals:
58
case TexSymbolKind.DotEquals:
59
case TexSymbolKind.Approximates:
60
case TexSymbolKind.Equivalent:
61
case TexSymbolKind.LessThan:
62
case TexSymbolKind.LessThanOrEqualTo:
63
case TexSymbolKind.GreaterThan:
64
case TexSymbolKind.GreaterThanOrEqualTo:
65
case TexSymbolKind.MuchLessThan:
66
case TexSymbolKind.MuchGreaterThan:
67
case TexSymbolKind.Proportional:
68
case TexSymbolKind.Asymptotic:
69
case TexSymbolKind.Bowtie:
70
case TexSymbolKind.Models:
71
case TexSymbolKind.Precedes:
72
case TexSymbolKind.PrecedesOrEquals:
73
case TexSymbolKind.Succedes:
74
case TexSymbolKind.SuccedesOrEquals:
75
case TexSymbolKind.Congruent:
76
case TexSymbolKind.Similar:
77
case TexSymbolKind.SimilarOrEquals:
78
case TexSymbolKind.Perpendicular:
79
case TexSymbolKind.Parallel:
80
case TexSymbolKind.Middle:
81
case TexSymbolKind.Subset:
82
case TexSymbolKind.SubsetOrEqualTo:
83
case TexSymbolKind.Superset:
84
case TexSymbolKind.SupersetOrEqualTo:
85
case TexSymbolKind.SquareSubset:
86
case TexSymbolKind.SquareSubsetOrEqualTo:
87
case TexSymbolKind.SquareSuperset:
88
case TexSymbolKind.SquareSupersetOrEqualTo:
89
case TexSymbolKind.Member:
90
case TexSymbolKind.NotMember:
91
case TexSymbolKind.Contains:
92
case TexSymbolKind.NotContains:
93
case TexSymbolKind.Smile:
94
case TexSymbolKind.Frown:
95
case TexSymbolKind.VLineDash:
96
case TexSymbolKind.DashVLine:
97
node.IsSubExpression = isSubTree;
98
node.Children.Add(new ParseNode(tokenStream.Current));
99
tokenStream.ForceMoveNext();
104
node.Children.Add(ParseRelationalExpression(tokenStream, ref state, true));
43
108
private ParseNode ParseFractionalExpression(TokenStream tokenStream, ref ParserState state)
45
110
var node = new ParseNode(ParseNodeKind.InfixOperator);
306
371
case TexSymbolKind.GroupOpen:
307
372
tokenStream.ForceMoveNext();
308
var node = ParseFractionalExpression(tokenStream, ref state);
373
var node = ParseRelationalExpression(tokenStream, ref state);
309
374
if (tokenStream.Current.Symbol != TexSymbolKind.GroupClose)
310
375
throw new ParserException(tokenStream.Current, new[] {
311
376
TexSymbolKind.GroupClose });