summaryrefslogtreecommitdiff
path: root/tests/lexers/mql/example.txt
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lexers/mql/example.txt')
-rw-r--r--tests/lexers/mql/example.txt959
1 files changed, 959 insertions, 0 deletions
diff --git a/tests/lexers/mql/example.txt b/tests/lexers/mql/example.txt
new file mode 100644
index 00000000..651db08a
--- /dev/null
+++ b/tests/lexers/mql/example.txt
@@ -0,0 +1,959 @@
+---input---
+//+------------------------------------------------------------------+
+//| Array.mqh |
+//| Copyright 2009-2013, MetaQuotes Software Corp. |
+//| http://www.mql4.com |
+//+------------------------------------------------------------------+
+#include <Object.mqh>
+//+------------------------------------------------------------------+
+//| Class CArray |
+//| Purpose: Base class of dynamic arrays. |
+//| Derives from class CObject. |
+//+------------------------------------------------------------------+
+class CArray : public CObject
+ {
+protected:
+ int m_step_resize; // increment size of the array
+ int m_data_total; // number of elements
+ int m_data_max; // maximmum size of the array without memory reallocation
+ int m_sort_mode; // mode of array sorting
+
+public:
+ CArray(void);
+ ~CArray(void);
+ //--- methods of access to protected data
+ int Step(void) const { return(m_step_resize); }
+ bool Step(const int step);
+ int Total(void) const { return(m_data_total); }
+ int Available(void) const { return(m_data_max-m_data_total); }
+ int Max(void) const { return(m_data_max); }
+ bool IsSorted(const int mode=0) const { return(m_sort_mode==mode); }
+ int SortMode(void) const { return(m_sort_mode); }
+ //--- cleaning method
+ void Clear(void) { m_data_total=0; }
+ //--- methods for working with files
+ virtual bool Save(const int file_handle);
+ virtual bool Load(const int file_handle);
+ //--- sorting method
+ void Sort(const int mode=0);
+
+protected:
+ virtual void QuickSort(int beg,int end,const int mode=0) { }
+ };
+//+------------------------------------------------------------------+
+//| Constructor |
+//+------------------------------------------------------------------+
+CArray::CArray(void) : m_step_resize(16),
+ m_data_total(0),
+ m_data_max(0),
+ m_sort_mode(-1)
+ {
+ }
+//+------------------------------------------------------------------+
+//| Destructor |
+//+------------------------------------------------------------------+
+CArray::~CArray(void)
+ {
+ }
+//+------------------------------------------------------------------+
+//| Method Set for variable m_step_resize |
+//+------------------------------------------------------------------+
+bool CArray::Step(const int step)
+ {
+//--- check
+ if(step>0)
+ {
+ m_step_resize=step;
+ return(true);
+ }
+//--- failure
+ return(false);
+ }
+//+------------------------------------------------------------------+
+//| Sorting an array in ascending order |
+//+------------------------------------------------------------------+
+void CArray::Sort(const int mode)
+ {
+//--- check
+ if(IsSorted(mode))
+ return;
+ m_sort_mode=mode;
+ if(m_data_total<=1)
+ return;
+//--- sort
+ QuickSort(0,m_data_total-1,mode);
+ }
+//+------------------------------------------------------------------+
+//| Writing header of array to file |
+//+------------------------------------------------------------------+
+bool CArray::Save(const int file_handle)
+ {
+//--- check handle
+ if(file_handle!=INVALID_HANDLE)
+ {
+ //--- write start marker - 0xFFFFFFFFFFFFFFFF
+ if(FileWriteLong(file_handle,-1)==sizeof(long))
+ {
+ //--- write array type
+ if(FileWriteInteger(file_handle,Type(),INT_VALUE)==INT_VALUE)
+ return(true);
+ }
+ }
+//--- failure
+ return(false);
+ }
+//+------------------------------------------------------------------+
+//| Reading header of array from file |
+//+------------------------------------------------------------------+
+bool CArray::Load(const int file_handle)
+ {
+//--- check handle
+ if(file_handle!=INVALID_HANDLE)
+ {
+ //--- read and check start marker - 0xFFFFFFFFFFFFFFFF
+ if(FileReadLong(file_handle)==-1)
+ {
+ //--- read and check array type
+ if(FileReadInteger(file_handle,INT_VALUE)==Type())
+ return(true);
+ }
+ }
+//--- failure
+ return(false);
+ }
+//+------------------------------------------------------------------+
+
+---tokens---
+'//+------------------------------------------------------------------+\n' Comment.Single
+
+'//| Array.mqh |\n' Comment.Single
+
+'//| Copyright 2009-2013, MetaQuotes Software Corp. |\n' Comment.Single
+
+'//| http://www.mql4.com |\n' Comment.Single
+
+'//+------------------------------------------------------------------+\n' Comment.Single
+
+'#' Comment.Preproc
+'include' Comment.Preproc
+' ' Text
+'<Object.mqh>' Comment.PreprocFile
+'\n' Comment.Preproc
+
+'//+------------------------------------------------------------------+\n' Comment.Single
+
+'//| Class CArray |\n' Comment.Single
+
+'//| Purpose: Base class of dynamic arrays. |\n' Comment.Single
+
+'//| Derives from class CObject. |\n' Comment.Single
+
+'//+------------------------------------------------------------------+\n' Comment.Single
+
+'class' Keyword
+' ' Text
+'CArray' Name.Class
+' ' Text
+':' Operator
+' ' Text
+'public' Keyword
+' ' Text
+'CObject' Name
+'\n' Text
+
+' ' Text
+'{' Punctuation
+'\n' Text
+
+'protected' Keyword
+':' Operator
+'\n' Text
+
+' ' Text
+'int' Keyword.Type
+' ' Text
+'m_step_resize' Name
+';' Punctuation
+' ' Text
+'// increment size of the array\n' Comment.Single
+
+' ' Text
+'int' Keyword.Type
+' ' Text
+'m_data_total' Name
+';' Punctuation
+' ' Text
+'// number of elements\n' Comment.Single
+
+' ' Text
+'int' Keyword.Type
+' ' Text
+'m_data_max' Name
+';' Punctuation
+' ' Text
+'// maximmum size of the array without memory reallocation\n' Comment.Single
+
+' ' Text
+'int' Keyword.Type
+' ' Text
+'m_sort_mode' Name
+';' Punctuation
+' ' Text
+'// mode of array sorting\n' Comment.Single
+
+'\n' Text
+
+'public' Keyword
+':' Operator
+'\n' Text
+
+' ' Text
+'CArray' Name
+'(' Punctuation
+'void' Keyword.Type
+')' Punctuation
+';' Punctuation
+'\n' Text
+
+' ' Text
+'~' Operator
+'CArray' Name
+'(' Punctuation
+'void' Keyword.Type
+')' Punctuation
+';' Punctuation
+'\n' Text
+
+' ' Text
+'//--- methods of access to protected data\n' Comment.Single
+
+' ' Text
+'int' Keyword.Type
+' ' Text
+'Step' Name.Function
+'(' Punctuation
+'void' Keyword.Type
+')' Punctuation
+' ' Text
+'const' Keyword
+' ' Text
+'{' Punctuation
+' ' Text
+'return' Keyword
+'(' Punctuation
+'m_step_resize' Name
+')' Punctuation
+';' Punctuation
+' ' Text
+'}' Punctuation
+'\n' Text
+
+' ' Text
+'bool' Keyword.Type
+' ' Text
+'Step' Name.Function
+'(' Punctuation
+'const' Keyword
+' ' Text
+'int' Keyword.Type
+' ' Text
+'step' Name
+')' Punctuation
+';' Punctuation
+'\n' Text
+
+' ' Text
+'int' Keyword.Type
+' ' Text
+'Total' Name.Function
+'(' Punctuation
+'void' Keyword.Type
+')' Punctuation
+' ' Text
+'const' Keyword
+' ' Text
+'{' Punctuation
+' ' Text
+'return' Keyword
+'(' Punctuation
+'m_data_total' Name
+')' Punctuation
+';' Punctuation
+' ' Text
+'}' Punctuation
+'\n' Text
+
+' ' Text
+'int' Keyword.Type
+' ' Text
+'Available' Name.Function
+'(' Punctuation
+'void' Keyword.Type
+')' Punctuation
+' ' Text
+'const' Keyword
+' ' Text
+'{' Punctuation
+' ' Text
+'return' Keyword
+'(' Punctuation
+'m_data_max' Name
+'-' Operator
+'m_data_total' Name
+')' Punctuation
+';' Punctuation
+' ' Text
+'}' Punctuation
+'\n' Text
+
+' ' Text
+'int' Keyword.Type
+' ' Text
+'Max' Name.Function
+'(' Punctuation
+'void' Keyword.Type
+')' Punctuation
+' ' Text
+'const' Keyword
+' ' Text
+'{' Punctuation
+' ' Text
+'return' Keyword
+'(' Punctuation
+'m_data_max' Name
+')' Punctuation
+';' Punctuation
+' ' Text
+'}' Punctuation
+'\n' Text
+
+' ' Text
+'bool' Keyword.Type
+' ' Text
+'IsSorted' Name.Function
+'(' Punctuation
+'const' Keyword
+' ' Text
+'int' Keyword.Type
+' ' Text
+'mode' Name
+'=' Operator
+'0' Literal.Number.Integer
+')' Punctuation
+' ' Text
+'const' Keyword
+' ' Text
+'{' Punctuation
+' ' Text
+'return' Keyword
+'(' Punctuation
+'m_sort_mode' Name
+'=' Operator
+'=' Operator
+'mode' Name
+')' Punctuation
+';' Punctuation
+' ' Text
+'}' Punctuation
+'\n' Text
+
+' ' Text
+'int' Keyword.Type
+' ' Text
+'SortMode' Name.Function
+'(' Punctuation
+'void' Keyword.Type
+')' Punctuation
+' ' Text
+'const' Keyword
+' ' Text
+'{' Punctuation
+' ' Text
+'return' Keyword
+'(' Punctuation
+'m_sort_mode' Name
+')' Punctuation
+';' Punctuation
+' ' Text
+'}' Punctuation
+'\n' Text
+
+' ' Text
+'//--- cleaning method\n' Comment.Single
+
+' ' Text
+'void' Keyword.Type
+' ' Text
+'Clear' Name.Function
+'(' Punctuation
+'void' Keyword.Type
+')' Punctuation
+' ' Text
+'{' Punctuation
+' ' Text
+'m_data_total' Name
+'=' Operator
+'0' Literal.Number.Integer
+';' Punctuation
+' ' Text
+'}' Punctuation
+'\n' Text
+
+' ' Text
+'//--- methods for working with files\n' Comment.Single
+
+' ' Text
+'virtual' Keyword
+' ' Text
+'bool' Keyword.Type
+' ' Text
+'Save' Name
+'(' Punctuation
+'const' Keyword
+' ' Text
+'int' Keyword.Type
+' ' Text
+'file_handle' Name
+')' Punctuation
+';' Punctuation
+'\n' Text
+
+' ' Text
+'virtual' Keyword
+' ' Text
+'bool' Keyword.Type
+' ' Text
+'Load' Name
+'(' Punctuation
+'const' Keyword
+' ' Text
+'int' Keyword.Type
+' ' Text
+'file_handle' Name
+')' Punctuation
+';' Punctuation
+'\n' Text
+
+' ' Text
+'//--- sorting method\n' Comment.Single
+
+' ' Text
+'void' Keyword.Type
+' ' Text
+'Sort' Name.Function
+'(' Punctuation
+'const' Keyword
+' ' Text
+'int' Keyword.Type
+' ' Text
+'mode' Name
+'=' Operator
+'0' Literal.Number.Integer
+')' Punctuation
+';' Punctuation
+'\n' Text
+
+'\n' Text
+
+'protected' Keyword
+':' Operator
+'\n' Text
+
+' ' Text
+'virtual' Keyword
+' ' Text
+'void' Keyword.Type
+' ' Text
+'QuickSort' Name
+'(' Punctuation
+'int' Keyword.Type
+' ' Text
+'beg' Name
+',' Punctuation
+'int' Keyword.Type
+' ' Text
+'end' Name
+',' Punctuation
+'const' Keyword
+' ' Text
+'int' Keyword.Type
+' ' Text
+'mode' Name
+'=' Operator
+'0' Literal.Number.Integer
+')' Punctuation
+' ' Text
+'{' Punctuation
+' ' Text
+'}' Punctuation
+'\n' Text
+
+' ' Text
+'}' Punctuation
+';' Punctuation
+'\n' Text
+
+'//+------------------------------------------------------------------+\n' Comment.Single
+
+'//| Constructor |\n' Comment.Single
+
+'//+------------------------------------------------------------------+\n' Comment.Single
+
+'CArray' Name
+':' Operator
+':' Operator
+'CArray' Name
+'(' Punctuation
+'void' Keyword.Type
+')' Punctuation
+' ' Text
+':' Operator
+' ' Text
+'m_step_resize' Name
+'(' Punctuation
+'16' Literal.Number.Integer
+')' Punctuation
+',' Punctuation
+'\n' Text
+
+' ' Text
+'m_data_total' Name
+'(' Punctuation
+'0' Literal.Number.Integer
+')' Punctuation
+',' Punctuation
+'\n' Text
+
+' ' Text
+'m_data_max' Name
+'(' Punctuation
+'0' Literal.Number.Integer
+')' Punctuation
+',' Punctuation
+'\n' Text
+
+' ' Text
+'m_sort_mode' Name
+'(' Punctuation
+'-1' Literal.Number.Integer
+')' Punctuation
+'\n' Text
+
+' ' Text
+'{' Punctuation
+'\n' Text
+
+' ' Text
+'}' Punctuation
+'\n' Text
+
+'//+------------------------------------------------------------------+\n' Comment.Single
+
+'//| Destructor |\n' Comment.Single
+
+'//+------------------------------------------------------------------+\n' Comment.Single
+
+'CArray' Name
+':' Operator
+':' Operator
+'~' Operator
+'CArray' Name
+'(' Punctuation
+'void' Keyword.Type
+')' Punctuation
+'\n' Text
+
+' ' Text
+'{' Punctuation
+'\n' Text
+
+' ' Text
+'}' Punctuation
+'\n' Text
+
+'//+------------------------------------------------------------------+\n' Comment.Single
+
+'//| Method Set for variable m_step_resize |\n' Comment.Single
+
+'//+------------------------------------------------------------------+\n' Comment.Single
+
+'bool' Keyword.Type
+' ' Text
+'CArray' Name
+':' Operator
+':' Operator
+'Step' Name
+'(' Punctuation
+'const' Keyword
+' ' Text
+'int' Keyword.Type
+' ' Text
+'step' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'{' Punctuation
+'\n' Text
+
+'//--- check\n' Comment.Single
+
+' ' Text
+'if' Keyword
+'(' Punctuation
+'step' Name
+'>' Operator
+'0' Literal.Number.Integer
+')' Punctuation
+'\n' Text
+
+' ' Text
+'{' Punctuation
+'\n' Text
+
+' ' Text
+'m_step_resize' Name
+'=' Operator
+'step' Name
+';' Punctuation
+'\n' Text
+
+' ' Text
+'return' Keyword
+'(' Punctuation
+'true' Name.Builtin
+')' Punctuation
+';' Punctuation
+'\n' Text
+
+' ' Text
+'}' Punctuation
+'\n' Text
+
+'//--- failure\n' Comment.Single
+
+' ' Text
+'return' Keyword
+'(' Punctuation
+'false' Name.Builtin
+')' Punctuation
+';' Punctuation
+'\n' Text
+
+' ' Text
+'}' Punctuation
+'\n' Text
+
+'//+------------------------------------------------------------------+\n' Comment.Single
+
+'//| Sorting an array in ascending order |\n' Comment.Single
+
+'//+------------------------------------------------------------------+\n' Comment.Single
+
+'void' Keyword.Type
+' ' Text
+'CArray' Name
+':' Operator
+':' Operator
+'Sort' Name
+'(' Punctuation
+'const' Keyword
+' ' Text
+'int' Keyword.Type
+' ' Text
+'mode' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'{' Punctuation
+'\n' Text
+
+'//--- check\n' Comment.Single
+
+' ' Text
+'if' Keyword
+'(' Punctuation
+'IsSorted' Name
+'(' Punctuation
+'mode' Name
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+' ' Text
+'return' Keyword
+';' Punctuation
+'\n' Text
+
+' ' Text
+'m_sort_mode' Name
+'=' Operator
+'mode' Name
+';' Punctuation
+'\n' Text
+
+' ' Text
+'if' Keyword
+'(' Punctuation
+'m_data_total' Name
+'<' Operator
+'=' Operator
+'1' Literal.Number.Integer
+')' Punctuation
+'\n' Text
+
+' ' Text
+'return' Keyword
+';' Punctuation
+'\n' Text
+
+'//--- sort\n' Comment.Single
+
+' ' Text
+'QuickSort' Name
+'(' Punctuation
+'0' Literal.Number.Integer
+',' Punctuation
+'m_data_total' Name
+'-1' Literal.Number.Integer
+',' Punctuation
+'mode' Name
+')' Punctuation
+';' Punctuation
+'\n' Text
+
+' ' Text
+'}' Punctuation
+'\n' Text
+
+'//+------------------------------------------------------------------+\n' Comment.Single
+
+'//| Writing header of array to file |\n' Comment.Single
+
+'//+------------------------------------------------------------------+\n' Comment.Single
+
+'bool' Keyword.Type
+' ' Text
+'CArray' Name
+':' Operator
+':' Operator
+'Save' Name
+'(' Punctuation
+'const' Keyword
+' ' Text
+'int' Keyword.Type
+' ' Text
+'file_handle' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'{' Punctuation
+'\n' Text
+
+'//--- check handle\n' Comment.Single
+
+' ' Text
+'if' Keyword
+'(' Punctuation
+'file_handle' Name
+'!' Operator
+'=' Operator
+'INVALID_HANDLE' Name.Constant
+')' Punctuation
+'\n' Text
+
+' ' Text
+'{' Punctuation
+'\n' Text
+
+' ' Text
+'//--- write start marker - 0xFFFFFFFFFFFFFFFF\n' Comment.Single
+
+' ' Text
+'if' Keyword
+'(' Punctuation
+'FileWriteLong' Name.Function
+'(' Punctuation
+'file_handle' Name
+',' Punctuation
+'-1' Literal.Number.Integer
+')' Punctuation
+'=' Operator
+'=' Operator
+'sizeof' Keyword
+'(' Punctuation
+'long' Keyword.Type
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+' ' Text
+'{' Punctuation
+'\n' Text
+
+' ' Text
+'//--- write array type\n' Comment.Single
+
+' ' Text
+'if' Keyword
+'(' Punctuation
+'FileWriteInteger' Name.Function
+'(' Punctuation
+'file_handle' Name
+',' Punctuation
+'Type' Name
+'(' Punctuation
+')' Punctuation
+',' Punctuation
+'INT_VALUE' Name
+')' Punctuation
+'=' Operator
+'=' Operator
+'INT_VALUE' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'return' Keyword
+'(' Punctuation
+'true' Name.Builtin
+')' Punctuation
+';' Punctuation
+'\n' Text
+
+' ' Text
+'}' Punctuation
+'\n' Text
+
+' ' Text
+'}' Punctuation
+'\n' Text
+
+'//--- failure\n' Comment.Single
+
+' ' Text
+'return' Keyword
+'(' Punctuation
+'false' Name.Builtin
+')' Punctuation
+';' Punctuation
+'\n' Text
+
+' ' Text
+'}' Punctuation
+'\n' Text
+
+'//+------------------------------------------------------------------+\n' Comment.Single
+
+'//| Reading header of array from file |\n' Comment.Single
+
+'//+------------------------------------------------------------------+\n' Comment.Single
+
+'bool' Keyword.Type
+' ' Text
+'CArray' Name
+':' Operator
+':' Operator
+'Load' Name
+'(' Punctuation
+'const' Keyword
+' ' Text
+'int' Keyword.Type
+' ' Text
+'file_handle' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'{' Punctuation
+'\n' Text
+
+'//--- check handle\n' Comment.Single
+
+' ' Text
+'if' Keyword
+'(' Punctuation
+'file_handle' Name
+'!' Operator
+'=' Operator
+'INVALID_HANDLE' Name.Constant
+')' Punctuation
+'\n' Text
+
+' ' Text
+'{' Punctuation
+'\n' Text
+
+' ' Text
+'//--- read and check start marker - 0xFFFFFFFFFFFFFFFF\n' Comment.Single
+
+' ' Text
+'if' Keyword
+'(' Punctuation
+'FileReadLong' Name.Function
+'(' Punctuation
+'file_handle' Name
+')' Punctuation
+'=' Operator
+'=' Operator
+'-1' Literal.Number.Integer
+')' Punctuation
+'\n' Text
+
+' ' Text
+'{' Punctuation
+'\n' Text
+
+' ' Text
+'//--- read and check array type\n' Comment.Single
+
+' ' Text
+'if' Keyword
+'(' Punctuation
+'FileReadInteger' Name.Function
+'(' Punctuation
+'file_handle' Name
+',' Punctuation
+'INT_VALUE' Name
+')' Punctuation
+'=' Operator
+'=' Operator
+'Type' Name
+'(' Punctuation
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+' ' Text
+'return' Keyword
+'(' Punctuation
+'true' Name.Builtin
+')' Punctuation
+';' Punctuation
+'\n' Text
+
+' ' Text
+'}' Punctuation
+'\n' Text
+
+' ' Text
+'}' Punctuation
+'\n' Text
+
+'//--- failure\n' Comment.Single
+
+' ' Text
+'return' Keyword
+'(' Punctuation
+'false' Name.Builtin
+')' Punctuation
+';' Punctuation
+'\n' Text
+
+' ' Text
+'}' Punctuation
+'\n' Text
+
+'//+------------------------------------------------------------------+\n' Comment.Single