| Server IP : 185.208.173.17 / Your IP : 87.236.161.98 Web Server : Microsoft-IIS/10.0 System : Windows NT SRV8576125506 10.0 build 26100 (Windows Server 2016) AMD64 User : IUSR ( 0) PHP Version : 7.4.13 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/Program Files/Cloudbase Solutions/Cloudbase-Init/Python/Lib/site-packages/terml/ |
Upload File : |
from ometa.grammar import loadGrammar
from ometa.runtime import EOFError
import terml
from terml.parser import TermLParser
from terml.qnodes import ValueHole, PatternHole, QTerm, QSome, QFunctor
def interleave(l, *r):
if r:
raise NotImplementedError()
return l
def _or(l, *r):
if r:
raise NotImplementedError()
return l
def some(value, quant):
if quant:
return QSome(value, quant)
else:
return value
def dollarHole(i):
return ValueHole(None, i, False)
def patternHole(i):
return PatternHole(None, i, False)
def taggedHole(t, h):
return h.__class__(t, h.name, h.isFunctorHole)
def leafInternal(tag, data, span=None):
return QFunctor(tag, data, span)
def makeTerm(t, args=None, span=None):
if args is None:
return t
else:
if isinstance(t, QTerm):
if t.data:
if not args:
return t
else:
raise ValueError("Literal terms can't have arguments")
return QTerm(t.asFunctor(), None, args and tuple(args), span)
QTermParser = loadGrammar(terml, "quasiterm", TermLParser.globals, TermLParser)
QTermParser.globals.update(globals())
def quasiterm(termString):
"""
Build a quasiterm from a string.
"""
p = QTermParser(termString)
result, error = p.apply("term")
try:
p.input.head()
except EOFError:
pass
else:
raise error
return result