private void SafeCreateAstNode(ParseTreeNode parseNode)
 {
     try {
         _grammar.CreateAstNode(_context, parseNode);
         if (parseNode.AstNode != null && parseNode.Term != null)
         {
             parseNode.Term.OnNodeCreated(parseNode);
         }
     } catch (Exception ex) {
         _context.ReportError(parseNode.Span.Start, "Failed to create AST node for non-terminal [{0}], error: " + ex.Message, parseNode.Term.Name);
     }
 }