Source code for momba.moml

# -*- coding:utf-8 -*-
#
# Copyright (C) 2019-2020, Maximilian Köhl <koehl@cs.uni-saarland.de>

from __future__ import annotations

import typing as t

from .. import model

from ..model import expressions

from . import parser


def parse_type(source: str) -> model.Type:
    return parser.parse_type(parser.TokenStream(source))


def parse_expression(source: str) -> model.Expression:
    return parser.parse_expression(parser.TokenStream(source))


def parse(source: str, *, ctx: t.Optional[model.Context] = None) -> model.Context:
    return parser.parse_moml(parser.TokenStream(source), ctx=ctx)


[docs]def expr(source: str, **macros: expressions.ValueOrExpression) -> model.Expression: """Parses an expression in MOML syntax with macros.""" return parser.parse_expression( parser.TokenStream(source.strip()), environment=parser.Environment( {name: expressions.ensure_expr(value) for name, value in macros.items()} ), )
[docs]def prop(source: str, **macros: expressions.ValueOrExpression) -> model.Expression: """Parses a property in MOML syntax with macros.""" return parser.parse_property( parser.TokenStream(source.strip()), environment=parser.Environment( {name: expressions.ensure_expr(value) for name, value in macros.items()} ), )