Skip to content

Instantly share code, notes, and snippets.

@Wilfred
Created October 19, 2013 23:27
Show Gist options
  • Select an option

  • Save Wilfred/7062839 to your computer and use it in GitHub Desktop.

Select an option

Save Wilfred/7062839 to your computer and use it in GitHub Desktop.
rpython complains about the type here
import sys
import re
WHITESPACE = 'whitespace'
OPEN_PAREN = 'open-paren'
CLOSE_PAREN = 'close-paren'
INTEGER = 'integer'
TOKENS = {
WHITESPACE: r"\s+"
}
def lex(text):
lexed_tokens = []
while True:
found_match = False
for token, regexp in TOKENS.iteritems():
match = re.match(regexp, text)
if match:
found_match = True
lexed_tokens.append((token, match.group(0)))
text = text[match.end():]
continue
if not found_match:
print "Could not lex remainder: %r" % text
break
return lexed_tokens
def entry_point(argv):
if len(argv) != 1:
print "Usage: lexer <code snippet>"
return 1
print 'tokens: %s' % lex(argv[0])
return 0
def target(*args):
return entry_point, None
if __name__ == '__main__':
entry_point(sys.argv)
$ ./rpython lexer.py [0:22:03]
[translation:info] 2.7.3 (default, Sep 26 2013, 20:08:41)
[translation:info] [GCC 4.6.3]
[platform:msg] Set platform with 'host' cc=None, using cc='gcc'
[translation:info] Translating target as defined by lexer
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused /tmp/usession-release-2.1.x-4/gcctest.c -o /tmp/usession-release-2.1.x-4/gcctest.o
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused /tmp/usession-release-2.1.x-4/gcctest.c -o /tmp/usession-release-2.1.x-4/gcctest.o
[platform:execute] gcc /tmp/usession-release-2.1.x-4/gcctest.o -pthread -lrt -o /tmp/usession-release-2.1.x-4/gcctest
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused /tmp/usession-release-2.1.x-4/platcheck_0.c -o /tmp/usession-release-2.1.x-4/platcheck_0.o
[platform:execute] gcc /tmp/usession-release-2.1.x-4/platcheck_0.o -pthread -lrt -o /tmp/usession-release-2.1.x-4/platcheck_0
[translation] translate.py configuration:
[translation] [translate]
[translation] targetspec = lexer
[translation] translation configuration:
[translation] [translation]
[translation] gc = minimark
[translation] gctransformer = framework
[translation] list_comprehension_operations = True
[translation] withsmallfuncsets = 5
[translation:info] Annotating&simplifying...
[1c] {translation-task
starting annotate
[translation:info] with policy: rpython.annotator.policy.AnnotatorPolicy
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused /tmp/usession-release-2.1.x-4/platcheck_1.c -o /tmp/usession-release-2.1.x-4/platcheck_1.o
[platform:execute] gcc /tmp/usession-release-2.1.x-4/platcheck_1.o -pthread -lrt -o /tmp/usession-release-2.1.x-4/platcheck_1
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused /tmp/usession-release-2.1.x-4/platcheck_2.c -o /tmp/usession-release-2.1.x-4/platcheck_2.o
[platform:execute] gcc /tmp/usession-release-2.1.x-4/platcheck_2.o -pthread -lrt -o /tmp/usession-release-2.1.x-4/platcheck_2
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused /tmp/usession-release-2.1.x-4/platcheck_3.c -o /tmp/usession-release-2.1.x-4/platcheck_3.o
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused /tmp/usession-release-2.1.x-4/platcheck_4.c -o /tmp/usession-release-2.1.x-4/platcheck_4.o
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused /tmp/usession-release-2.1.x-4/platcheck_5.c -o /tmp/usession-release-2.1.x-4/platcheck_5.o
[platform:execute] gcc /tmp/usession-release-2.1.x-4/platcheck_5.o -pthread -lrt -o /tmp/usession-release-2.1.x-4/platcheck_5
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused /tmp/usession-release-2.1.x-4/platcheck_6.c -o /tmp/usession-release-2.1.x-4/platcheck_6.o
[platform:execute] gcc /tmp/usession-release-2.1.x-4/platcheck_6.o -pthread -lrt -o /tmp/usession-release-2.1.x-4/platcheck_6
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused /tmp/usession-release-2.1.x-4/platcheck_7.c -o /tmp/usession-release-2.1.x-4/platcheck_7.o
[platform:execute] gcc /tmp/usession-release-2.1.x-4/platcheck_7.o -pthread -lrt -o /tmp/usession-release-2.1.x-4/platcheck_7
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused /tmp/usession-release-2.1.x-4/platcheck_8.c -o /tmp/usession-release-2.1.x-4/platcheck_8.o
[platform:execute] gcc /tmp/usession-release-2.1.x-4/platcheck_8.o -pthread -lrt -o /tmp/usession-release-2.1.x-4/platcheck_8
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused /tmp/usession-release-2.1.x-4/platcheck_9.c -o /tmp/usession-release-2.1.x-4/platcheck_9.o
[platform:execute] gcc /tmp/usession-release-2.1.x-4/platcheck_9.o -pthread -lrt -o /tmp/usession-release-2.1.x-4/platcheck_9
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused /tmp/usession-release-2.1.x-4/platcheck_10.c -o /tmp/usession-release-2.1.x-4/platcheck_10.o
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused /tmp/usession-release-2.1.x-4/platcheck_11.c -o /tmp/usession-release-2.1.x-4/platcheck_11.o
[platform:execute] gcc /tmp/usession-release-2.1.x-4/platcheck_11.o -pthread -lrt -o /tmp/usession-release-2.1.x-4/platcheck_11
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused /tmp/usession-release-2.1.x-4/platcheck_12.c -o /tmp/usession-release-2.1.x-4/platcheck_12.o
[platform:execute] gcc /tmp/usession-release-2.1.x-4/platcheck_12.o -pthread -lrt -o /tmp/usession-release-2.1.x-4/platcheck_12
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused /tmp/usession-release-2.1.x-4/platcheck_13.c -o /tmp/usession-release-2.1.x-4/platcheck_13.o
[platform:execute] gcc /tmp/usession-release-2.1.x-4/platcheck_13.o -pthread -lrt -o /tmp/usession-release-2.1.x-4/platcheck_13
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused -I/home/wilfred/projects/baobab/pypy/rpython/translator/c /tmp/usession-release-2.1.x-4/platcheck_14.c -o /tmp/usession-release-2.1.x-4/platcheck_14.o
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused -I/home/wilfred/projects/baobab/pypy/rpython/translator/c /home/wilfred/projects/baobab/pypy/rpython/translator/c/src/thread.c -o /tmp/usession-release-2.1.x-4/rpython/translator/c/src/thread.o
[platform:execute] gcc /tmp/usession-release-2.1.x-4/platcheck_14.o /tmp/usession-release-2.1.x-4/rpython/translator/c/src/thread.o -pthread -Wl,--export-dynamic,--version-script=/tmp/usession-release-2.1.x-4/dynamic-symbols-0 -lrt -o /tmp/usession-release-2.1.x-4/platcheck_14
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused /tmp/usession-release-2.1.x-4/platcheck_15.c -o /tmp/usession-release-2.1.x-4/platcheck_15.o
[platform:execute] gcc /tmp/usession-release-2.1.x-4/platcheck_15.o -pthread -lrt -o /tmp/usession-release-2.1.x-4/platcheck_15
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused /tmp/usession-release-2.1.x-4/platcheck_16.c -o /tmp/usession-release-2.1.x-4/platcheck_16.o
[platform:execute] gcc /tmp/usession-release-2.1.x-4/platcheck_16.o -pthread -lrt -o /tmp/usession-release-2.1.x-4/platcheck_16
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused /tmp/usession-release-2.1.x-4/platcheck_17.c -o /tmp/usession-release-2.1.x-4/platcheck_17.o
[platform:execute] gcc /tmp/usession-release-2.1.x-4/platcheck_17.o -pthread -lrt -o /tmp/usession-release-2.1.x-4/platcheck_17
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused /tmp/usession-release-2.1.x-4/platcheck_18.c -o /tmp/usession-release-2.1.x-4/platcheck_18.o
[platform:execute] gcc /tmp/usession-release-2.1.x-4/platcheck_18.o -pthread -lrt -o /tmp/usession-release-2.1.x-4/platcheck_18
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused /tmp/usession-release-2.1.x-4/platcheck_19.c -o /tmp/usession-release-2.1.x-4/platcheck_19.o
[platform:execute] gcc /tmp/usession-release-2.1.x-4/platcheck_19.o -pthread -lrt -o /tmp/usession-release-2.1.x-4/platcheck_19
[platform:execute] gcc -c -O3 -pthread -fomit-frame-pointer -Wall -Wno-unused /tmp/usession-release-2.1.x-4/platcheck_20.c -o /tmp/usession-release-2.1.x-4/platcheck_20.o
[platform:execute] gcc /tmp/usession-release-2.1.x-4/platcheck_20.o -pthread -lrt -o /tmp/usession-release-2.1.x-4/platcheck_20
.......++[3c] translation-task}
[Timer] Timings:
[Timer] annotate --- 2.3 s
[Timer] ========================================
[Timer] Total: --- 2.3 s
[translation:ERROR] Error:
[translation:ERROR] Traceback (most recent call last):
[translation:ERROR] File "/home/wilfred/projects/baobab/pypy/rpython/translator/goal/translate.py", line 321, in main
[translation:ERROR] drv.proceed(goals)
[translation:ERROR] File "/home/wilfred/projects/baobab/pypy/rpython/translator/driver.py", line 733, in proceed
[translation:ERROR] return self._execute(goals, task_skip = self._maybe_skip())
[translation:ERROR] File "/home/wilfred/projects/baobab/pypy/rpython/translator/tool/taskengine.py", line 114, in _execute
[translation:ERROR] res = self._do(goal, taskcallable, *args, **kwds)
[translation:ERROR] File "/home/wilfred/projects/baobab/pypy/rpython/translator/driver.py", line 284, in _do
[translation:ERROR] res = func()
[translation:ERROR] File "/home/wilfred/projects/baobab/pypy/rpython/translator/driver.py", line 321, in task_annotate
[translation:ERROR] s = annotator.build_types(self.entry_point, self.inputtypes)
[translation:ERROR] File "/home/wilfred/projects/baobab/pypy/rpython/annotator/annrpython.py", line 93, in build_types
[translation:ERROR] return self.build_graph_types(flowgraph, inputcells, complete_now=complete_now)
[translation:ERROR] File "/home/wilfred/projects/baobab/pypy/rpython/annotator/annrpython.py", line 149, in build_graph_types
[translation:ERROR] self.complete()
[translation:ERROR] File "/home/wilfred/projects/baobab/pypy/rpython/annotator/annrpython.py", line 203, in complete
[translation:ERROR] self.complete_pending_blocks()
[translation:ERROR] File "/home/wilfred/projects/baobab/pypy/rpython/annotator/annrpython.py", line 198, in complete_pending_blocks
[translation:ERROR] self.processblock(graph, block)
[translation:ERROR] File "/home/wilfred/projects/baobab/pypy/rpython/annotator/annrpython.py", line 348, in processblock
[translation:ERROR] self.flowin(graph, block)
[translation:ERROR] File "/home/wilfred/projects/baobab/pypy/rpython/annotator/annrpython.py", line 412, in flowin
[translation:ERROR] self.consider_op(block, i)
[translation:ERROR] File "/home/wilfred/projects/baobab/pypy/rpython/annotator/annrpython.py", line 590, in consider_op
[translation:ERROR] argcells = [self.binding(a) for a in op.args]
[translation:ERROR] File "/home/wilfred/projects/baobab/pypy/rpython/annotator/annrpython.py", line 246, in binding
[translation:ERROR] return self.bookkeeper.immutableconstant(arg)
[translation:ERROR] File "/home/wilfred/projects/baobab/pypy/rpython/annotator/bookkeeper.py", line 317, in immutableconstant
[translation:ERROR] return self.immutablevalue(const.value)
[translation:ERROR] File "/home/wilfred/projects/baobab/pypy/rpython/annotator/bookkeeper.py", line 460, in immutablevalue
[translation:ERROR] s_self = self.immutablevalue(x.__self__, need_const)
[translation:ERROR] File "/home/wilfred/projects/baobab/pypy/rpython/annotator/bookkeeper.py", line 395, in immutablevalue
[translation:ERROR] result.dictdef.generalize_key(self.immutablevalue(ek))
[translation:ERROR] File "/home/wilfred/projects/baobab/pypy/rpython/annotator/dictdef.py", line 126, in generalize_key
[translation:ERROR] self.dictkey.generalize(s_key)
[translation:ERROR] File "/home/wilfred/projects/baobab/pypy/rpython/annotator/dictdef.py", line 30, in generalize
[translation:ERROR] updated = ListItem.generalize(self, s_other_value)
[translation:ERROR] File "/home/wilfred/projects/baobab/pypy/rpython/annotator/listdef.py", line 111, in generalize
[translation:ERROR] s_new_value = unionof(self.s_value, s_other_value)
[translation:ERROR] File "/home/wilfred/projects/baobab/pypy/rpython/annotator/model.py", line 746, in unionof
[translation:ERROR] s1 = pair(s1, s2).union()
[translation:ERROR] File "/home/wilfred/projects/baobab/pypy/rpython/annotator/binaryop.py", line 558, in union
[translation:ERROR] unions = [unionof(x,y) for x,y in zip(tup1.items, tup2.items)]
[translation:ERROR] File "/home/wilfred/projects/baobab/pypy/rpython/annotator/model.py", line 746, in unionof
[translation:ERROR] s1 = pair(s1, s2).union()
[translation:ERROR] File "/home/wilfred/projects/baobab/pypy/rpython/annotator/binaryop.py", line 55, in union
[translation:ERROR] raise UnionError(obj1, obj2)
[translation:ERROR] UnionError: (SomePBC(can_be_None=False, const=<type 'str'>, subset_of=None), SomeBuiltin(analyser=<function builtin_unicode at 0x998387c>, const=<type 'unicode'>, methodname='__builtin__.unicode', s_self=None))
[translation:ERROR] Processing block:
[translation:ERROR] block@9 is a <class 'rpython.flowspace.flowcontext.SpamBlock'>
[translation:ERROR] in (re:226)_compile__star_2
[translation:ERROR] containing the following operations:
[translation:ERROR] v0 = getitem(key_0, (0))
[translation:ERROR] v1 = type(v0)
[translation:ERROR] v2 = newtuple(v1)
[translation:ERROR] v3 = add(v2, key_0)
[translation:ERROR] v4 = simple_call((builtin_function_or_method get), v3)
[translation:ERROR] v5 = is_(v4, (None))
[translation:ERROR] v6 = is_true(v5)
[translation:ERROR] --end--
[translation] start debugger...
> /home/wilfred/projects/baobab/pypy/rpython/annotator/binaryop.py(55)union()
-> raise UnionError(obj1, obj2)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment