Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Выделение текста, Regex или что то другое? / 4 сообщений из 4, страница 1 из 1
19.08.2015, 18:35
    #39032703
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение текста, Regex или что то другое?
Всем доброго времени суток.

Занимаюсь фигней Решил немного поразвлекаться с Regex.

Собственно дано: текстовая переменная которая содержит вот такой вот псевдокод:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
VBNET{
	<IMPORTS>
		System
		System.Text
		System.Text.RegularExpressions
		System.Windows.Forms
	</IMPORTS>

	<FIELDS>
		public pcx_Flags as Integer = 0
		public pcx_ErrFlags as Integer = 0
		public _cell as Integer = 0
		private _LargeName as String = ""
	</FIELDS>

	<PROPERTIES>
		Public Property prop_LargeName as String
           		Get
                 		return _LargeName
           		End Get
           		Set (ByVal value as String)
                 		_LargeName = value
           		End Set
		End Property
	</PROPERTIES>
}

TSQL{
	select id as rowID, value as LargeName, flags as Flags, InstructionList as Code from tCompileObjects where QueryID = %1
}

VBNET{
        <FIELDS>
               private _val as String = ""
               protected friend MainClass as Object = Nothing
        </FIELDS>
	<METHODS>
        	public sub GetCode(QueryID as Int32)  As String
                    	Dim cdr = new CodeReader(Programm.ActiveConnection, QueryID)
                    	Dim rd = CodeReader.Open()
                    	While rd.Read()
                               	Programm.DynRowset.Add(rd.Current)
                    	WEnd
        	end sub
	</METHODS>

	<ACTIVE_METHOD>
        	GetCode(%1)
	</ACTIVE_METHOD>
}



необходимо прогнать данный код через некий парсер что бы найти все вхождения инструкций в блоках VBNET{} разбить их на составляющие <IMPORTS>, <FIELDS>, <PROPERTIES>, <METHODS>, <ACTIVE_METHOD>
произвести конкатенацию данных блоков и присвоить их текстовым переменным

Код: vbnet
1.
Dim str_Imports, str_Fields, str_Properties, str_Methods, str_ActiveMethod as String



грубо говоря: в переменной str_Imports в итоге должно оказаться:
Код: vbnet
1.
2.
3.
4.
System
System.Text
System.Text.RegularExpressions
System.Windows.Forms



в переменной str_Fields:
Код: vbnet
1.
2.
3.
4.
5.
6.
public pcx_Flags as Integer = 0
public pcx_ErrFlags as Integer = 0
public _cell as Integer = 0
private _LargeName as String = ""
private _val as String = ""
protected friend MainClass as Object = Nothing



табуляцию вставил для наглядности, а вот перенос строк в тексте должен быть сохранен

Есть идеи как лучше реализовать?
Сейчас курю документацию по RegEx, если найду вариант решения раньше отпишу сдесь
...
Рейтинг: 0 / 0
19.08.2015, 18:58
    #39032716
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение текста, Regex или что то другое?
Да и кстати. Сложность вот в чем: псевдокод может содержать в себе куски содержащие фигурные скобки к примеру
Код: vbnet
1.
2.
3.
4.
5.
6.
TSQL{
         declare @x varchar(255), @y varchar(255)
         set @x = 'someclass{}'
         set @y = '{VALUE}'
         select @x as TAG1, @y as TAG2
}



или

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
CSHARP{
     <METHODS>
          public string DS_GetCellValue(int rowID)
          {
                 return this.DynRowset.GetRowValue(rowID);
          }
     </METHODS>
}



т.е. проблема в правильном нахождении закрывающих тегов для группировок областей
...
Рейтинг: 0 / 0
19.08.2015, 19:11
    #39032719
petalvik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение текста, Regex или что то другое?
felix_ff,

а нельзя ли этот "псевдокод" превратить в полноценный XML?
...
Рейтинг: 0 / 0
19.08.2015, 19:15
    #39032720
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение текста, Regex или что то другое?
petalvik,

уже думаю над этим
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Выделение текста, Regex или что то другое? / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]