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 12 kB image not shown  

Quelle  praat.py   Sprache: Python

 
"""
    pygments.lexers.praat
    ~~~~~~~~~~~~~~~~~~~~~

    Lexer for Praat

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

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

__all__ = ['PraatLexer']


class PraatLexer(RegexLexer):
    """
    For Praat scripts.
    """

    name = 'Praat'
    url = 'http://www.praat.org'
    aliases = ['praat']
    filenames = ['*.praat''*.proc''*.psc']
    version_added = '2.1'

    keywords = (
        'if''then''else''elsif''elif''endif''fi''for''from''to',
        'endfor''endproc''while''endwhile''repeat''until''select''plus',
        'minus''demo''assert''stopwatch''nocheck''nowarn''noprogress',
        'editor''endeditor''clearinfo',
    )

    functions_string = (
        'backslashTrigraphsToUnicode''chooseDirectory''chooseReadFile',
        'chooseWriteFile''date''demoKey''do''environment''extractLine',
        'extractWord''fixed''info''left''mid''percent''readFile''replace',
        'replace_regex''right''selected''string''unicodeToBackslashTrigraphs',
    )

    functions_numeric = (
        'abs''appendFile''appendFileLine''appendInfo''appendInfoLine''arccos',
        'arccosh''arcsin''arcsinh''arctan''arctan2''arctanh''barkToHertz',
        'beginPause''beginSendPraat''besselI''besselK''beta''beta2',
        'binomialP''binomialQ''boolean''ceiling''chiSquareP''chiSquareQ',
        'choice''comment''cos''cosh''createDirectory''deleteFile',
        'demoClicked''demoClickedIn''demoCommandKeyPressed',
        'demoExtraControlKeyPressed''demoInput''demoKeyPressed',
        'demoOptionKeyPressed''demoShiftKeyPressed''demoShow''demoWaitForInput',
        'demoWindowTitle''demoX''demoY''differenceLimensToPhon''do''editor',
        'endPause''endSendPraat''endsWith''erb''erbToHertz''erf''erfc',
        'exitScript''exp''extractNumber''fileReadable''fisherP''fisherQ',
        'floor''gaussP''gaussQ''hertzToBark''hertzToErb''hertzToMel',
        'hertzToSemitones''imax''imin''incompleteBeta''incompleteGammaP''index',
        'index_regex''integer''invBinomialP''invBinomialQ''invChiSquareQ''invFisherQ',
        'invGaussQ''invSigmoid''invStudentQ''length''ln''lnBeta''lnGamma',
        'log10''log2''max''melToHertz''min''minusObject''natural''number',
        'numberOfColumns''numberOfRows''numberOfSelected''objectsAreIdentical',
        'option''optionMenu''pauseScript''phonToDifferenceLimens''plusObject',
        'positive''randomBinomial''randomGauss''randomInteger''randomPoisson',
        'randomUniform''real''readFile''removeObject''rindex''rindex_regex',
        'round''runScript''runSystem''runSystem_nocheck''selectObject',
        'selected''semitonesToHertz''sentence''sentencetext''sigmoid''sin''sinc',
        'sincpi''sinh''soundPressureToPhon''sqrt''startsWith''studentP',
        'studentQ''tan''tanh''text''variableExists''word''writeFile''writeFileLine',
        'writeInfo''writeInfoLine',
    )

    functions_array = (
        'linear''randomGauss''randomInteger''randomUniform''zero',
    )

    objects = (
        'Activation''AffineTransform''AmplitudeTier''Art''Artword',
        'Autosegment''BarkFilter''BarkSpectrogram''CCA''Categories',
        'Cepstrogram''Cepstrum''Cepstrumc''ChebyshevSeries''ClassificationTable',
        'Cochleagram''Collection''ComplexSpectrogram''Configuration''Confusion',
        'ContingencyTable''Corpus''Correlation''Covariance',
        'CrossCorrelationTable''CrossCorrelationTables''DTW''DataModeler',
        'Diagonalizer''Discriminant''Dissimilarity''Distance''Distributions',
        'DurationTier''EEG''ERP''ERPTier''EditCostsTable''EditDistanceTable',
        'Eigen''Excitation''Excitations''ExperimentMFC''FFNet''FeatureWeights',
        'FileInMemory''FilesInMemory''Formant''FormantFilter''FormantGrid',
        'FormantModeler''FormantPoint''FormantTier''GaussianMixture''HMM',
        'HMM_Observation''HMM_ObservationSequence''HMM_State''HMM_StateSequence',
        'Harmonicity''ISpline''Index''Intensity''IntensityTier''IntervalTier',
        'KNN''KlattGrid''KlattTable''LFCC''LPC''Label''LegendreSeries',
        'LinearRegression''LogisticRegression''LongSound''Ltas''MFCC''MSpline',
        'ManPages''Manipulation''Matrix''MelFilter''MelSpectrogram',
        'MixingMatrix''Movie''Network''Object''OTGrammar''OTHistory''OTMulti',
        'PCA''PairDistribution''ParamCurve''Pattern''Permutation''Photo',
        'Pitch''PitchModeler''PitchTier''PointProcess''Polygon''Polynomial',
        'PowerCepstrogram''PowerCepstrum''Procrustes''RealPoint''RealTier',
        'ResultsMFC''Roots''SPINET''SSCP''SVD''Salience''ScalarProduct',
        'Similarity''SimpleString''SortedSetOfString''Sound''Speaker',
        'Spectrogram''Spectrum''SpectrumTier''SpeechSynthesizer''SpellingChecker',
        'Strings''StringsIndex''Table''TableOfReal''TextGrid''TextInterval',
        'TextPoint''TextTier''Tier''Transition''VocalTract''VocalTractTier',
        'Weight''WordList',
    )

    variables_numeric = (
        'macintosh''windows''unix''praatVersion''pi''e''undefined',
    )

    variables_string = (
        'praatVersion''tab''shellDirectory''homeDirectory',
        'preferencesDirectory''newline''temporaryDirectory',
        'defaultDirectory',
    )

    object_attributes = (
        'ncol''nrow''xmin''ymin''xmax''ymax''nx''ny''dx''dy',
    )

    tokens = {
        'root': [
            (r'(\s+)(#.*?$)', bygroups(Whitespace, Comment.Single)),
            (r'^#.*?$', Comment.Single),
            (r';[^\n]*',       Comment.Single),
            (r'\s+',           Whitespace),

            (r'\bprocedure\b', Keyword,       'procedure_definition'),
            (r'\bcall\b',      Keyword,       'procedure_call'),
            (r'@',             Name.Function, 'procedure_call'),

            include('function_call'),

            (words(keywords, suffix=r'\b'), Keyword),

            (r'(\bform\b)(\s+)([^\n]+)',
             bygroups(Keyword, Whitespace, String), 'old_form'),

            (r'(print(?:line|tab)?|echo|exit|asserterror|pause|send(?:praat|socket)|'
             r'include|execute|system(?:_nocheck)?)(\s+)',
             bygroups(Keyword, Whitespace), 'string_unquoted'),

            (r'(goto|label)(\s+)(\w+)', bygroups(Keyword, Whitespace, Name.Label)),

            include('variable_name'),
            include('number'),

            (r'"', String, 'string'),

            (words((objects), suffix=r'(?=\s+\S+\n)'), Name.Class'string_unquoted'),

            (r'\b[A-Z]', Keyword, 'command'),
            (r'(\.{3}|[)(,])', Punctuation),
        ],
        'command': [
            (r'( ?[\w()-]+ ?)', Keyword),

            include('string_interpolated'),

            (r'\.{3}', Keyword, ('#pop', 'old_arguments')),
            (r':', Keyword, ('#pop', 'comma_list')),
            (r'\s', Whitespace, '#pop'),
        ],
        'procedure_call': [
            (r'\s+', Whitespace),
            (r'([\w.]+)(?:(:)|(?:(\s*)(\()))',
             bygroups(Name.Function, Punctuation,
                      Text.Whitespace, Punctuation), '#pop'),
            (r'([\w.]+)', Name.Function, ('#pop', 'old_arguments')),
        ],
        'procedure_definition': [
            (r'\s', Whitespace),
            (r'([\w.]+)(\s*?[(:])',
             bygroups(Name.Function, Whitespace), '#pop'),
            (r'([\w.]+)([^\n]*)',
             bygroups(Name.Function, Text), '#pop'),
        ],
        'function_call': [
            (words(functions_string, suffix=r'\$(?=\s*[:(])'), Name.Function, 'function'),
            (words(functions_array, suffix=r'#(?=\s*[:(])'), Name.Function, 'function'),
            (words(functions_numeric, suffix=r'(?=\s*[:(])'),  Name.Function, 'function'),
        ],
        'function': [
            (r'\s+',   Whitespace),
            (r':',     Punctuation, ('#pop', 'comma_list')),
            (r'\s*\(', Punctuation, ('#pop', 'comma_list')),
        ],
        'comma_list': [
            (r'(\s*\n\s*)(\.{3})', bygroups(Whitespace, Punctuation)),

            (r'(\s*)(?:([)\]])|(\n))', bygroups(
                Whitespace, Punctuation, Whitespace), '#pop'),

            (r'\s+', Whitespace),
            (r'"',   String, 'string'),
            (r'\b(if|then|else|fi|endif)\b', Keyword),

            include('function_call'),
            include('variable_name'),
            include('operator'),
            include('number'),

            (r'[()]', Text),
            (r',', Punctuation),
        ],
        'old_arguments': [
            (r'\n', Whitespace, '#pop'),

            include('variable_name'),
            include('operator'),
            include('number'),

            (r'"', String, 'string'),
            (r'[^\n]', Text),
        ],
        'number': [
            (r'\n', Whitespace, '#pop'),
            (r'\b\d+(\.\d*)?([eE][-+]?\d+)?%?', Number),
        ],
        'object_reference': [
            include('string_interpolated'),
            (r'([a-z][a-zA-Z0-9_]*|\d+)', Name.Builtin),

            (words(object_attributes, prefix=r'\.'), Name.Builtin, '#pop'),

            (r'\$', Name.Builtin),
            (r'\[', Text, '#pop'),
        ],
        'variable_name': [
            include('operator'),
            include('number'),

            (words(variables_string,  suffix=r'\$'), Name.Variable.Global),
            (words(variables_numeric,
             suffix=r'(?=[^a-zA-Z0-9_."\'$#\[:(]|\s|^|$)'),
             Name.Variable.Global),

            (words(objects, prefix=r'\b', suffix=r"(_)"),
             bygroups(Name.Builtin, Name.Builtin),
             'object_reference'),

            (r'\.?_?[a-z][\w.]*(\$|#)?', Text),
            (r'[\[\]]', Punctuation, 'comma_list'),

            include('string_interpolated'),
        ],
        'operator': [
            (r'([+\/*<>=!-]=?|[&*|][&*|]?|\^|<>)',       Operator),
            (r'(?, Operator.Word),
        ],
        'string_interpolated': [
            (r'\'[_a-z][^\[\]\'":]*(\[([\d,]+|"[\w,]+")\])?(:[0-9]+)?\'',
             String.Interpol),
        ],
        'string_unquoted': [
            (r'(\n\s*)(\.{3})', bygroups(Whitespace, Punctuation)),

            (r'\n',       Whitespace,            '#pop'),
            (r'\s',       Whitespace),

            include('string_interpolated'),

            (r"'",        String),
            (r"[^'\n]+",  String),
        ],
        'string': [
            (r'(\n\s*)(\.{3})', bygroups(Whitespace, Punctuation)),

            (r'"',          String,          '#pop'),

            include('string_interpolated'),

            (r"'",          String),
            (r'[^\'"\n]+', String),
        ],
        'old_form': [
            (r'(\s+)(#.*?$)', bygroups(Whitespace, Comment.Single)),
            (r'\s+', Whitespace),

            (r'(optionmenu|choice)([ \t]+)(\S+)(:)([ \t]+)',
             bygroups(Keyword, Whitespace, Text, Punctuation, Whitespace), 'number'),

            (r'(option|button)([ \t]+)',
             bygroups(Keyword, Whitespace), 'string_unquoted'),

            (r'(sentence|text)([ \t]+)(\S+)',
             bygroups(Keyword, Whitespace, String), 'string_unquoted'),

            (r'(word)([ \t]+)(\S+)([ \t]*)(\S+)?(?:([ \t]+)(.*))?',
             bygroups(Keyword, Whitespace, Text, Whitespace, Text, Whitespace, Text)),

            (r'(boolean)(\s+\S+\s*)(0|1|"?(?:yes|no)"?)',
             bygroups(Keyword, Whitespace, Name.Variable)),

            # Ideally processing of the number would happen in the 'number'
            # but that doesn't seem to work
            (r'(real|natural|positive|integer)([ \t]+\S+[ \t]*)([+-]?)(\d+(?:\.\d*)?'
             r'(?:[eE][-+]?\d+)?%?)',
             bygroups(Keyword, Whitespace, Operator, Number)),

            (r'(comment)(\s+)',
             bygroups(Keyword, Whitespace), 'string_unquoted'),

            (r'\bendform\b', Keyword, '#pop'),
        ]
    }

Messung V0.5
C=81 H=100 G=90

¤ Dauer der Verarbeitung: 0.4 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 und die Messung sind noch experimentell.