22using System . Collections . Generic ;
33using System . Windows . Forms ;
44using Antlr4 . Runtime . Tree ;
5+ using Org . Edgerunner . ANTLR4 . Tools . Common . Extensions ;
56using Org . Edgerunner . ANTLR4 . Tools . Testing . Grammar ;
67
78namespace Org . Edgerunner . ANTLR4 . Tools . Testing
89{
910 public partial class ParserTreeView : TreeView
1011 {
12+ /// <summary>
13+ /// Gets the grammar being used.
14+ /// </summary>
15+ /// <value>The grammar.</value>
1116 public GrammarReference Grammar { get ; private set ; }
17+
18+ /// <summary>
19+ /// Gets or sets a value indicating whether [use label names].
20+ /// </summary>
21+ /// <value><c>true</c> if [use label names]; otherwise, <c>false</c>.</value>
22+ public bool UseLabelNames { get ; set ; }
23+
1224 public ITree ParseTree { get ; private set ; }
25+
1326 private Dictionary < string , TreeNode > ActiveNodes { get ; } = new Dictionary < string , TreeNode > ( ) ;
1427
1528 /// <summary>
@@ -230,7 +243,7 @@ private TreeNode AddChildNodeAndLeaves(TreeNode root, ITree tree)
230243 var nodeName = tree . GetHashCode ( ) . ToString ( ) ;
231244 if ( ! ActiveNodes . TryGetValue ( nodeName , out var treeNode ) )
232245 {
233- treeNode = new TreeNode ( Trees . GetNodeText ( tree , Grammar . ParserRules ) )
246+ treeNode = new TreeNode ( tree . GetLabeledRuleName ( ) ?? Trees . GetNodeText ( tree , Grammar . ParserRules ) )
234247 {
235248 Tag = tree ,
236249 Name = nodeName
@@ -250,7 +263,8 @@ private TreeNode AddChildNodeAndLeaves(TreeNode root, ITree tree)
250263 nodeName = child . GetHashCode ( ) . ToString ( ) ;
251264 if ( ActiveNodes . ContainsKey ( nodeName ) )
252265 continue ;
253- var newChild = new TreeNode ( Trees . GetNodeText ( child , Grammar . ParserRules ) )
266+
267+ var newChild = new TreeNode ( child . GetLabeledRuleName ( ) ?? Trees . GetNodeText ( child , Grammar . ParserRules ) )
254268 {
255269 Tag = child ,
256270 Name = nodeName
0 commit comments