def let(bindings, body): e = schema.Expression() for binding in bindings: b = e.let.bindings.add() b.CopyFrom(binding) e.let.body.CopyFrom(body) return e
def apply(operation, arguments): e = schema.Expression() e.apply.operation.CopyFrom(operation) e.apply.arguments.extend(arguments) return e
def function(arguments, body): e = schema.Expression() e.function.arguments.extend(arguments) e.function.body.CopyFrom(body) return e
def cond(predicate, truth, falsehood): e = schema.Expression() e.condition.predicate.CopyFrom(predicate) e.condition.truth.CopyFrom(truth) e.condition.falsehood.CopyFrom(falsehood) return e
def l(*items): e = schema.Expression() e.list.items.extend(items) return e
def n(value): e = schema.Expression() e.number = float(value) return e
def s(value): e = schema.Expression() e.string = value return e
def sym(symbol): e = schema.Expression() e.symbol = symbol return e
import re import ast import inspect import femto_pb2 as schema from google.protobuf import json_format nil = schema.Expression() nil.nil = True def sym(symbol): e = schema.Expression() e.symbol = symbol return e def s(value): e = schema.Expression() e.string = value return e def n(value): e = schema.Expression() e.number = float(value) return e def l(*items): e = schema.Expression() e.list.items.extend(items)