Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/third_party/python/pygments/pygments/lexers/   (Fast Lexical Analyzer Version 2.6©)  Datei vom 10.2.2025 mit Größe 19 kB image not shown  

Quelle  factor.py   Sprache: Python

 
"""
    pygments.lexers.factor
    ~~~~~~~~~~~~~~~~~~~~~~

    Lexers for the Factor language.

    :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
"""

from pygments.lexer import RegexLexer, bygroups, default, words
from pygments.token import Text, Comment, Keyword, Name, String, Number, \
    Whitespace, Punctuation

__all__ = ['FactorLexer']


class FactorLexer(RegexLexer):
    """
    Lexer for the Factor language.
    """
    name = 'Factor'
    url = 'http://factorcode.org'
    aliases = ['factor']
    filenames = ['*.factor']
    mimetypes = ['text/x-factor']
    version_added = '1.4'

    builtin_kernel = words((
        '-rot''2bi''2bi@''2bi*''2curry''2dip''2drop''2dup''2keep''2nip',
        '2over''2tri''2tri@''2tri*''3bi''3curry''3dip''3drop''3dup''3keep',
        '3tri''4dip''4drop''4dup''4keep''''=''>boolean''clone',
        '?''?execute''?if''and''assert''assert=''assert?''bi''bi-curry',
        'bi-curry@''bi-curry*''bi@''bi*''boa''boolean''boolean?''both?',
        'build''call''callstack''callstack>array''callstack?''clear''(clone)',
        'compose''compose?''curry''curry?''datastack''die''dip''do''drop',
        'dup''dupd''either?''eq?''equal?''execute''hashcode''hashcode*',
        'identity-hashcode''identity-tuple''identity-tuple?''if''if*',
        'keep''loop''most''new''nip''not''null''object''or''over',
        'pick''prepose''retainstack''rot''same?''swap''swapd''throw',
        'tri''tri-curry''tri-curry@''tri-curry*''tri@''tri*''tuple',
        'tuple?''unless''unless*''until''when''when*''while''with',
        'wrapper''wrapper?''xor'), suffix=r'(\s+)')

    builtin_assocs = words((
        '2cache''''>alist''?at''?of''assoc''assoc-all?',
        'assoc-any?''assoc-clone-like''assoc-combine''assoc-diff',
        'assoc-diff!''assoc-differ''assoc-each''assoc-empty?',
        'assoc-filter''assoc-filter!''assoc-filter-as''assoc-find',
        'assoc-hashcode''assoc-intersect''assoc-like''assoc-map',
        'assoc-map-as''assoc-partition''assoc-refine''assoc-size',
        'assoc-stack''assoc-subset?''assoc-union''assoc-union!',
        'assoc=''assoc>map''assoc?''at''at+''at*''cache''change-at',
        'clear-assoc''delete-at''delete-at*''enum''enum?''extract-keys',
        'inc-at''key?''keys''map>assoc''maybe-set-at''new-assoc''of',
        'push-at''rename-at''set-at''sift-keys''sift-values''substitute',
        'unzip''value-at''value-at*''value?''values''zip'), suffix=r'(\s+)')

    builtin_combinators = words((
        '2cleave''2cleave>quot''3cleave''3cleave>quot''4cleave',
        '4cleave>quot''alist>quot''call-effect''case''case-find',
        'case>quot''cleave''cleave>quot''cond''cond>quot''deep-spread>quot',
        'execute-effect''linear-case-quot''no-case''no-case?''no-cond',
        'no-cond?''recursive-hashcode''shallow-spread>quot''spread',
        'to-fixed-point''wrong-values''wrong-values?'), suffix=r'(\s+)')

    builtin_math = words((
        '-''/''/f''/i''/mod''2/''2^''<''<=''''>',
        '>=''>bignum''>fixnum''>float''>integer''(all-integers?)',
        '(each-integer)''(find-integer)''*''+''?1+',
        'abs''align''all-integers?''bignum''bignum?''bit?''bitand',
        'bitnot''bitor''bits>double''bits>float''bitxor''complex',
        'complex?''denominator''double>bits''each-integer''even?',
        'find-integer''find-last-integer''fixnum''fixnum?''float',
        'float>bits''float?''fp-bitwise=''fp-infinity?''fp-nan-payload',
        'fp-nan?''fp-qnan?''fp-sign''fp-snan?''fp-special?',
        'if-zero''imaginary-part''integer''integer>fixnum',
        'integer>fixnum-strict''integer?''log2''log2-expects-positive',
        'log2-expects-positive?''mod''neg''neg?''next-float',
        'next-power-of-2''number''number=''number?''numerator''odd?',
        'out-of-fixnum-range''out-of-fixnum-range?''power-of-2?',
        'prev-float''ratio''ratio?''rational''rational?''real',
        'real-part''real?''recip''rem''sgn''shift''sq''times',
        'u<''u<=''u>''u>=''unless-zero''unordered?''when-zero',
        'zero?'), suffix=r'(\s+)')

    builtin_sequences = words((
        '1sequence''2all?''2each''2map''2map-as''2map-reduce''2reduce',
        '2selector''2sequence''3append''3append-as''3each''3map''3map-as',
        '3sequence''4sequence''''''''?first',
        '?last''?nth''?second''?set-nth''accumulate''accumulate!',
        'accumulate-as''all?''any?''append''append!''append-as',
        'assert-sequence''assert-sequence=''assert-sequence?',
        'binary-reduce''bounds-check''bounds-check?''bounds-error',
        'bounds-error?''but-last''but-last-slice''cartesian-each',
        'cartesian-map''cartesian-product''change-nth''check-slice',
        'check-slice-error''clone-like''collapse-slice''collector',
        'collector-for''concat''concat-as''copy''count''cut''cut-slice',
        'cut*''delete-all''delete-slice''drop-prefix''each''each-from',
        'each-index''empty?''exchange''filter''filter!''filter-as''find',
        'find-from''find-index''find-index-from''find-last''find-last-from',
        'first''first2''first3''first4''flip''follow''fourth''glue''halves',
        'harvest''head''head-slice''head-slice*''head*''head?',
        'if-empty''immutable''immutable-sequence''immutable-sequence?',
        'immutable?''index''index-from''indices''infimum''infimum-by',
        'insert-nth''interleave''iota''iota-tuple''iota-tuple?''join',
        'join-as''last''last-index''last-index-from''length''lengthen',
        'like''longer''longer?''longest''map''map!''map-as''map-find',
        'map-find-last''map-index''map-integers''map-reduce''map-sum',
        'max-length''member-eq?''member?''midpoint@''min-length',
        'mismatch''move''new-like''new-resizable''new-sequence',
        'non-negative-integer-expected''non-negative-integer-expected?',
        'nth''nths''pad-head''pad-tail''padding''partition''pop''pop*',
        'prefix''prepend''prepend-as''produce''produce-as''product''push',
        'push-all''push-either''push-if''reduce''reduce-index''remove',
        'remove!''remove-eq''remove-eq!''remove-nth''remove-nth!''repetition',
        'repetition?''replace-slice''replicate''replicate-as''rest',
        'rest-slice''reverse''reverse!''reversed''reversed?''second',
        'selector''selector-for''sequence''sequence-hashcode''sequence=',
        'sequence?''set-first''set-fourth''set-last''set-length''set-nth',
        'set-second''set-third''short''shorten''shorter''shorter?',
        'shortest''sift''slice''slice-error''slice-error?''slice?',
        'snip''snip-slice''start''start*''subseq''subseq?''suffix',
        'suffix!''sum''sum-lengths''supremum''supremum-by''surround''tail',
        'tail-slice''tail-slice*''tail*''tail?''third''trim',
        'trim-head''trim-head-slice''trim-slice''trim-tail''trim-tail-slice',
        'unclip''unclip-last''unclip-last-slice''unclip-slice''unless-empty',
        'virtual-exemplar''virtual-sequence''virtual-sequence?''virtual@',
        'when-empty'), suffix=r'(\s+)')

    builtin_namespaces = words((
        '+@''change''change-global''counter''dec''get''get-global',
        'global''inc''init-namespaces''initialize''is-global''make-assoc',
        'namespace''namestack''off''on''set''set-global''set-namestack',
        'toggle''with-global''with-scope''with-variable''with-variables'),
        suffix=r'(\s+)')

    builtin_arrays = words((
        '1array''2array''3array''4array''''>array''array',
        'array?''pair''pair?''resize-array'), suffix=r'(\s+)')

    builtin_io = words((
        '(each-stream-block-slice)''(each-stream-block)',
        '(stream-contents-by-block)''(stream-contents-by-element)',
        '(stream-contents-by-length-or-block)',
        '(stream-contents-by-length)''+byte+''+character+',
        'bad-seek-type''bad-seek-type?''bl''contents''each-block',
        'each-block-size''each-block-slice''each-line''each-morsel',
        'each-stream-block''each-stream-block-slice''each-stream-line',
        'error-stream''flush''input-stream''input-stream?',
        'invalid-read-buffer''invalid-read-buffer?''lines''nl',
        'output-stream''output-stream?''print''read''read-into',
        'read-partial''read-partial-into''read-until''read1''readln',
        'seek-absolute''seek-absolute?''seek-end''seek-end?',
        'seek-input''seek-output''seek-relative''seek-relative?',
        'stream-bl''stream-contents''stream-contents*''stream-copy',
        'stream-copy*''stream-element-type''stream-flush',
        'stream-length''stream-lines''stream-nl''stream-print',
        'stream-read''stream-read-into''stream-read-partial',
        'stream-read-partial-into''stream-read-partial-unsafe',
        'stream-read-unsafe''stream-read-until''stream-read1',
        'stream-readln''stream-seek''stream-seekable?''stream-tell',
        'stream-write''stream-write1''tell-input''tell-output',
        'with-error-stream''with-error-stream*''with-error>output',
        'with-input-output+error-streams',
        'with-input-output+error-streams*''with-input-stream',
        'with-input-stream*''with-output-stream''with-output-stream*',
        'with-output>error''with-output+error-stream',
        'with-output+error-stream*''with-streams''with-streams*',
        'write''write1'), suffix=r'(\s+)')

    builtin_strings = words((
        '1string''''>string''resize-string''string',
        'string?'), suffix=r'(\s+)')

    builtin_vectors = words((
        '1vector''''>vector''?push''vector''vector?'),
        suffix=r'(\s+)')

    builtin_continuations = words((
        '''''''attempt-all',
        'attempt-all-error''attempt-all-error?''callback-error-hook',
        'callcc0''callcc1''cleanup''compute-restarts''condition',
        'condition?''continuation''continuation?''continue',
        'continue-restart''continue-with''current-continuation',
        'error''error-continuation''error-in-thread''error-thread',
        'ifcc''ignore-errors''in-callback?''original-error''recover',
        'restart''restart?''restarts''rethrow''rethrow-restarts',
        'return''return-continuation''thread-error-hook''throw-continue',
        'throw-restarts''with-datastack''with-return'), suffix=r'(\s+)')

    tokens = {
        'root': [
            # factor allows a file to start with a shebang
            (r'#!.*$', Comment.Preproc),
            default('base'),
        ],
        'base': [
            (r'\s+', Whitespace),

            # defining words
            (r'((?:MACRO|MEMO|TYPED)?:[:]?)(\s+)(\S+)',
             bygroups(Keyword, Whitespace, Name.Function)),
            (r'(M:[:]?)(\s+)(\S+)(\s+)(\S+)',
             bygroups(Keyword, Whitespace, Name.Class, Whitespace,
                 Name.Function)),
            (r'(C:)(\s+)(\S+)(\s+)(\S+)',
             bygroups(Keyword, Whitespace, Name.Function, Whitespace,
                 Name.Class)),
            (r'(GENERIC:)(\s+)(\S+)',
             bygroups(Keyword, Whitespace, Name.Function)),
            (r'(HOOK:|GENERIC#)(\s+)(\S+)(\s+)(\S+)',
             bygroups(Keyword, Whitespace, Name.Function, Whitespace,
                 Name.Function)),
            (r'(\()(\s)', bygroups(Name.Function, Whitespace), 'stackeffect'),
            (r'(;)(\s)', bygroups(Keyword, Whitespace)),

            # imports and namespaces
            (r'(USING:)(\s+)',
             bygroups(Keyword.Namespace, Whitespace), 'vocabs'),
            (r'(USE:|UNUSE:|IN:|QUALIFIED:)(\s+)(\S+)',
             bygroups(Keyword.Namespace, Whitespace, Name.Namespace)),
            (r'(QUALIFIED-WITH:)(\s+)(\S+)(\s+)(\S+)',
             bygroups(Keyword.Namespace, Whitespace, Name.Namespace,
                 Whitespace, Name.Namespace)),
            (r'(FROM:|EXCLUDE:)(\s+)(\S+)(\s+=>\s)',
             bygroups(Keyword.Namespace, Whitespace, Name.Namespace,
                 Whitespace), 'words'),
            (r'(RENAME:)(\s+)(\S+)(\s+)(\S+)(\s+)(=>)(\s+)(\S+)',
             bygroups(Keyword.Namespace, Whitespace, Name.Function, Whitespace,
                 Name.Namespace, Whitespace, Punctuation, Whitespace,
                 Name.Function)),
            (r'(ALIAS:|TYPEDEF:)(\s+)(\S+)(\s+)(\S+)',
             bygroups(Keyword.Namespace, Whitespace, Name.Function, Whitespace,
                 Name.Function)),
            (r'(DEFER:|FORGET:|POSTPONE:)(\s+)(\S+)',
             bygroups(Keyword.Namespace, Whitespace, Name.Function)),

            # tuples and classes
            (r'(TUPLE:|ERROR:)(\s+)(\S+)(\s+)(<)(\s+)(\S+)',
             bygroups(Keyword, Whitespace, Name.Class, Whitespace, Punctuation,
                 Whitespace, Name.Class), 'slots'),
            (r'(TUPLE:|ERROR:|BUILTIN:)(\s+)(\S+)',
             bygroups(Keyword, Whitespace, Name.Class), 'slots'),
            (r'(MIXIN:|UNION:|INTERSECTION:)(\s+)(\S+)',
             bygroups(Keyword, Whitespace, Name.Class)),
            (r'(PREDICATE:)(\s+)(\S+)(\s+)(<)(\s+)(\S+)',
             bygroups(Keyword, Whitespace, Name.Class, Whitespace,
                 Punctuation, Whitespace, Name.Class)),
            (r'(C:)(\s+)(\S+)(\s+)(\S+)',
             bygroups(Keyword, Whitespace, Name.Function, Whitespace, Name.Class)),
            (r'(INSTANCE:)(\s+)(\S+)(\s+)(\S+)',
             bygroups(Keyword, Whitespace, Name.Class, Whitespace, Name.Class)),
            (r'(SLOT:)(\s+)(\S+)', bygroups(Keyword, Whitespace, Name.Function)),
            (r'(SINGLETON:)(\s+)(\S+)', bygroups(Keyword, Whitespace, Name.Class)),
            (r'SINGLETONS:', Keyword, 'classes'),

            # other syntax
            (r'(CONSTANT:|SYMBOL:|MAIN:|HELP:)(\s+)(\S+)',
             bygroups(Keyword, Whitespace, Name.Function)),
            (r'(SYMBOLS:)(\s+)', bygroups(Keyword, Whitespace), 'words'),
            (r'(SYNTAX:)(\s+)', bygroups(Keyword, Whitespace)),
            (r'(ALIEN:)(\s+)', bygroups(Keyword, Whitespace)),
            (r'(STRUCT:)(\s+)(\S+)', bygroups(Keyword, Whitespace, Name.Class)),
            (r'(FUNCTION:)(\s+)'
                r'(\S+)(\s+)(\S+)(\s+)'
                r'(\()(\s+)([^)]+)(\))(\s)',
             bygroups(Keyword.Namespace, Whitespace,
                 Text, Whitespace, Name.Function, Whitespace,
                 Punctuation, Whitespace, Text, Punctuation, Whitespace)),
            (r'(FUNCTION-ALIAS:)(\s+)'
                r'(\S+)(\s+)(\S+)(\s+)'
                r'(\S+)(\s+)'
                r'(\()(\s+)([^)]+)(\))(\s)',
             bygroups(Keyword.Namespace, Whitespace,
                 Text, Whitespace, Name.Function, Whitespace,
                 Name.Function, Whitespace,
                 Punctuation, Whitespace, Text, Punctuation, Whitespace)),

            # vocab.private
            (r'()(\s)', bygroups(Keyword.Namespace, Whitespace)),

            # strings
            (r'"""\s(?:.|\n)*?\s"""', String),
            (r'"(?:\\\\|\\"|[^"])*"', String),
            (r'(\S+")(\s+)((?:\\\\|\\"|[^"])*")',
                bygroups(String, Whitespace, String)),
            (r'(CHAR:)(\s+)(\\[\\abfnrstv]|[^\\]\S*)(\s)',
                bygroups(String.Char, Whitespace, String.Char, Whitespace)),

            # comments
            (r'!\s+.*$', Comment),
            (r'#!\s+.*$', Comment),
            (r'/\*\s+(?:.|\n)*?\s\*/', Comment),

            # boolean constants
            (r'[tf]\b', Name.Constant),

            # symbols and literals
            (r'[\\$]\s+\S+', Name.Constant),
            (r'M\\\s+\S+\s+\S+', Name.Constant),

            # numbers
            (r'[+-]?(?:[\d,]*\d)?\.(?:\d([\d,]*\d)?)?(?:[eE][+-]?\d+)?\s', Number),
            (r'[+-]?\d(?:[\d,]*\d)?(?:[eE][+-]?\d+)?\s', Number),
            (r'0x[a-fA-F\d](?:[a-fA-F\d,]*[a-fA-F\d])?(?:p\d([\d,]*\d)?)?\s', Number),
            (r'NAN:\s+[a-fA-F\d](?:[a-fA-F\d,]*[a-fA-F\d])?(?:p\d([\d,]*\d)?)?\s', Number),
            (r'0b[01]+\s', Number.Bin),
            (r'0o[0-7]+\s', Number.Oct),
            (r'(?:\d([\d,]*\d)?)?\+\d(?:[\d,]*\d)?/\d(?:[\d,]*\d)?\s', Number),
            (r'(?:\-\d([\d,]*\d)?)?\-\d(?:[\d,]*\d)?/\d(?:[\d,]*\d)?\s', Number),

            # keywords
            (r'(?:deprecated|final|foldable|flushable|inline|recursive)\s',
             Keyword),

            # builtins
            (builtin_kernel, bygroups(Name.Builtin, Whitespace)),
            (builtin_assocs, bygroups(Name.Builtin, Whitespace)),
            (builtin_combinators, bygroups(Name.Builtin, Whitespace)),
            (builtin_math, bygroups(Name.Builtin, Whitespace)),
            (builtin_sequences, bygroups(Name.Builtin, Whitespace)),
            (builtin_namespaces, bygroups(Name.Builtin, Whitespace)),
            (builtin_arrays, bygroups(Name.Builtin, Whitespace)),
            (builtin_io, bygroups(Name.Builtin, Whitespace)),
            (builtin_strings, bygroups(Name.Builtin, Whitespace)),
            (builtin_vectors, bygroups(Name.Builtin, Whitespace)),
            (builtin_continuations, bygroups(Name.Builtin, Whitespace)),

            # everything else is text
            (r'\S+', Text),
        ],
        'stackeffect': [
            (r'\s+', Whitespace),
            (r'(\()(\s+)', bygroups(Name.Function, Whitespace), 'stackeffect'),
            (r'(\))(\s+)', bygroups(Name.Function, Whitespace), '#pop'),
            (r'(--)(\s+)', bygroups(Name.Function, Whitespace)),
            (r'\S+', Name.Variable),
        ],
        'slots': [
            (r'\s+', Whitespace),
            (r'(;)(\s+)', bygroups(Keyword, Whitespace), '#pop'),
            (r'(\{)(\s+)(\S+)(\s+)([^}]+)(\s+)(\})(\s+)',
             bygroups(Text, Whitespace, Name.Variable, Whitespace,
                 Text, Whitespace, Text, Whitespace)),
            (r'\S+', Name.Variable),
        ],
        'vocabs': [
            (r'\s+', Whitespace),
            (r'(;)(\s+)', bygroups(Keyword, Whitespace), '#pop'),
            (r'\S+', Name.Namespace),
        ],
        'classes': [
            (r'\s+', Whitespace),
            (r'(;)(\s+)', bygroups(Keyword, Whitespace), '#pop'),
            (r'\S+', Name.Class),
        ],
        'words': [
            (r'\s+', Whitespace),
            (r'(;)(\s+)', bygroups(Keyword, Whitespace), '#pop'),
            (r'\S+', Name.Function),
        ],
    }

72%


¤ Dauer der Verarbeitung: 0.9 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.