示例#1
0
def collocet_builtins(from_globls, to_globals): 
  for name, obj in globls.items():
    if isinstance(obj, Command):
      try: symbol = obj.symbol
      except:
        try: symbol = obj.name
        except: symbol = name
      v = var(symbol)
      global_env[v] = obj
示例#2
0
def symbol(solver, result):
  text, pos = solver.parse_state
  if pos>=len(text): return
  char = text[pos]
  if char in _SYMBOL_FORBID_CHARS or '0'<=char<='9':
    return
  p = pos
  while p<len(text): 
    if text[p] in _SYMBOL_FORBID_CHARS: break 
    else: p += 1
  name = text[pos:p]
  sym = var(name)
  for _ in term.unify(result, sym, solver.env):
    solver.parse_state = text, p
    yield cont, True
  solver.parse_state = text, pos
示例#3
0
def collocet_builtins_to_module(globls, global_env, module):
    for name, obj in globls.items():
        if isinstance(obj, Command):
            try:
                symbol = obj.symbol
            except:
                try:
                    symbol = obj.name
                except:
                    symbol = name
            v = var(symbol)
            module[v] = obj
            try:
                is_global = obj.is_global
            except:
                is_global = False
            if is_global:
                global_env[v] = obj
示例#4
0
from dao.env import ModuleEnvironment
from dao.term import var
from dao.t.builtins.globalenv import global_env, collocet_builtins

from dao.builtins.parser import *

parser = ModuleEnvironment({}, None, 'parser')
global_env[var('parser')] = parser
collocet_builtins(globals(), global_env, parser)
示例#5
0
文件: rule.py 项目: charyorde/dao
from dao.env import ModuleEnvironment
from dao.term import var
from dao.builtin import collocet_builtins_to_module
from dao.t.builtins.globalenv import global_env

from dao.builtins.rule import *

rule = ModuleEnvironment({}, None)
global_env[var('rule')] = rule
collocet_builtins_to_module(globals(), global_env, rule)
示例#6
0
文件: test_t.py 项目: hermetique/dao
 def test2(self):
     eq_(teval('a; a;'), var('a'))
示例#7
0
文件: test_t.py 项目: hermetique/dao
 def test1_2(self):
     eq_(teval('a'), var('a'))
示例#8
0
def get_var(builtin, name):
  try: symbol = builtin.symbol
  except:
    try: symbol = builtin.name
    except: symbol = name
  return var(symbol)
示例#9
0
文件: control.py 项目: charyorde/dao
from dao.env import ModuleEnvironment
from dao.term import var
from dao.builtin import collocet_builtins_to_module
from dao.t.builtins.globalenv import global_env

from dao.builtins.control import *

control = ModuleEnvironment({}, None)
global_env[var("control")] = control
collocet_builtins_to_module(globals(), global_env, control)
示例#10
0
文件: parser.py 项目: charyorde/dao
from dao.env import ModuleEnvironment
from dao.term import var
from dao.builtin import collocet_builtins_to_module
from dao.t.builtins.globalenv import global_env

from dao.builtins.parser import *

parser = ModuleEnvironment({}, None)
global_env[var('parser')] = parser
collocet_builtins_to_module(globals(), global_env, parser)
示例#11
0
from dao.env import ModuleEnvironment
from dao.term import var
from dao.t.builtins.globalenv import global_env, collocet_builtins

from dao.builtins.term import *

term = ModuleEnvironment({}, None, 'term')
global_env[var('term')] = term
collocet_builtins(globals(), global_env, term)
示例#12
0
文件: container.py 项目: chaosim/dao
from dao.env import ModuleEnvironment
from dao.term import var
from dao.t.builtins.globalenv import global_env, collocet_builtins

from dao.builtins.container import *
from dao.builtins.quasiquote import *

container = ModuleEnvironment({}, None, "container")
global_env[var("container")] = container
collocet_builtins(globals(), global_env, container)
示例#13
0
文件: io.py 项目: charyorde/dao
from dao.env import ModuleEnvironment
from dao.term import var
from dao.builtin import collocet_builtins_to_module
from dao.t.builtins.globalenv import global_env

from dao.builtins.io import *

io = ModuleEnvironment({}, None)
global_env[var('io')] = io
collocet_builtins_to_module(globals(), global_env, io)
示例#14
0
from dao.env import ModuleEnvironment
from dao.term import var
from dao.t.builtins.globalenv import global_env, collocet_builtins

from dao.builtins.io import *

io = ModuleEnvironment({}, None, 'io')
global_env[var('io')] = io
collocet_builtins(globals(), global_env, io)
示例#15
0
文件: rule.py 项目: hermetique/dao
from dao.env import ModuleEnvironment
from dao.term import var
from dao.t.builtins.globalenv import global_env, collocet_builtins

from dao.builtins.rule import *

rule = ModuleEnvironment({}, None, 'rule')
global_env[var('rule')] = rule
collocet_builtins(globals(), global_env, rule)
示例#16
0
文件: special.py 项目: hermetique/dao
from dao.env import ModuleEnvironment
from dao.term import var
from dao.t.builtins.globalenv import global_env, collocet_builtins

from dao.special import *

special = ModuleEnvironment({}, None, 'special')
global_env[var('special')] = special
collocet_builtins(globals(), global_env, special)
示例#17
0
文件: control.py 项目: hermetique/dao
from dao.env import ModuleEnvironment
from dao.term import var
from dao.t.builtins.globalenv import global_env, collocet_builtins

from dao.builtins.control import *

control = ModuleEnvironment({}, global_env, 'control')
global_env[var('control')] = control
collocet_builtins(globals(), global_env, control)
示例#18
0
文件: test_t.py 项目: chaosim/dao
 def test1_2(self):
   eq_(teval('a'), var('a'))
示例#19
0
from dao.env import ModuleEnvironment
from dao.term import var
from dao.t.builtins.globalenv import global_env, collocet_builtins

from dao.builtins.arith import *

arith = ModuleEnvironment({}, None, 'arith')
global_env[var('arith')] = arith
collocet_builtins(globals(), global_env, arith)
示例#20
0
文件: test_t.py 项目: chaosim/dao
 def test2(self):
   eq_(teval('a; a;'), var('a'))
示例#21
0
from dao.env import ModuleEnvironment
from dao.term import var
from dao.t.builtins.globalenv import global_env, collocet_builtins

from dao.builtins.container import *
from dao.builtins.quasiquote import *

container = ModuleEnvironment({}, None, 'container')
global_env[var('container')] = container
collocet_builtins(globals(), global_env, container)
示例#22
0
from dao.solve import BaseCommand
from dao.command import Command
from dao.special import SpecialForm

global_env = GlobalEnvironment({})

from dao.base import is_subclass
from dao.term import var

def get_var(builtin, name):
  try: symbol = builtin.symbol
  except:
    try: symbol = builtin.name
    except: symbol = name
  return var(symbol)
  
def collocet_builtins(globls, global_env, module): 
  for name, obj in globls.items():
    if isinstance(obj, Command) or is_subclass(obj, SpecialForm):
      v = get_var(obj, name)
      module[v] = obj
      if obj.is_global: global_env[v] = obj
      
t = ModuleEnvironment({}, global_env, 't')
grammar = ModuleEnvironment({}, global_env, 'gammar')
sexpression = ModuleEnvironment({}, global_env, 'sexpression')
classic = ModuleEnvironment({}, global_env, 'classic')
global_env[var('t')] = t
t[var('grammar')] = grammar
grammar[var('sexpression')] = sexpression
grammar[var('classic')] = classic