| | |
| | | ****************************************************************************/
|
| | |
|
| | | using System;
|
| | | using System.Collections.Generic;
|
| | | using System.Diagnostics;
|
| | | using System.Linq;
|
| | | using System.Text.RegularExpressions;
|
| | |
|
| | |
| | | /// </summary>
|
| | | public partial class Parser
|
| | | {
|
| | | Renderer Renderer { get; set; }
|
| | | Renderer Renderer { get; }
|
| | | Pattern Pattern { get; set; }
|
| | | public Regex Regex { get; private set; }
|
| | |
|
| | |
| | |
|
| | | foreach (var node in nodes.Where(n => n.Token != Pattern.Root)) {
|
| | | // Get nodes captured by parent token
|
| | | Token parentToken;
|
| | | if (!node.Token.Parents.TryGetValue(node.CaptureId, out parentToken))
|
| | | if (!node.Token.Parents.TryGetValue(node.CaptureId, out Token parentToken))
|
| | | throw new ParseErrorException("Unknown capture ID");
|
| | | ParseTree.Node[] parentNodes;
|
| | | if (!nodesByToken.TryGetValue(parentToken, out parentNodes))
|
| | | if (!nodesByToken.TryGetValue(parentToken, out ParseTree.Node[] parentNodes))
|
| | | throw new ParseErrorException("Missing parent nodes");
|
| | | // Find parent node
|
| | | int idx = Array.BinarySearch(parentNodes, node, ParseTree.Node.Comparer);
|