--- esR.py- 2016-09-09 01:20:00.000000000 +0900 +++ esR.py 2016-09-09 02:00:00.000000000 +0900 @@ -3,9 +3,6 @@ import sys import yaml -def printf(s, v): - sys.stdout.write(s % v) - def is_num(s): try: float(s) @@ -163,7 +160,7 @@ def tree_op(lst, ops): if k == 'op': return tree_op1(lst, ops, k, v) - if k in [ 'num', 'name', 'arr', 'fcall', 'br_s' ] and len( lst[1:] ) > 0: + if k in [ 'num', 'name', 'arr', 'fcall', 'br_s', 'str' ] and len( lst[1:] ) > 0: e1 = lst[1] (k1, v1) = e1[:2] if k1 == 'op': @@ -254,8 +251,8 @@ def es_split(s): ops_flat = reduce(f, ops, []) kdic = { - 'cmt_s' : [ '/*', '//', '#', '/*-->|', '|<--*/' ], - 'cmt_e' : [ '*/' ], + 'cmt_s' : [ '/*', '//|-->', '//', '#', '/*-->|', '|<--*/' ], + 'cmt_e' : [ '*/', '//<--|' ], 'qt' : [ '"', "'" ], 'esc' : { '\\n':'\n', '\\t':'\t', '\\"':'"', "\\'":"'", '\\\\':'\\' }, 'br_s' : [ '(', '[', '{' ], @@ -461,7 +458,8 @@ def do_fcall(name, args, info): f = lambda (k, nm): k == 'fdef' and nm == name fdef = next( ( e for e in lst if f( e[:2] ) ), None ) if fdef is None: - func = get_sys_func(name) + v = get_env(info).get(name) + func = v if v else get_sys_func(name) if func: return func(*args) err_exit("not found fdef '{}'".format(name))