object SyntAnal9: 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 = '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 = 'Comment'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clGray
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = [fsItalic]
    end
    item
      DisplayName = 'Comment doc'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = 8442414
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
    end
    item
      DisplayName = 'Id type'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clPurple
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
      FormatFlags = [ffBold, ffItalic, ffUnderline, ffStrikeOut, ffReadOnly, ffHidden]
    end
    item
      DisplayName = 'Id const'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clBlue
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
      FormatFlags = [ffBold, ffItalic, ffUnderline, ffStrikeOut, ffReadOnly, ffHidden]
    end
    item
      DisplayName = 'Id modifier'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clOlive
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
    end
    item
      DisplayName = 'Annotation'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clGreen
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
    end>
  TokenRules = <
    item
      DisplayName = 'Comment empty'
      StyleName = 'Comment'
      TokenType = 1
      Expression = '/\*\*/'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Comment doc'
      StyleName = 'Comment doc'
      TokenType = 1
      Expression = '(?s)/\*\*.*?(\*/|\Z)'
      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 = 'String'
      StyleName = 'String'
      TokenType = 4
      Expression = '("|'#39') (\\\1|.)*? (\1|$)'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Annot'
      StyleName = 'Annotation'
      TokenType = 8
      Expression = '\@\x20*\w+'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Var modifier'
      StyleName = 'Id modifier'
      TokenType = 2
      Expression = '\bvar(?=\s+\w)'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'IdKeyword'
      StyleName = 'Id keyword'
      TokenType = 6
      Expression = '\b(if|else|new)\b'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Id modifier'
      StyleName = 'Id modifier'
      TokenType = 7
      Expression = '\bnon-sealed\b'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Id'
      StyleName = 'Id'
      TokenType = 2
      Expression = '[a-z_\$][\w\$]*'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Number hex float'
      StyleName = 'Number'
      TokenType = 5
      Expression = '0x([\da-f_]*[\da-f])?\.[\da-f_]+(p[\-\+]?[\da-f]+)?\b'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Number hex'
      StyleName = 'Number'
      TokenType = 5
      Expression = '0x[\da-f]([\da-f_]*[\da-f])?L?\b'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Number binary'
      StyleName = 'Number'
      TokenType = 5
      Expression = '0b[01]([_01]*[01])?\b'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Number float'
      StyleName = 'Number'
      TokenType = 5
      Expression = '(\d([\d_]*\d)? \.)? \d+ e[\+\-]? \d([\d_]*\d)? [DF]?\b'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Number float2'
      StyleName = 'Number'
      TokenType = 5
      Expression = '\d([\d_]*\d)? \. \d([\d_]*\d)? [DF]?\b'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Number int'
      StyleName = 'Number'
      TokenType = 5
      Expression = '\d([\d_]*\d)?L?\b'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Symbol ( )'
      StyleName = 'Symbol'
      TokenType = 9
      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 = 11
      Expression = '[<>]'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Symbol [ ]'
      StyleName = 'Symbol'
      TokenType = 12
      Expression = '[\[\]]'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Symbol'
      StyleName = 'Symbol'
      TokenType = 3
      Expression = '[,;\./\+\-\*:=&/\|\^~!\?%]+'
      ColumnFrom = 0
      ColumnTo = 0
    end>
  BlockRules = <
    item
      DisplayName = 'Keywords'
      StyleName = 'Id keyword'
      BlockType = btTagDetect
      ConditionList = <
        item
          TagList.Strings = (
            'assert'
            'break'
            'case'
            'catch'
            'class'
            'const'
            'continue'
            'default'
            'do'
            'else'
            'enum'
            'extends'
            'finally'
            'for'
            'goto'
            'if'
            'implements'
            'import'
            'instanceof'
            'interface'
            'native'
            'new'
            'package'
            'record'
            'return'
            'strictfp'
            'super'
            'switch'
            'this'
            'throw'
            'throws'
            'transient'
            'try'
            'while')
          TokenTypes = 4
        end>
      HighlightPos = cpBound
      TokenType = 6
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Keywords new'
      StyleName = 'Id keyword'
      BlockType = btTagDetect
      ConditionList = <
        item
          TagList.Strings = (
            'exports'
            'module'
            'open'
            'opens'
            'permits'
            'provides'
            'requires'
            'transitive'
            'uses'
            'with'
            'yield')
          TokenTypes = 4
        end>
      HighlightPos = cpAny
      TokenType = 6
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Consts'
      StyleName = 'Id const'
      BlockType = btTagDetect
      ConditionList = <
        item
          TagList.Strings = (
            'false'
            'null'
            'true'
            'undefined')
          TokenTypes = 4
        end>
      HighlightPos = cpAny
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Types'
      StyleName = 'Id type'
      BlockType = btTagDetect
      ConditionList = <
        item
          TagList.Strings = (
            'array'
            'boolean'
            'byte'
            'char'
            'Date'
            'double'
            'Double'
            'float'
            'Float'
            'int'
            'Integer'
            'long'
            'Long'
            'short'
            'String'
            'void')
          TokenTypes = 4
        end>
      HighlightPos = cpAny
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Modifiers'
      StyleName = 'Id modifier'
      BlockType = btTagDetect
      ConditionList = <
        item
          TagList.Strings = (
            'abstract'
            'final'
            'private'
            'protected'
            'public'
            'sealed'
            'static'
            'synchronized'
            'volatile')
          TokenTypes = 4
        end>
      HighlightPos = cpAny
      TokenType = 7
      IgnoreAsParent = False
    end
    item
      DisplayName = '}'
      BlockType = btRangeEnd
      ConditionList = <
        item
          TagList.Strings = (
            '}')
          TokenTypes = 1024
        end>
      HighlightPos = cpBound
      IgnoreAsParent = False
    end
    item
      DisplayName = 'class'
      ConditionList = <
        item
          TagList.Strings = (
            '{')
          TokenTypes = 1024
        end
        item
          CondType = tcSkip
          TokenTypes = 6222
        end
        item
          TagList.Strings = (
            'class'
            'interface')
          TokenTypes = 64
        end>
      BlockEnd = '}'
      EndOfTextClose = True
      NameFmt = '%s0 %s-1'
      RefToCondEnd = True
      HighlightPos = cpBound
      CancelNextRules = True
      CollapseFmt = '%s0 %s-1 ...'
      TreeItemImage = 1
      IgnoreAsParent = False
    end
    item
      DisplayName = 'enum'
      ConditionList = <
        item
          TagList.Strings = (
            '{')
          TokenTypes = 1024
        end
        item
          CondType = tcSkip
          TokenTypes = 4110
        end
        item
          TokenTypes = 4
        end
        item
          TagList.Strings = (
            'enum')
          TokenTypes = 64
        end>
      BlockEnd = '}'
      EndOfTextClose = True
      NameFmt = 'enum %s-1'
      RefToCondEnd = True
      HighlightPos = cpAny
      CancelNextRules = True
      CollapseFmt = 'enum %s-1 ...'
      TreeItemImage = 3
      IgnoreAsParent = False
    end
    item
      DisplayName = 'func'
      ConditionList = <
        item
          TagList.Strings = (
            '{')
          TokenTypes = 1024
        end
        item
          CondType = tcSkip
          TokenTypes = 6270
        end
        item
          TagList.Strings = (
            ')')
          TokenTypes = 512
        end
        item
          CondType = tcSkip
          TokenTypes = 6206
        end
        item
          TagList.Strings = (
            '(')
          TokenTypes = 512
        end
        item
          TokenTypes = 4
        end
        item
          TokenTypes = 2180
        end>
      BlockEnd = '}'
      EndOfTextClose = True
      NameFmt = '%sz-1'
      RefToCondEnd = True
      HighlightPos = cpAny
      CancelNextRules = True
      CollapseFmt = '%sz-1'
      TreeItemImage = 5
      IgnoreAsParent = False
    end
    item
      DisplayName = '{'
      ConditionList = <
        item
          TagList.Strings = (
            '{')
          TokenTypes = 1024
        end>
      BlockEnd = '}'
      DisplayInTree = False
      HighlightPos = cpRange
      DynSelectMin = True
      CollapseFmt = '{ ... }'
      IgnoreAsParent = False
    end>
  CodeTemplates = <>
  SubAnalyzers = <>
  SampleText.Strings = (
    '/* Comment */'
    '/** Doc comment */'
    'import java.util.*;'
    ''
    '  b = e instanceof a?1__1:0b11110101; //int, binary'
    '  c = 0x.aap0f-0x.aP-1F; //hex+float numbers'
    '  d = 0x.aap0-0x.aP+1;  //hex+float numbers'
    ''
    'public List<String, int> test() {'
    '  return false + true;'
    '}'
    ''
    '@SupressWarnings("serial")'
    'non-sealed public class Ruler<T> extends Option<T> {'
    '  void f1() {'
    '  }'
    '  public void f2(TableModel model) {'
    '    super.setModel(model);'
    '  }'
    '  public static T f3() {'
    '  }'
    '}'
    ''
    'public class Sample {'
    '  public static void main(String[] args) {'
    '    long i = 0L + 0.5f / 2.0;'
    '    String s = "aa\"" + "bb" + '#39'\'#39#39' + '#39'\n'#39';'
    '    for (i=0; i<10; i++)'
    '      System.out.println("Hello world");'
    '  }'
    '}'
    '')
  TokenTypeNames.Strings = (
    'Unknown'
    'Comment'
    'Id'
    'Symbol'
    'String'
    'Number'
    'Keyword'
    'Modifier'
    'Annot'
    'Symbol ( )'
    'Symbol { }'
    'Symbol <>'
    'Symbol [ ]')
  Extentions = 'java jav'
  LexerName = 'Java'
  Notes.Strings = (
    'Reworked Java lexer by Alexey (CudaText)'
    '+ functions shown in tree '
    
      '  (not correct for funcs out of classes, for nested classes, but' +
      ' for most cases OK)'
    '+ annotations'
    '+ hex/dec/float numbers'
    '+ underscores in numbers')
  LineComment = '//'
  Charset = DEFAULT_CHARSET
end
