コード例 #1
0
ファイル: parser.py プロジェクト: zjw0358/mtots
        All(import_),
        All(inline),
        All(class_),
        All(function),
        All('NEWLINE').valmap(()),
    ).repeat().flatten().map(tuple)],
]))

module_name = All(
    All('ID'),
    All('.', 'ID').getitem(1).repeat(),
).flatten().map('.'.join)

import_ = Struct(cst.Import, [
    'from',
    ['module', module_name.required()],
    Required('import'),
    ['name', Required('ID')],
    ['alias', Any(
        All('as', 'ID').getitem(1),
        All().valmap(None),
    )],
    Required('NEWLINE')
])

inline = Struct(cst.Inline, [
    'inline',
    ['name', Required('ID')],
    ['type', Required('STR')],
    ['text', Required('STR')],
])
コード例 #2
0
    ['name', 'ID'],
    ':',
    ['type', type_expression],
]))
parameters = All('(', parameter.join(','), ')').getitem(1).map(tuple)

function = Forward(lambda: Struct(cst.Function, [
    ['native', Any('native').optional()],
    'def',
    ['name', Required('ID')],
    ['type_parameters',
     Any(
         type_parameters,
         All().valmap(None),
     )],
    ['parameters', parameters.required()],
    Required(':'),
    ['return_type', type_expression.required()],
    [
        'body',
        Any(
            All('NEWLINE').valmap(None),
            All(
                Required('='),
                value_expression.required(),
                'NEWLINE',
            ).getitem(1),
        )
    ],
]))