object SyntAnal24: 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 std'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clPurple
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
    end
    item
      DisplayName = 'Preproc'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clGreen
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = [fsItalic]
    end
    item
      DisplayName = 'Func modifier'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clOlive
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
    end
    item
      DisplayName = 'Symbol bad'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clRed
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = [fsUnderline]
    end
    item
      DisplayName = 'Asm BG'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clNone
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
      BgColor = clMoneyGreen
      FormatType = ftBackGround
    end>
  TokenRules = <
    item
      DisplayName = 'Id'
      StyleName = 'Id'
      TokenType = 2
      Expression = '&?[a-z_]\w*'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'String'
      StyleName = 'String'
      TokenType = 4
      Expression = #39'.*?('#39'|$)'#13#10
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Float'
      StyleName = 'Number'
      TokenType = 5
      Expression = '(\d+\.)?\d+e[\+\-]?\d+\b |'#13#10'\d+\.\d+\b'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Integer'
      StyleName = 'Number'
      TokenType = 5
      Expression = '\d+\b'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Preprocessor 1'
      StyleName = 'Preproc'
      AlwaysEnabled = True
      TokenType = 6
      Expression = '\{\$.*?\}'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Preprocessor 2'
      StyleName = 'Preproc'
      AlwaysEnabled = True
      TokenType = 6
      Expression = '\(\*\$.*?\*\)'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Comment 1'
      StyleName = 'Comment'
      AlwaysEnabled = True
      TokenType = 1
      Expression = '(?s)\(\*.*?(\*\)|\Z)'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Comment 2'
      StyleName = 'Comment'
      AlwaysEnabled = True
      TokenType = 1
      Expression = '(?s)\{.*?(\}|\Z)'#13#10
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Comment 3'
      StyleName = 'Comment'
      AlwaysEnabled = True
      TokenType = 1
      Expression = '//.*'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Hex'
      StyleName = 'Number'
      TokenType = 5
      Expression = '\$\h+\b | &[0-7]+\b | %[01]+\b'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Symbol ;'
      StyleName = 'Symbol'
      TokenType = 7
      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 = '[@,\.\^] | [<>\*/\+\-:]=? | ='
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Char'
      StyleName = 'String'
      TokenType = 4
      Expression = '\#(\d+|\$\h+)\b'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Invalid symbol'
      StyleName = 'Symbol bad'
      Expression = '.'
      ColumnFrom = 0
      ColumnTo = 0
    end>
  BlockRules = <
    item
      DisplayName = 'Id keywords'
      StyleName = 'Id keyword'
      BlockType = btTagDetect
      ConditionList = <
        item
          TagList.Strings = (
            'absolute'
            'and'
            'array'
            'as'
            'asm'
            'begin'
            'bitpacked'
            'break'
            'case'
            'class'
            'const'
            'constructor'
            'contains'
            'continue'
            'default'
            'destructor'
            'dispinterface'
            'div'
            'do'
            'downto'
            'else'
            'end'
            'except'
            'exit'
            'exports'
            'finalization'
            'finally'
            'for'
            'function'
            'generic'
            'goto'
            'if'
            'implementation'
            'in'
            'inherited'
            'initialization'
            'interface'
            'is'
            'label'
            'library'
            'mod'
            'not'
            'object'
            'of'
            'operator'
            'or'
            'out'
            'package'
            'packed'
            'private'
            'procedure'
            'program'
            'property'
            'protected'
            'public'
            'published'
            'raise'
            'record'
            'repeat'
            'requires'
            'resourcestring'
            'set'
            'shl'
            'shr'
            'specialize'
            'strict'
            'then'
            'threadvar'
            'to'
            'try'
            'type'
            'unit'
            'until'
            'uses'
            'var'
            'while'
            'with'
            'xor')
          TokenTypes = 4
          IgnoreCase = True
        end>
      HighlightPos = cpBound
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Id std'
      StyleName = 'Id std'
      BlockType = btTagDetect
      ConditionList = <
        item
          TagList.Strings = (
            'AnsiChar'
            'AnsiString'
            'Boolean'
            'Boolean16'
            'Boolean32'
            'Boolean64'
            'Boolean8'
            'Byte'
            'ByteBool'
            'Cardinal'
            'Char'
            'Comp'
            'Currency'
            'Double'
            'Extended'
            'False'
            'File'
            'Int64'
            'Integer'
            'LongBool'
            'Longint'
            'Longword'
            'nil'
            'PAnsiChar'
            'PChar'
            'Pointer'
            'PUnicodeChar'
            'PWideChar'
            'QWord'
            'QWordBool'
            'Real'
            'Shortint'
            'ShortString'
            'Single'
            'SmallInt'
            'String'
            'True'
            'UnicodeString'
            'WideChar'
            'WideString'
            'Word'
            'WordBool')
          TokenTypes = 4
          IgnoreCase = True
        end>
      HighlightPos = cpAny
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Id modifiers'
      StyleName = 'Func modifier'
      BlockType = btTagDetect
      ConditionList = <
        item
          TagList.Strings = (
            'abstract'
            'alias'
            'assembler'
            'async'
            'cblock'
            'cdecl'
            'compilerproc'
            'deprecated'
            'dispid'
            'dynamic'
            'enumerator'
            'experimental'
            'export'
            'extdecl'
            'external'
            'far'
            'final'
            'forward'
            'inline'
            'interrupt'
            'iocheck'
            'local'
            'message'
            'mwpascal'
            'near'
            'noreturn'
            'nostackframe'
            'oldfpccall'
            'overload'
            'override'
            'pascal'
            'platform'
            'popstack'
            'register'
            'reintroduce'
            'rtlproc'
            'safecall'
            'saveregisters'
            'softfloat'
            'static'
            'stdcall'
            'syscall'
            'unimplemented'
            'varargs'
            'vectorcall'
            'virtual'
            'weakexternal'
            'winapi')
          TokenTypes = 4
          IgnoreCase = True
        end>
      HighlightPos = cpAny
      IgnoreAsParent = False
    end
    item
      DisplayName = 'end of record'
      BlockName = 'Record'
      BlockType = btRangeEnd
      ConditionList = <
        item
          TagList.Strings = (
            'end')
          TokenTypes = 4
          IgnoreCase = True
        end>
      HighlightPos = cpAny
      CancelNextRules = True
      IgnoreAsParent = False
    end
    item
      DisplayName = 'end'
      StatesRemove = 4
      BlockType = btRangeEnd
      ConditionList = <
        item
          TagList.Strings = (
            'end')
          TokenTypes = 4
          IgnoreCase = True
        end>
      HighlightPos = cpBound
      IgnoreAsParent = False
    end
    item
      DisplayName = 'begin'
      ConditionList = <
        item
          TagList.Strings = (
            'begin'
            'case'
            'try')
          TokenTypes = 4
          IgnoreCase = True
        end>
      BlockEnd = 'end'
      DisplayInTree = False
      DynHighlight = dhBound
      HighlightPos = cpRange
      DynSelectMin = True
      DrawStaple = True
      CollapseFmt = '%s0 ...'
      IgnoreAsParent = False
    end
    item
      DisplayName = 'asm'
      StyleName = 'Asm BG'
      ConditionList = <
        item
          TagList.Strings = (
            'asm')
          TokenTypes = 4
          IgnoreCase = True
        end>
      BlockEnd = 'end'
      DisplayInTree = False
      DynHighlight = dhRangeNoBound
      HighlightPos = cpAny
      CollapseFmt = 'Asm ...'
      IgnoreAsParent = False
    end
    item
      DisplayName = 'until'
      BlockType = btRangeEnd
      ConditionList = <
        item
          TagList.Strings = (
            'until')
          TokenTypes = 4
          IgnoreCase = True
        end>
      HighlightPos = cpBound
      IgnoreAsParent = False
    end
    item
      DisplayName = 'repeat'
      ConditionList = <
        item
          TagList.Strings = (
            'repeat')
          TokenTypes = 4
          IgnoreCase = True
        end>
      BlockEnd = 'until'
      DisplayInTree = False
      DynHighlight = dhBound
      HighlightPos = cpRange
      DynSelectMin = True
      DrawStaple = True
      CollapseFmt = 'repeat ...'
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Class'
      StatesAdd = 4
      ConditionList = <
        item
          CondType = tcNotEqual
          TokenTypes = 128
        end
        item
          TagList.Strings = (
            'class'
            'dispinterface'
            'interface'
            'object')
          TokenTypes = 4
          IgnoreCase = True
        end
        item
          TagList.Strings = (
            '=')
          TokenTypes = 8
        end
        item
          TokenTypes = 4
        end>
      BlockEnd = 'end'
      NameFmt = '%s0'
      GroupFmt = 'classes'
      RefToCondEnd = True
      HighlightPos = cpBound
      CollapseFmt = '%s-2 %s0'
      GrammaRuleName = 'ClassDecl'
      TreeItemImage = 1
      TreeGroupImage = 0
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Record'
      StatesAdd = 4
      ConditionList = <
        item
          TagList.Strings = (
            'record')
          TokenTypes = 4
          IgnoreCase = True
        end
        item
          TagList.Strings = (
            'packed')
          CondType = tcSkip
          TokenTypes = 4
          IgnoreCase = True
        end
        item
          TagList.Strings = (
            '=')
          TokenTypes = 8
        end
        item
          TokenTypes = 4
        end>
      BlockEnd = 'end of record'
      NameFmt = 'record %s0'
      GroupFmt = 'types'
      RefToCondEnd = True
      HighlightPos = cpBound
      CollapseFmt = 'record %s0'
      TreeItemImage = 3
      TreeGroupImage = 0
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Interface section'
      StrictParent = True
      StatesAdd = 1
      ConditionList = <
        item
          TagList.Strings = (
            'interface')
          TokenTypes = 4
          IgnoreCase = True
        end>
      BlockEnd = 'Interface section end'
      EndOfTextClose = True
      Highlight = True
      DisplayInTree = False
      NameFmt = 'Interface section'
      DynHighlight = dhRange
      HighlightPos = cpAny
      CollapseFmt = 'Interface section'
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Interface section end'
      StatesRemove = 1
      BlockType = btRangeEnd
      ConditionList = <
        item
          TagList.Strings = (
            'implementation')
          TokenTypes = 4
          IgnoreCase = True
        end>
      BlockOffset = 1
      HighlightPos = cpBound
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Implementation section'
      StatesAdd = 2
      StatesRemove = 1
      ConditionList = <
        item
          TagList.Strings = (
            'implementation')
          TokenTypes = 4
          IgnoreCase = True
        end>
      EndOfTextClose = True
      Highlight = True
      DisplayInTree = False
      DynHighlight = dhRange
      HighlightPos = cpAny
      CollapseFmt = 'Implementation section'
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Finalization section'
      ConditionList = <
        item
          TagList.Strings = (
            'finalization')
          TokenTypes = 4
          IgnoreCase = True
        end>
      EndOfTextClose = True
      DisplayInTree = False
      HighlightPos = cpBound
      CollapseFmt = '%s0'
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Func of class n.n'
      StatesAbsent = 5
      ConditionList = <
        item
          TagList.Strings = (
            ';'
            ':'
            '.'
            '(')
          TokenTypes = 392
        end
        item
          TokenTypes = 4
        end
        item
          TagList.Strings = (
            '.')
          TokenTypes = 8
        end
        item
          TokenTypes = 4
        end
        item
          TagList.Strings = (
            '.')
          TokenTypes = 8
        end
        item
          TokenTypes = 4
        end
        item
          TagList.Strings = (
            'constructor'
            'destructor'
            'function'
            'procedure')
          TokenTypes = 4
        end>
      BlockEnd = 'end of func'
      NameFmt = '%s-3.%s-5'
      GroupFmt = 'classes\%s-1'
      RefToCondEnd = True
      HighlightPos = cpRange
      CancelNextRules = True
      CollapseFmt = '%sz0'
      TreeItemImage = 6
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Func of class'
      StatesAbsent = 5
      ConditionList = <
        item
          TagList.Strings = (
            ';'
            ':'
            '(')
          TokenTypes = 392
        end
        item
          TokenTypes = 4
        end
        item
          TagList.Strings = (
            '.')
          TokenTypes = 8
        end
        item
          TokenTypes = 4
        end
        item
          TagList.Strings = (
            'constructor'
            'destructor'
            'function'
            'procedure')
          TokenTypes = 4
          IgnoreCase = True
        end>
      BlockEnd = 'end of func'
      NameFmt = '%s-3'
      GroupFmt = 'classes\%s-1'
      RefToCondEnd = True
      HighlightPos = cpRange
      CancelNextRules = True
      CollapseFmt = '%sz0'
      TreeItemImage = 6
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Func simple'
      StatesAbsent = 5
      ConditionList = <
        item
          TagList.Strings = (
            ';'
            ':'
            '(')
          TokenTypes = 392
        end
        item
          TokenTypes = 4
        end
        item
          TagList.Strings = (
            'function'
            'procedure')
          TokenTypes = 4
          IgnoreCase = True
        end>
      BlockEnd = 'end of func'
      NameFmt = '%s-1'
      RefToCondEnd = True
      HighlightPos = cpRange
      CancelNextRules = True
      CollapseFmt = '%sz0'
      TreeItemImage = 5
      TreeGroupImage = 0
      IgnoreAsParent = False
    end
    item
      DisplayName = 'end of func'
      BlockName = 'begin'
      NotParent = True
      BlockType = btRangeEnd
      ConditionList = <
        item
          TagList.Strings = (
            'end'
            'forward')
          TokenTypes = 4
          IgnoreCase = True
        end>
      RefToCondEnd = True
      HighlightPos = cpAny
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Enum'
      BlockName = 'Interface section'
      ConditionList = <
        item
          TokenTypes = 4
        end
        item
          TagList.Strings = (
            '(')
          TokenTypes = 256
        end
        item
          TagList.Strings = (
            '=')
          TokenTypes = 8
        end
        item
          TagList.Strings = (
            'operator')
          CondType = tcNotEqual
          TokenTypes = 4
          IgnoreCase = True
        end>
      BlockEnd = ';'
      NameFmt = 'enum %s0'
      GroupFmt = 'types'
      RefToCondEnd = True
      HighlightPos = cpBound
      CollapseFmt = 'enum %s0 ...'
      TreeItemImage = 3
      TreeGroupImage = 0
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Set'
      ConditionList = <
        item
          TagList.Strings = (
            'set')
          TokenTypes = 4
          IgnoreCase = True
        end
        item
          TagList.Strings = (
            '=')
          TokenTypes = 8
        end
        item
          TokenTypes = 4
        end>
      BlockEnd = ';'
      NameFmt = 'set %s0'
      GroupFmt = 'types'
      RefToCondEnd = True
      HighlightPos = cpBound
      TreeItemImage = 3
      TreeGroupImage = 0
      IgnoreAsParent = False
    end
    item
      DisplayName = 'unit'
      BlockName = 'Uses'
      StrictParent = True
      ConditionList = <
        item
          TokenTypes = 4
        end>
      BlockEnd = 'unit end'
      NotCollapsed = True
      NameFmt = '%s0~e1'
      HighlightPos = cpBound
      TreeItemImage = 2
      IgnoreAsParent = False
    end
    item
      DisplayName = 'unit end'
      BlockType = btRangeEnd
      ConditionList = <
        item
          TagList.Strings = (
            ','
            ';')
          TokenTypes = 136
        end>
      BlockOffset = 1
      HighlightPos = cpAny
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Uses'
      ConditionList = <
        item
          TagList.Strings = (
            'uses')
          TokenTypes = 4
          IgnoreCase = True
        end>
      BlockEnd = ';'
      NameFmt = 'uses'
      HighlightPos = cpBound
      CollapseFmt = 'uses ...'
      TreeItemImage = 0
      IgnoreAsParent = False
    end
    item
      DisplayName = ';'
      BlockType = btRangeEnd
      ConditionList = <
        item
          TokenTypes = 128
        end>
      HighlightPos = cpBound
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Operator'
      BlockName = 'Implementation section'
      ConditionList = <
        item
          TokenTypes = 8
        end
        item
          TagList.Strings = (
            'operator')
          TokenTypes = 4
          IgnoreCase = True
        end>
      NameFmt = 'operator %sz-1'
      GroupFmt = 'Operators'
      RefToCondEnd = True
      HighlightPos = cpAny
      CollapseFmt = 'operator %s-1'
      NoEndRule = True
      TreeItemImage = 7
      TreeGroupImage = 0
      IgnoreAsParent = False
    end>
  CodeTemplates = <>
  SubAnalyzers = <
    item
      DisplayName = 'asm section'
      StartExpression = 'asm\b'#13#10
      EndExpression = 'end'#13#10
      SyntAnalyzer = SyntAnal1
    end>
  SampleText.Strings = (
    'unit Test; //Comment'
    ''
    'interface'
    'uses aa.aa, bb, nn.nn.nn;'
    ''
    '{$ifdef zz}'
    'const'
    '  cColorCodes: array[0..1] of TColorCode = ('
    '    (sName: '#39'ee'#39'; sVal: %100110),'
    '    (sName: '#39'ddd'#39'; sVal: &700),'
    '    );'
    '{$endif}'
    ''
    'type'
    '  TEnum1 = (aa, bb, dd);'
    '  TRecord1 = packed record'
    '     val: word;'
    '     procedure Init;'
    '  end;  '
    ''
    'type'
    '  TForm1 = class(TForm)'
    '  public'
    '    procedure Init(Sender: TObject); virtual stdcall;'
    '  end;'
    '               '
    '  TEmpty = class;'
    '  '
    '  TInter1 = interface['#39'0123'#39']'
    '    procedure Init;'
    '  end;'
    ''
    'function FuncOnlyInInterface: word;  '
    '  '
    'implementation'
    ''
    'function FuncForward; forward;'
    ''
    'function SimpleFunc: word;'
    'begin '
    '  begin'
    '    begin'
    '    end;'
    '  end;'
    'end;'
    ''
    'procedure SimpleProc(n: byte);'
    'begin'
    'end;'
    ''
    'procedure TInter1.Init;'
    'begin'
    'end;'
    ''
    'procedure TForm1.Init(Sender: TObject);'
    'begin'
    '  if True then'
    '    Result := nil'
    '  else'
    '    Result := 1.2e-3 + $FFE0;'
    '  asm'
    '    MOV  AX, 1234H'
    '    MOV Number, AX'
    '  end;'
    'end;'
    ''
    'initialization'
    '  if False then'
    '  begin'
    '    Work;'
    '  end;'
    'end.')
  TokenTypeNames.Strings = (
    'Unknown'
    'Comment'
    'Id'
    'Symbol'
    'String'
    'Number'
    'Preproc'
    ';'
    '( )'
    '[ ]')
  Extentions = 'pas inc dpr lpr p pp'
  LexerName = 'Pascal'
  Notes.Strings = (
    'New Pascal lexer by Alexey (CudaText)'
    'Used states:'
    '  1 - in interface section'
    '  2 - in implementation section'
    '  4 - in class/record declaration'
    'So all "function" blocks must use "absent state"=1+4')
  LineComment = '//'
  AlwaysSyncBlockAnal = True
  Charset = DEFAULT_CHARSET
end
