Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Поделись своими разработками. Это увеличит твой рейтинг.
Vladimir Karputov
Модератор
33420
Vladimir Karputov 2016.10.06 10:26 

Пожалуйста, поделитесь, как в Ваших кодах встречается слово "OnTester".

Например такой вариант:

double OnTester() 

это стандартная функция - самый безобидный вариант.

 

А вот, что я нашёл сразу при поиске по статьям:

double   OptVal,           // OnTester() возвращает это значение, оно может быть найдено в колонке "OnTester Result" 

здесь в одной строке тоже присутствует "OnTester", но смысл абсолютно другой (это уже просто комментарий).

Dmitry Fedoseev
41203
Dmitry Fedoseev 2016.10.06 10:46  

:OnTester

.OnTester 

Vladimir Karputov
Модератор
33420
Vladimir Karputov 2016.10.06 10:54  
Dmitry Fedoseev:

:OnTester

.OnTester 

Это две ПОЛНЫЕ строки? Или в строках ещё что-то слева и справа?
Dmitry Fedoseev
41203
Dmitry Fedoseev 2016.10.06 11:25  

Там где : слева еще может быть : и имя класса, справа открывающая скобка, все это может быть приправлено пробелами. 

С точкой - слева имя объекта, справа может  быть открывающая скобка, может не быть, если свойство.

Vladimir Karputov
Модератор
33420
Vladimir Karputov 2016.10.06 11:35  
Dmitry Fedoseev:

Там где : слева еще может быть : и имя класса, справа открывающая скобка, все это может быть приправлено пробелами. 

С точкой - слева имя объекта, справа может  быть открывающая скобка, может не быть, если свойство.

Ясно, в принципе так я и предположил. 

Меня больше интересуют формы записи функции double OnTester() и всё, что может быть похоже на это объявление. В общем выстраиваю формулу для регулярных выражений, чтобы выделять начало функции double OnTester().

Пока такой шаблон (применяется при построчном считывании mql5 файла):

(начало слова)(слово "double")(один или несколько пробелов)(слово "OnTester()")

Dmitry Fedoseev
41203
Dmitry Fedoseev 2016.10.06 12:14  

любое количество табуляций и пробелов

double  

любое количество табуляций, пробелов и новых строк

OnTester

 любое количество табуляций, пробелов и новых строк

любое количество табуляций, пробелов и новых строк

)

 любое количество табуляций, пробелов и новых строк

 

 


Vladimir Karputov
Модератор
33420
Vladimir Karputov 2016.10.06 12:18  
Dmitry Fedoseev:

любое количество табуляций и пробелов

double  

любое количество табуляций, пробелов и новых строк

OnTester

 любое количество табуляций, пробелов и новых строк

любое количество табуляций, пробелов и новых строк

)

 любое количество табуляций, пробелов и новых строк

Новые строки сразу отбрасываю:

  • во-первых - анализирую построчно
  • во-вторых - разнесённые double и OnTester по нескольким строкам выглядит как-то не эстетично.
а про табуляции - спасибо.
Dmitry Fedoseev
41203
Dmitry Fedoseev 2016.10.06 12:38  
  for
  (
  int 
  i
  =
  0
  ;
  i
  <
  5
  ;
  i
  ++
  )
  {  
  }
Компилируется ;)
Maxim Kuznetsov
8265
Maxim Kuznetsov 2016.10.06 13:05  
Karputov Vladimir:

Пожалуйста, поделитесь, как в Ваших кодах встречается слово "OnTester".

Например такой вариант:

это стандартная функция - самый безобидный вариант.

 

А вот, что я нашёл сразу при поиске по статьям:

здесь в одной строке тоже присутствует "OnTester", но смысл абсолютно другой (это уже просто комментарий).

чтобы регулярками искать декларации в исходниках, исходники должны быть специально отформатированы, для этого по крайней мере в некоторых проектах С  применяют правила форматирования отличные от mql :-)

int

main ( int argc,char *argv[] )

{

}

/// то есть имена функций/методов всегда с новой строки, тип строкой выше

тогда регулярка находящая функцию выглядит примерно так: ^\s*([_a-zA-Z][_a-zA-Z0-9]*)\s+\(

в вашем случае лучше построить несложный КА который проигнорирует комментарии и всё что внутри вложенных {} () []

PS. Кстати классический ctags должен работать с исходниками mql, не вижу препятствий

Vladimir Karputov
Модератор
33420
Vladimir Karputov 2016.10.06 13:17  
Maxim Kuznetsov:

чтобы регулярками искать декларации в исходниках, исходники должны быть специально отформатированы, для этого по крайней мере в некоторых проектах С  применяют правила форматирования отличные от mql :-)

int

main ( int argc,char *argv[] )

{

}

/// то есть имена функций/методов всегда с новой строки, тип строкой выше

тогда регулярка находящая функцию выглядит примерно так: ^\s*([_a-zA-Z][_a-zA-Z0-9]*)\s+\(

в вашем случае лучше построить несложный КА который проигнорирует комментарии и всё что внутри вложенных {} () []

PS. Кстати классический ctags должен работать с исходниками mql, не вижу препятствий

Буду исходить из того, что пишем мы в MQL5 и никто не использует такие экзотические способы :) 

а предварительно форматировать - это непозволительная растрата времени и средств. Потом же нужно будет труднее что либо вставлять.
Vladimir Karputov
Модератор
33420
Vladimir Karputov 2016.10.10 08:32  

Вот ещё вариант встретился:

/*
//+-------------------------------+
//|                               |
//+-------------------------------+
double OnTester()
  {
...
  }
...
*/
/ /12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий