How to create a DOM reader like application using WinForms SyntaxEditor (EditControl)?
DOM reader
The DOM reader can be created using the ILexemLine and IConfigLexem interface as shown in the code below.
C#
private ArrayList GetLexems()
{
int j=0;
for (int i=1; i=this.editControl1.PhysicalLineCount; i++)
{
ILexemLine line = this.editControl1.GetLine(i);
foreach (ILexem lexem in line.LineLexems)
{
IConfigLexem configLexem = lexem.Config;
if ((configLexem.Format.Name == "MethodName") || (configLexem.Format.Name == "PropertyName") || (configLexem.Format.Name == "EventHandler"))
{
a[j++]=i;
lexemList.Add(lexem);
}
}
}
return lexemList;
}
private ArrayList GetLexems2()
{
int j=0;
for (int i=1; i=this.editControl1.PhysicalLineCount; i++)
{
ILexemLine line = this.editControl1.GetLine(i);
foreach (ILexem lexem2 in line.LineLexems)
{
IConfigLexem configLexem = lexem2.Config;
if((configLexem.Format.Name == "NameSpaceName"))
{
strNameSpace = lexem2.Text;
}
if ((configLexem.Format.Name == "class"))
{
strClass = lexem2.Text;
a[j++]=i;
lexemList2.Add(lexem2);
}
}
}
return lexemList2;
}
VB
Private Function GetLexems() As ArrayList Dim j As Integer=0 Dim i As Integer=1 Do While i=Me.editControl1.PhysicalLineCount Dim line As ILexemLine = Me.editControl1.GetLine(i) For Each lexem As ILexem In line.LineLexems Dim configLexem As IConfigLexem = lexem.Config If (configLexem.Format.Name = "MethodName") OrElse (configLexem.Format.Name = "PropertyName") OrElse (configLexem.Format.Name = "EventHandler") Then a(j += 1)=i lexemList.Add(lexem) End If Next lexem i += 1 Loop Return lexemList End Function Private Function GetLexems2() As ArrayList Dim j As Integer=0 Dim i As Integer=1 Do While i=Me.editControl1.PhysicalLineCount Dim line As ILexemLine = Me.editControl1.GetLine(i) For Each lexem2 As ILexem In line.LineLexems Dim configLexem As IConfigLexem = lexem2.Config If (configLexem.Format.Name = "NameSpaceName") Then strNameSpace = lexem2.Text End If If (configLexem.Format.Name = "class") Then strClass = lexem2.Text a(j += 1)=i lexemList2.Add(lexem2) End If Next lexem2 i += 1 Loop Return lexemList2 End Function