object SyntAnal5: TLibSyntAnalyzer
  Formats = <
    item
      DisplayName = 'Symbol'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clMaroon
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = [fsBold]
    end
    item
      DisplayName = 'Number'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clNavy
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = [fsBold]
    end
    item
      DisplayName = 'String'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clTeal
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
    end
    item
      DisplayName = 'Comment'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clGray
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = [fsItalic]
    end
    item
      DisplayName = 'Id'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clBlack
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
    end
    item
      DisplayName = 'Id keyword'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clBlack
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = [fsBold]
    end
    item
      DisplayName = 'Id special'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clOlive
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
    end
    item
      DisplayName = 'Id types'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clPurple
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
    end
    item
      DisplayName = 'Preprocessor'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clGreen
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
    end
    item
      DisplayName = 'Asm BG'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clBlack
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
      BgColor = clMoneyGreen
      FormatType = ftBackGround
    end>
  TokenRules = <
    item
      DisplayName = 'String'
      StyleName = 'String'
      TokenType = 4
      Expression = '"(\\"|\\\\|\\\n|.)*?("|$)'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'String in define'
      StyleName = 'String'
      TokenType = 4
      Expression = '(?<=\#include\x20*)<.+?>'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Id keyword'
      StyleName = 'Id keyword'
      TokenType = 7
      Expression = '\b(catch|else|for|if|switch|while)\b'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Id'
      StyleName = 'Id'
      TokenType = 2
      Expression = '[a-z_]\w*'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Hex Float'
      StyleName = 'Number'
      TokenType = 5
      Expression = 
        '0x([\da-f][\da-f'#39']* \.)? [\da-f][\da-f'#39']* p [\+\-]? [\da-f][\da-' +
        'f'#39']* |'#13#10'0x[\da-f][\da-f'#39']* \. [\da-f][\da-f'#39']*'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Hex'
      StyleName = 'Number'
      TokenType = 5
      Expression = '0x[0-9a-f'#39']+ [ul]* | 0b[01'#39']+ [ul]*'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Float'
      StyleName = 'Number'
      TokenType = 5
      Expression = 
        '\d[\d'#39']* \.? [\d'#39']* e[\+\-]? \d+ [Lf]? |'#13#10'\. [\d'#39']+ e[\+\-]? \d+' +
        ' [Lf]? |'#13#10'\d[\d'#39']* \. (\d[\d'#39']*)? [Lf]? |'#13#10'\. \d[\d'#39']* [Lf]?'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Integer'
      StyleName = 'Number'
      TokenType = 5
      Expression = '\d[\d'#39']* [ulf]*'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Directive'
      StyleName = 'Preprocessor'
      TokenType = 6
      Expression = 
        '\#\x20*(define|undef|include|if|ifdef|ifndef|else|elif|endif|lin' +
        'e|error|pragma)\b'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Comment 1'
      StyleName = 'Comment'
      TokenType = 1
      Expression = '(?s)/\*.*?(\*/|\Z)'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Comment 2'
      StyleName = 'Comment'
      TokenType = 1
      Expression = '//.*'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Symbol ;'
      StyleName = 'Symbol'
      TokenType = 10
      Expression = ';'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Symbol {}'
      StyleName = 'Symbol'
      TokenType = 8
      Expression = '[\{\}]'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Symbol ()'
      StyleName = 'Symbol'
      TokenType = 9
      Expression = '[\(\)]'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Symbol'
      StyleName = 'Symbol'
      TokenType = 3
      Expression = 
        '\[\[| \]\]| \.\.\.| [\[\],~\.:\\\?] |<=> |'#13#10'[\-\+<>\|\&]{2}=? | ' +
        '\#{1,2}|'#13#10'[\+\-\*/&\|\^!<>=~%]=?'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Char'
      StyleName = 'String'
      TokenType = 4
      Expression = #39'.*?('#39'|$)'
      ColumnFrom = 0
      ColumnTo = 0
    end>
  BlockRules = <
    item
      DisplayName = 'keywords'
      StyleName = 'Id keyword'
      BlockType = btTagDetect
      ConditionList = <
        item
          TagList.Strings = (
            'asm'
            'break'
            'case'
            'catch'
            'class'
            'continue'
            'default'
            'delete'
            'do'
            'else'
            'enum'
            'for'
            'goto'
            'if'
            'new'
            'operator'
            'return'
            'sizeof'
            'struct'
            'switch'
            'throw'
            'try'
            'union'
            'uuid'
            'while')
          TokenTypes = 4
        end>
      HighlightPos = cpBound
      IgnoreAsParent = False
    end
    item
      DisplayName = 'keywords2'
      StyleName = 'Id special'
      BlockType = btTagDetect
      ConditionList = <
        item
          TagList.Strings = (
            '__asm'
            '__attribute'
            '__attribute__'
            '__automated'
            '__cdecl'
            '__classid'
            '__closure'
            '__clrcall'
            '__declspec'
            '__dispid'
            '__except'
            '__export'
            '__fastcall'
            '__finally'
            '__import'
            '__inline'
            '__int64'
            '__msfastcall'
            '__msreturn'
            '__pascal'
            '__property'
            '__published'
            '__regcall'
            '__stdcall'
            '__thiscall'
            '__try'
            '__uuidof'
            '_asm'
            '_Atomic'
            '_cdecl'
            '_export'
            '_fastcall'
            '_import'
            '_pascal'
            '_stdcall'
            'auto'
            'cdecl'
            'const'
            'explicit'
            'export'
            'extern'
            'friend'
            'inline'
            'mutable'
            'pascal'
            'private'
            'protected'
            'public'
            'register'
            'restrict'
            'static'
            'this'
            'typedef'
            'typeid'
            'typename'
            'virtual'
            'volatile')
          TokenTypes = 4
        end>
      HighlightPos = cpAny
      IgnoreAsParent = False
    end
    item
      DisplayName = 'types'
      StyleName = 'Id types'
      BlockType = btTagDetect
      ConditionList = <
        item
          TagList.Strings = (
            'bool'
            'char'
            'double'
            'false'
            'float'
            'int'
            'long'
            'null'
            'NULL'
            'short'
            'signed'
            'true'
            'unsigned'
            'void'
            'wchar_t')
          TokenTypes = 4
        end>
      HighlightPos = cpAny
      IgnoreAsParent = False
    end
    item
      DisplayName = 'func'
      ConditionList = <
        item
          TagList.Strings = (
            '{')
          TokenTypes = 256
        end
        item
          CondType = tcSkip
          TokenTypes = 2
        end
        item
          TagList.Strings = (
            ')')
          TokenTypes = 512
        end
        item
          CondType = tcSkip
          TokenTypes = 62
        end
        item
          TagList.Strings = (
            '(')
          TokenTypes = 512
        end
        item
          CondType = tcSkip
          TokenTypes = 2
        end
        item
          TokenTypes = 4
        end
        item
          CondType = tcSkip
          TokenTypes = 10
        end
        item
          TokenTypes = 4
        end>
      BlockEnd = '}'
      NotCollapsed = True
      NameFmt = '%sz-1'
      RefToCondEnd = True
      HighlightPos = cpBound
      NoEndRule = True
      TreeItemImage = 5
      IgnoreAsParent = False
      AutoCloseText = '}'#13#10
    end
    item
      DisplayName = '{'
      ConditionList = <
        item
          TagList.Strings = (
            '{')
          TokenTypes = 256
        end>
      BlockEnd = '}'
      DisplayInTree = False
      HighlightPos = cpAny
      DrawStaple = True
      CollapseFmt = '{ ... }'
      IgnoreAsParent = False
      AutoCloseMode = acmCloseNearest
      AutoCloseText = '}'
    end
    item
      DisplayName = '}'
      BlockType = btRangeEnd
      ConditionList = <
        item
          TagList.Strings = (
            '}')
          TokenTypes = 256
        end>
      HighlightPos = cpBound
      IgnoreAsParent = False
    end
    item
      DisplayName = 'struct'
      ConditionList = <
        item
          TagList.Strings = (
            '{')
          TokenTypes = 256
        end
        item
          CondType = tcSkip
          TokenTypes = 2
        end
        item
          TokenTypes = 4
        end
        item
          TagList.Strings = (
            'struct')
          TokenTypes = 4
        end>
      NameFmt = '%s-1'
      RefToCondEnd = True
      HighlightPos = cpAny
      NoEndRule = True
      TreeItemImage = 3
      IgnoreAsParent = False
    end>
  CodeTemplates = <>
  SubAnalyzers = <
    item
      DisplayName = 'asm-string'
      StyleName = 'Asm BG'
      StartExpression = '\#asm\s*\(\s*"'
      EndExpression = '"\)'
      SyntAnalyzer = SyntAnal2
    end
    item
      DisplayName = 'asm-endasm'
      Enabled = False
      StyleName = 'Preprocessor'
      StartExpression = '\#asm'
      EndExpression = '\#endasm'
      SyntAnalyzer = SyntAnal2
    end>
  SampleText.Strings = (
    '/* Test */'
    '#define sum(a, b) a+b'
    '#include <some/path.h> '
    '#asm (" mov ax, F0h ")'
    ''
    'double a = {'
    '  20LU,              '
    '  0xF'#39'FF'#39'FFu'
    '  0xAC00,'
    '  0.123,'
    '  0b1010001,'
    '  0xabc00ull,'
    '  -0.1f,'
    '  1'#39'000'#39'000.000'#39'001,'
    '  24e-5,'
    '  0.1E,'
    '  58.,'
    '  4e2,'
    '  123.456e-67,'
    '  .1E4f,'
    '  0x10.1p0,'
    '};                   '
    ''
    'static char* stdcall Init(void) {'
    '  TestModDeinit(B64UTIL);'
    '  return 0;'
    '}'
    ''
    'void Test(char *Sender)'
    '{'
    '  int Number = 10 + '#39'D'#39' + "String\nEnd";'
    '  for (i=0; i<5; i++) { '
    '  } '
    '}'
    ''
    'typedef struct HashTab {'
    '   int Name;'
    '}')
  TokenTypeNames.Strings = (
    'Unknown'
    'Comment'
    'Id'
    'Symbol'
    'String'
    'Number'
    'Preprocessor'
    'Id keyword'
    'Symbol {}'
    'Symbol ()'
    'Symbol ;')
  Extentions = 'c ch'
  LexerName = 'C'
  Notes.Strings = (
    'Based on original C lexer from EControl'
    'Heavily reworked by Alexey (CudaText)')
  LineComment = '//'
  Charset = DEFAULT_CHARSET
end
