object SyntAnal3: TLibSyntAnalyzer
  Formats = <
    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 operators'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clNavy
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
    end
    item
      DisplayName = 'Number'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clNavy
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = [fsBold]
    end
    item
      DisplayName = 'Label'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clOlive
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
    end
    item
      DisplayName = 'String'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clTeal
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
    end
    item
      DisplayName = 'Symbol'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clMaroon
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = [fsBold]
    end
    item
      DisplayName = 'Id registers'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clBlue
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
    end
    item
      DisplayName = 'Id directives'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clPurple
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
    end
    item
      DisplayName = 'Id vars'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clGreen
      Font.Height = -13
      Font.Name = 'Courier New'
      Font.Style = []
    end>
  TokenRules = <
    item
      DisplayName = 'Comment /*-*/'
      StyleName = 'Comment'
      TokenType = 1
      Expression = '(?s)/\*.*?(\*/|\Z)'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Comment //'
      StyleName = 'Comment'
      TokenType = 1
      Expression = '//.*'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Comment #|;'
      StyleName = 'Comment'
      TokenType = 1
      Expression = '[;|\#].*'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Segment'
      StyleName = 'Id directives'
      TokenType = 6
      Expression = '\bsegment\b'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Label in tree'
      StyleName = 'Label'
      Expression = '^[\x20\x09]* [a-z_\.][\w\.]*:'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Label'
      StyleName = 'Label'
      TokenType = 2
      Expression = '@{1,2}\w+ | @@:'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Hex'
      StyleName = 'Number'
      TokenType = 5
      Expression = '[\da-f]+h \b | [01]+b \b'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Integer'
      StyleName = 'Number'
      TokenType = 5
      Expression = '\d+d?\b'
      ColumnFrom = 0
      ColumnTo = 0
    end
    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') .*? \1'
      ColumnFrom = 0
      ColumnTo = 0
    end
    item
      DisplayName = 'Symbol'
      StyleName = 'Symbol'
      TokenType = 3
      Expression = '[\.,:\-\+\*\\/%@<>\(\)\[\]\{\}\?]'
      ColumnFrom = 0
      ColumnTo = 0
    end>
  BlockRules = <
    item
      DisplayName = 'Id registers'
      StyleName = 'Id registers'
      BlockType = btTagDetect
      ConditionList = <
        item
          TagList.Strings = (
            'ah'
            'al'
            'ax'
            'bh'
            'bl'
            'bp'
            'bx'
            'ch'
            'cl'
            'cs'
            'cx'
            'dh'
            'di'
            'ds'
            'dx'
            'eax'
            'ebp'
            'ebx'
            'ecx'
            'edi'
            'edx'
            'eip'
            'es'
            'esc'
            'esi'
            'esp'
            'fs'
            'gs'
            'r10'
            'r11'
            'r12'
            'r13'
            'r14'
            'r15'
            'r8'
            'r9'
            'rax'
            'rbp'
            'rbx'
            'rcx'
            'rdi'
            'rdx'
            'rsi'
            'rsp'
            'si'
            'sp'
            'ss')
          TokenTypes = 4
          IgnoreCase = True
        end>
      HighlightPos = cpBound
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Id operators'
      StyleName = 'Id operators'
      BlockType = btTagDetect
      ConditionList = <
        item
          TagList.Strings = (
            'aaa'
            'aad'
            'aam'
            'aas'
            'adc'
            'add'
            'and'
            'arpl'
            'bsf'
            'bsr'
            'bswap'
            'bt'
            'btc'
            'btr'
            'bts'
            'call'
            'cbw'
            'cdq'
            'clc'
            'cld'
            'cli'
            'clts'
            'cmc'
            'cmp'
            'cmps'
            'cmpsb'
            'cmpsd'
            'cmpsw'
            'cmpxchg'
            'cwd'
            'cwde'
            'daa'
            'das'
            'dec'
            'div'
            'eq'
            'equ'
            'f2xm1'
            'fabs'
            'fadd'
            'faddp'
            'far'
            'fbld'
            'fbstp'
            'fchs'
            'fclex'
            'fcom'
            'fcomp'
            'fcompp'
            'fcos'
            'fdecstp'
            'fdisi'
            'fdiv'
            'fdivp'
            'fdivr'
            'fdivrp'
            'feni'
            'ffree'
            'fiadd'
            'ficom'
            'ficomp'
            'fidiv'
            'fidivr'
            'fild'
            'fimul'
            'fincstp'
            'finit'
            'fist'
            'fistp'
            'fisub'
            'fisubr'
            'fld'
            'fld1'
            'fldcw'
            'fldenv'
            'fldl2e'
            'fldl2t'
            'fldlg2'
            'fldln2'
            'fldpi'
            'fldz'
            'fmul'
            'fmulp'
            'fnclex'
            'fndisi'
            'fneni'
            'fninit'
            'fnop'
            'fnsave'
            'fnstcw'
            'fnstenv'
            'fnstsw'
            'fpatan'
            'fprem'
            'fprem1'
            'fptan'
            'frndint'
            'frstor'
            'fs'
            'fsave'
            'fscale'
            'fsetpm'
            'fsin'
            'fsincos'
            'fsqrt'
            'fst'
            'fstcw'
            'fstenv'
            'fstp'
            'fstsw'
            'fsub'
            'fsubp'
            'fsubr'
            'fsubrp'
            'ftst'
            'fucom'
            'fucomp'
            'fucompp'
            'func'
            'fwait'
            'fxam'
            'fxch'
            'fxtract'
            'fyl2x'
            'fyl2xp1'
            'ge'
            'gs'
            'gt'
            'hlt'
            'idiv'
            'imul'
            'in'
            'inc'
            'insb'
            'insd'
            'insw'
            'int'
            'into'
            'invd'
            'invlpg'
            'iret'
            'iretd'
            'ja'
            'jae'
            'jb'
            'jbe'
            'jc'
            'jcxz'
            'je'
            'jecxz'
            'jg'
            'jge'
            'jl'
            'jle'
            'jmp'
            'jna'
            'jnae'
            'jnb'
            'jnbe'
            'jnc'
            'jne'
            'jng'
            'jnge'
            'jnl'
            'jnle'
            'jno'
            'jnp'
            'jns'
            'jnz'
            'jo'
            'jp'
            'jpe'
            'jpo'
            'js'
            'jz'
            'lahf'
            'lar'
            'lds'
            'le'
            'lea'
            'leave'
            'length'
            'les'
            'lfs'
            'lgdt'
            'lgs'
            'lidt'
            'lldt'
            'lmsw'
            'lock'
            'lods'
            'lodsb'
            'lodsd'
            'lodsw'
            'loop'
            'loopd'
            'loopde'
            'loopdne'
            'loopdnz'
            'loopdz'
            'loope'
            'loopne'
            'loopnz'
            'loopz'
            'lsl'
            'lss'
            'lt'
            'ltr'
            'mod'
            'mov'
            'movs'
            'movsb'
            'movsd'
            'movsw'
            'movsx'
            'movzx'
            'mul'
            'neg'
            'nop'
            'not'
            'or'
            'org'
            'out'
            'outsb'
            'outsd'
            'outsw'
            'pop'
            'popa'
            'popad'
            'popf'
            'popfd'
            'push'
            'pusha'
            'pushad'
            'pushf'
            'pushfd'
            'rcl'
            'rcr'
            'rep'
            'repe'
            'repne'
            'repnz'
            'rept'
            'repz'
            'ret'
            'retf'
            'retn'
            'rol'
            'ror'
            'sahf'
            'sal'
            'sar'
            'sbb'
            'scas'
            'scasb'
            'scasd'
            'scasw'
            'set'
            'seta'
            'setae'
            'setb'
            'setbe'
            'setc'
            'sete'
            'setg'
            'setge'
            'setl'
            'setle'
            'setna'
            'setnae'
            'setnb'
            'setnbe'
            'setnc'
            'setne'
            'setng'
            'setnge'
            'setnl'
            'setnle'
            'setno'
            'setnp'
            'setns'
            'setnz'
            'seto'
            'setp'
            'setpe'
            'setpo'
            'sets'
            'setz'
            'sgdt'
            'shl'
            'shld'
            'shr'
            'shrd'
            'sidt'
            'size'
            'sldt'
            'smsw'
            'st'
            'stc'
            'std'
            'sti'
            'stos'
            'stosb'
            'stosd'
            'stosw'
            'sub'
            'subttl'
            'symtype'
            'syscall'
            'tbyte'
            'test'
            'verr'
            'verw'
            'wait'
            'wbinvd'
            'width'
            'word'
            'xadd'
            'xchg'
            'xlat'
            'xor'
            'zero')
          TokenTypes = 4
          IgnoreCase = True
        end>
      HighlightPos = cpBound
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Id special'
      StyleName = 'Id directives'
      BlockType = btTagDetect
      ConditionList = <
        item
          TagList.Strings = (
            'align'
            'ascii'
            'asciz'
            'assume'
            'bound'
            'byte'
            'comment'
            'dword'
            'end'
            'endm'
            'endp'
            'ends'
            'enter'
            'exitm'
            'extern'
            'extrn'
            'global'
            'globl'
            'group'
            'high'
            'include'
            'label'
            'large'
            'local'
            'low'
            'macro'
            'mask'
            'name'
            'near'
            'offset'
            'page'
            'proc'
            'ptr'
            'public'
            'purge'
            'qword'
            'record'
            'section'
            'seg'
            'segcs'
            'segds'
            'seges'
            'segfs'
            'seggs'
            'segss'
            'short'
            'small'
            'space'
            'str'
            'string'
            'struc'
            'this'
            'title'
            'type'
            'word')
          TokenTypes = 4
          IgnoreCase = True
        end>
      HighlightPos = cpAny
      IgnoreAsParent = False
    end
    item
      DisplayName = 'Id types'
      StyleName = 'Id vars'
      BlockType = btTagDetect
      ConditionList = <
        item
          TagList.Strings = (
            'db'
            'dd'
            'dl'
            'dq'
            'dt'
            'dw')
          TokenTypes = 4
          IgnoreCase = True
        end>
      HighlightPos = cpAny
      IgnoreAsParent = False
    end
    item
      DisplayName = 'seg'
      ConditionList = <
        item
          TokenTypes = 64
        end>
      BlockEnd = 'seg end'
      EndOfTextClose = True
      NameFmt = '%sz0'
      RefToCondEnd = True
      HighlightPos = cpAny
      CollapseFmt = '%sz0'
      SelfClose = True
      IgnoreAsParent = False
    end
    item
      DisplayName = 'seg end'
      BlockType = btRangeEnd
      ConditionList = <
        item
          TagList.Strings = (
            'ends')
          TokenTypes = 4
          IgnoreCase = True
        end>
      HighlightPos = cpAny
      IgnoreAsParent = False
    end
    item
      DisplayName = 'proc'
      ConditionList = <
        item
          TagList.Strings = (
            'proc')
          TokenTypes = 4
          IgnoreCase = True
        end
        item
          TokenTypes = 4
        end>
      BlockEnd = 'proc end'
      NameFmt = 'proc %s0'
      RefToCondEnd = True
      HighlightPos = cpAny
      IgnoreAsParent = False
    end
    item
      DisplayName = 'proc end'
      BlockType = btRangeEnd
      ConditionList = <
        item
          TagList.Strings = (
            'endp')
          TokenTypes = 4
          IgnoreCase = True
        end>
      HighlightPos = cpAny
      IgnoreAsParent = False
    end
    item
      DisplayName = 'macro'
      ConditionList = <
        item
          TagList.Strings = (
            'macro')
          TokenTypes = 4
          IgnoreCase = True
        end
        item
          TokenTypes = 4
        end>
      BlockEnd = 'macro end'
      NameFmt = 'macro %s0'
      RefToCondEnd = True
      HighlightPos = cpAny
      IgnoreAsParent = False
    end
    item
      DisplayName = 'macro end'
      BlockType = btRangeEnd
      ConditionList = <
        item
          TagList.Strings = (
            'endm')
          TokenTypes = 4
          IgnoreCase = True
        end>
      HighlightPos = cpAny
      IgnoreAsParent = False
    end
    item
      DisplayName = 'label'
      ConditionList = <
        item
          TokenTypes = 1
        end>
      HighlightPos = cpAny
      NoEndRule = True
      IgnoreAsParent = False
    end>
  CodeTemplates = <>
  SubAnalyzers = <>
  SampleText.Strings = (
    '; x86 assembly sample source'
    '# Another comment'
    '// Comment'
    '/* Comment'
    ' */'
    'CODE SEGMENT  BYTE PUBLIC '
    '    ASSUME'#9'CS:CODE'
    '    MOV AX, AABBh+20d+1010b+'
    '    MOV'#9'BYTE PTR ES:[DI], 255'
    '    JMP SHORT @AsmEnd'
    ''
    '  welcomeMsg DB '#39'Hello World'#39', 0'
    '   '
    '  labela:'
    '    _label.b:'
    '    @@:'
    '    @@name'
    '    @AsmEnd:'
    '    MOV AX, 0'
    '    RET      '
    '    '
    ''
    '  SEGMENT readable writable ; no-named segment'
    '    msg db '#39'Test'#39' '
    '    ends'
    '    '
    'test1 PROC NEAR'
    '      MOV ax,10'
    '      CALL test2'
    '      RET'
    'test1 ENDP'
    ''
    'test2 PROC FAR'
    '      ADD ax,ax'
    '      RET'
    'test2 ENDP'
    ''
    'CODE ENDS'
    '  '
    'PUSHALL MACRO'
    '       PUSH ES DI'
    #9'ENDM'
    '    '
    'END')
  TokenTypeNames.Strings = (
    'Label'
    'Comment'
    'Id'
    'Symbol'
    'String'
    'Number'
    'Segment')
  Extentions = 'asm'
  LexerName = 'Assembly'
  SkipSpaces = False
  Notes.Strings = (
    'Original from EControl, heavily rewritten by Alexey (CudaText)')
  LineComment = ';'
  Charset = DEFAULT_CHARSET
end
