object SyntAnal30: 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 = '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 type'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clPurple
      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 = 'String'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clTeal
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
    end
    item
      DisplayName = 'String raw'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clOlive
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
    end
    item
      DisplayName = 'Id const'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clNavy
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
    end
    item
      DisplayName = 'Label'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = 4210816
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
    end
    item
      DisplayName = 'Id field'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clBlue
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
    end
    item
      DisplayName = 'Invalid'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clBlack
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
      BorderTypeBottom = blSolid
      BorderColorBottom = clRed
    end
    item
      DisplayName = 'Brackets {{}}'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clRed
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
    end
    item
      DisplayName = 'Var'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clGreen
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
    end>
  TokenRules = <
    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 = 'Id field'
      StyleName = 'Id field'
      BlockName = 'struct'
      TokenType = 8
      Expression = '^[\x20\x09]*[a-z_]\w*'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Label'
      StyleName = 'Label'
      TokenType = 7
      Expression = '^[\x20\x09]*[a-z_]\w*:(?!\=)'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Id'
      StyleName = 'Id'
      TokenType = 2
      Expression = '[a-z_]\w*'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Brackets {{ }}'
      StyleName = 'Brackets {{}}'
      TokenType = 9
      Expression = '"?\{\{ | \}\}"?'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'String'
      StyleName = 'String'
      TokenType = 4
      Expression = '("|'#39') (\\\1|\\\\|.)*? (\1|$)'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Float'
      StyleName = 'Number'
      TokenType = 5
      Expression = 
        '\d[\d_]*\.[\d_]* (e[\+\-]? [\d_]+)? i?\b |'#13#10'\d[\d_]* e[\+\-]? [\' +
        'd_]+ i?\b |'#13#10'\.[\d_]+ e[\+\-]? [\d_]+ i?\b |'#13#10'\.[\d_]+ i?\b |'#13#10'\' +
        'd[\d_]*\.\B'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Hex Float'
      StyleName = 'Number'
      TokenType = 5
      Expression = '0x[0-9a-f_]*(\.[0-9a-f_]*)? p[\+\-]? [0-9_]+ i?\b'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Hex'
      StyleName = 'Number'
      TokenType = 5
      Expression = '0x[\da-f_]+ i?\b |'#13#10'0o[0-7_]+ i?\b |'#13#10'0b[01_]+ i?\b'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Octal'
      StyleName = 'Number'
      TokenType = 5
      Expression = '\b0[0-7_]*i?\b'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Int'
      StyleName = 'Number'
      TokenType = 5
      Expression = '\b[1-9][\d_]*i?\b'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Invalid number'
      StyleName = 'Invalid'
      Expression = '\d+'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'String raw'
      StyleName = 'String raw'
      TokenType = 4
      Expression = '(?s)`.*?`'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Var'
      StyleName = 'Var'
      TokenType = 10
      Expression = '\$\w+'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Symbol {}'
      StyleName = 'Symbol'
      TokenType = 6
      Expression = '[\{\}]'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Symbol single'
      StyleName = 'Symbol'
      TokenType = 3
      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 = (
            'break'
            'case'
            'chan'
            'const'
            'continue'
            'default'
            'defer'
            'else'
            'fallthrough'
            'for'
            'func'
            'go'
            'goto'
            'if'
            'import'
            'interface'
            'map'
            'package'
            'range'
            'return'
            'select'
            'struct'
            'switch'
            'type'
            'var')
          TokenTypes = 4
        end>
      HighlightPos = cpBound
      IgnoreAsParent = False
    end
    item
      DisplayName = 'id types'
      StyleName = 'Id type'
      BlockType = btTagDetect
      ConditionList = <
        item
          TagList.Strings = (
            'Any'
            'bool'
            'byte'
            'complex128'
            'complex64'
            'float32'
            'float64'
            'int'
            'int16'
            'int32'
            'int64'
            'int8'
            'Iterator'
            'Pointer'
            'rune'
            'Stream'
            'string'
            'uint'
            'uint16'
            'uint32'
            'uint64'
            'uint8'
            'uintptr')
          TokenTypes = 4
        end>
      HighlightPos = cpAny
      IgnoreAsParent = False
    end
    item
      DisplayName = 'id const'
      StyleName = 'Id const'
      BlockType = btTagDetect
      ConditionList = <
        item
          TagList.Strings = (
            'false'
            'len'
            'nil'
            'true')
          TokenTypes = 4
        end>
      HighlightPos = cpAny
      IgnoreAsParent = False
    end
    item
      DisplayName = 'field in struct'
      BlockName = 'struct'
      ConditionList = <
        item
          TokenTypes = 256
        end>
      RefToCondEnd = True
      HighlightPos = cpAny
      CancelNextRules = True
      NoEndRule = True
      TreeItemImage = 5
      IgnoreAsParent = False
    end
    item
      DisplayName = 'func'
      BlockName = 'struct'
      NotParent = True
      ConditionList = <
        item
          TagList.Strings = (
            'func')
          TokenTypes = 4
        end>
      NameFmt = '%sz0'
      RefToCondEnd = True
      HighlightPos = cpAny
      CollapseFmt = '%sz0...'
      NoEndRule = True
      TreeItemImage = 5
      IgnoreAsParent = False
    end
    item
      DisplayName = 'struct'
      ConditionList = <
        item
          TagList.Strings = (
            '{')
          TokenTypes = 64
        end
        item
          CondType = tcSkip
          TokenTypes = 2
        end
        item
          TagList.Strings = (
            'interface'
            'struct')
          TokenTypes = 4
        end
        item
          CondType = tcSkip
          TokenTypes = 2
        end
        item
          TokenTypes = 4
        end>
      BlockEnd = '}'
      NameFmt = '%sz0'
      RefToCondEnd = True
      HighlightPos = cpAny
      CancelNextRules = True
      CollapseFmt = '%sz0'
      TreeItemImage = 2
      IgnoreAsParent = False
    end
    item
      DisplayName = '{'
      ConditionList = <
        item
          TagList.Strings = (
            '{')
          TokenTypes = 64
        end>
      BlockEnd = '}'
      DisplayInTree = False
      HighlightPos = cpRange
      DrawStaple = True
      CollapseFmt = '{ ... }'
      IgnoreAsParent = False
      AutoCloseMode = acmCloseNearest
      AutoCloseText = '}'
    end
    item
      DisplayName = '}'
      BlockType = btRangeEnd
      ConditionList = <
        item
          TagList.Strings = (
            '}')
          TokenTypes = 64
        end>
      BlockEnd = '{'
      HighlightPos = cpBound
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Block comment'
      BlockName = 'Block comment'
      NotParent = True
      AlwaysEnabled = True
      ConditionList = <
        item
          TokenTypes = 2
        end>
      BlockEnd = 'Block comment end'
      DisplayInTree = False
      HighlightPos = cpBound
      CollapseFmt = '{ ... }'
      GrammaRuleName = 'comments'
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Block comment end'
      BlockName = 'Block comment'
      BlockType = btRangeEnd
      ConditionList = <
        item
          CondType = tcNotEqual
          TokenTypes = 2
          IgnoreCase = True
        end>
      BlockOffset = 1
      HighlightPos = cpBound
      IgnoreAsParent = False
    end>
  CodeTemplates = <>
  SubAnalyzers = <>
  SampleText.Strings = (
    '// cmt'
    '// cmt2'
    '    0; 123456789; -0; -123456789; 1777_000_000;'
    '    00; 01234567; -01234567; 0_0; 012_45;'
    '    08; 09; //invalid octals'
    '    0o660; 0O061; -0o02; 0o_660; 0O0_6_1;'
    '    0x0; 0x0123456789ABCDEFabcdef; -0x0123456789ABCDEFabcdef;'
    '    0x_0; 0x012_3456_7_8_9ABCDEFabcd_ef;'
    '    0b1011; 0B00001; -0b1; 0b_1; 0B1_0;'
    '    000.000; 123.456; .0; 1.;'
    '    0_1.0_1; 1_23.4_6;'
    '    -000.000; -123.456; -.0; -1. -1.. ;'
    '    0e+0; 0E+0; 0.0e+0; 0.0E+0; 123.456e+789;'
    '    1_2e+0; 1E+0_1; 0.1_2e2; 1_23.4_56e+78_9;'
    '    0e-0; 0E-0; 0.0e-0; 0.0E-0; 123.456e-789;'
    '    0.e+0; .0e+0; 0.e-0; .0e-0;'
    '    0x1p-2; 0X1P+2; 0x1p2;'
    '    0x_1p-2; 0X1_1P+2; 0x_1p2_1;'
    '    0x1.0P-1021; 0X1.0p-1021;'
    '    0x_1_1.0_7P-1_021;'
    '    0x2.p10; 0x1.Fp+0; 0X.8p-0;'
    '    000i; 100i; -100i; 1_1i;'
    '    123.456i; -123.456i; 1_23.45_6i;'
    
      '    1e+2i; 1e-2i; 1.2e+3i; 1.2e-3i; 1E+2i; 1E-2i; 1.2E+3i; 1.2E-' +
      '3i;'
    '    1_1e+2_1i; 1.2_1E-3_5i;'
    '    0o6i; 0O35i; 0o_6i; 0O3_5i;'
    '    0x0i; 0x0123456789ABCDEFabcdefi; 0x_012_CD_Efi;'
    '    0b1011i; 0B00001i; 0b_1011i; 0B000_01i;'
    '    0x1p-2i; 0x1.0P-1021i; 0x1.Fp+0i;'
    '    0x_1p-2i; 0x1_4.0_5P-102_1i;'
    '                '
    'template = "{{block "name" pipeline}} T1 {{end}}"'
    ''
    'func NewChain(prefixLen int) *Chain {'
    '  Label:'
    #9'return `mul'
    '    string`'
    '}'
    ''
    'func (c *Chain) Generate(n int) string {'
    #9'var words []string'
    #9'for i := 0; i < n; i++ {'
    #9'}'
    #9'return "Text\"end" + '#39'Test'#39
    '}'
    ''
    'type MyContainer /*..*/ struct {'
    '  name1 func(arg string)'
    '  name2 func(arg interface{})'
    '  name3 package.MyType `tag1:""`'
    '  name4 interface{} `tag1:""`'
    '  name5 map[string]int `t`'
    '}')
  TokenTypeNames.Strings = (
    'Unknown'
    'Comment'
    'Id'
    'Symbol'
    'String'
    'Number'
    'Symbol {}'
    'Label'
    'Id field'
    'Brackets {{ }}'
    'Var')
  Extentions = 'go'
  LexerName = 'Go'
  SkipSpaces = False
  Notes.Strings = (
    'Alexey (CudaText)')
  LineComment = '//'
  Charset = DEFAULT_CHARSET
end
