Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ParseAggregateArgument()

ExpressionNode System.Data.ExpressionParser.ParseAggregateArgument ( FunctionId aggregate)
inlineprivate

Definition at line 379 of file ExpressionParser.cs.

380 {
381 Scan();
382 bool flag;
383 string relationName;
384 string columnName;
385 try
386 {
387 if (_token != Tokens.Child)
388 {
389 if (_token != Tokens.Name)
390 {
391 throw ExprException.AggregateArgument();
392 }
393 columnName = NameNode.ParseName(_text, _start, _pos);
394 ScanToken(Tokens.RightParen);
395 return new AggregateNode(_table, aggregate, columnName);
396 }
397 flag = _token == Tokens.Child;
398 _prevOperand = 1;
399 Scan();
400 if (_token == Tokens.LeftParen)
401 {
402 ScanToken(Tokens.Name);
403 relationName = NameNode.ParseName(_text, _start, _pos);
404 ScanToken(Tokens.RightParen);
405 ScanToken(Tokens.Dot);
406 }
407 else
408 {
409 relationName = null;
410 CheckToken(Tokens.Dot);
411 }
412 ScanToken(Tokens.Name);
413 columnName = NameNode.ParseName(_text, _start, _pos);
414 ScanToken(Tokens.RightParen);
415 }
416 catch (Exception e) when (ADP.IsCatchableExceptionType(e))
417 {
418 throw ExprException.AggregateArgument();
419 }
420 return new AggregateNode(_table, aggregate, columnName, !flag, relationName);
421 }
static bool IsCatchableExceptionType(Exception e)
Definition ADP.cs:790

References System.Data.ExpressionParser._pos, System.Data.ExpressionParser._prevOperand, System.Data.ExpressionParser._start, System.Data.ExpressionParser._table, System.Data.ExpressionParser._text, System.Data.ExpressionParser._token, System.Data.ExprException.AggregateArgument(), System.Data.ExpressionParser.CheckToken(), System.Data.Common.ADP.IsCatchableExceptionType(), System.Data.NameNode.ParseName(), System.Data.ExpressionParser.Scan(), and System.Data.ExpressionParser.ScanToken().

Referenced by System.Data.ExpressionParser.Parse().