private void RegisteringExpressionsThatNeedParentheses(UnparseControl unparseControl)
{
if (unparseControl.ExpressionToParenthesesHasBeenSet)
{
this.expressionsThatCanCauseOthersBeingParenthesized = new HashSet <BnfTerm>(unparseControl.GetExpressionToParentheses().Keys());
this.expressionThatMayNeedParenthesesToParentheses = unparseControl.GetExpressionToParentheses().ToDictionary(pair => pair.Key, pair => pair.Value);
}
else
{
this.expressionsThatCanCauseOthersBeingParenthesized = new HashSet <BnfTerm>();
this.expressionThatMayNeedParenthesesToParentheses = new Dictionary <BnfTerm, ParenthesizedExpression>();
this._examinedBnfTermsInCurrentPath = new Bag <BnfTerm>();
RegisteringExpressionsThatNeedParentheses(unparser.Grammar.Root);
lock (unparseControl)
{ // handle concurrent unparsers initializations with one shared grammar and unparseControl
if (!unparseControl.ExpressionToParenthesesHasBeenSet)
{
unparseControl.SetExpressionToParentheses(expressionThatMayNeedParenthesesToParentheses);
}
}
}
}