public override bool Parse(ParseContext context, IAstNode parent) {
TokenStream<RToken> tokens = context.Tokens;
Debug.Assert(tokens.CurrentToken.TokenType == RTokenType.OpenBrace);
this.OpenBrace = RParser.ParseToken(context, this);
this.Arguments = new ArgumentList(RTokenType.CloseBrace);
bool argumentsParsed = this.Arguments.Parse(context, this);
if (argumentsParsed) {
if (tokens.CurrentToken.TokenType == RTokenType.CloseBrace) {
this.CloseBrace = RParser.ParseToken(context, this);
}
}
if (!argumentsParsed || this.CloseBrace == null) {
CalculateVirtualEnd(context);
}
if (this.CloseBrace == null) {
context.AddError(new MissingItemParseError(ParseErrorType.CloseBraceExpected, tokens.PreviousToken));
}
return base.Parse(context, parent);
}