Exemple #1
0
def p_pattern_literal_string(p):
    'pattern : STRING'
    escaped = p[1].replace('"', '\\"')
    p[0] = pat.Lit(escaped, pat.LitKind.String)
Exemple #2
0
def p_pattern_literal_boolean(p):
    'pattern : BOOLEAN'
    p[0] = pat.Lit(normalizeboolean(p[1]), pat.LitKind.Boolean)
Exemple #3
0
def p_pattern_literal_int(t):
    'pattern : INTEGER'
    t[0] = pat.Lit(t[1], pat.LitKind.Integer)
Exemple #4
0
def p_pattern_literal_decimal(t):
    'pattern : FLOAT'
    t[0] = pat.Lit(t[1], pat.LitKind.Float)
Exemple #5
0
 def __init__(self, name, domain, codomain):
     self.name = name
     self.domain = pattern.PatSequence(
         [pattern.Lit(name, pattern.LitKind.Variable)] +
         domain)  # we will turn contract into pattern.
     self.codomain = codomain
Exemple #6
0
 def __init__(self, name, patternsequence, termtemplate):
     self.name = name
     self.patternsequence = pattern.PatSequence(
         [pattern.Lit(name, pattern.LitKind.Variable)] +
         patternsequence)
     self.termtemplate = termtemplate
Exemple #7
0
        try:
            case = pattern.BuiltInPatKind(prefix).name
            return pattern.BuiltInPat(pattern.BuiltInPatKind[case], prefix,
                                      node.sym).copyattributesfrom(node)
        except ValueError:
            pass

        # not nt or builtin-pat, check if there's underscore
        if prefix != node.sym:
            raise Exception(
                'define-language: before underscore must be either a non-terminal or build-in pattern {}'
                .format(node.sym))

        self.variables.add(node.sym)  # for variable-not-defined patterns.
        return pattern.Lit(node.sym,
                           pattern.LitKind.Variable).copyattributesfrom(node)


class Pattern_NtRewriter(NtResolver):
    def __init__(self, pattern, ntsyms):
        super().__init__(ntsyms)
        self.pattern = pattern

    def run(self):
        return self.transform(self.pattern)


class DefineLanguage_NtRewriter(NtResolver):
    def __init__(self, definelanguage, ntsyms):
        super().__init__(ntsyms)
        self.definelanguage = definelanguage