next step is to enchance gen.py to have more expr to tests
[ozulis.git] / tests / lang / mugiwara / input / gen.py
blobe0c72b94ff220ce5eeb1d24975e1f4609d25e582
1 #! /usr/bin/python
3 unary_ops = {
4 '-':'neg',
5 '!':'bang',
6 '~':'not'
9 binary_ops = {
10 '+':'add',
11 '-':'sub',
12 '/':'div',
13 '*':'mul',
14 '%':'mod',
15 '==':'eq',
16 '!=':'ne',
17 '>':'gt',
18 '>=':'ge',
19 '<':'lt',
20 '<=':'le'
23 binary_bitwise_ops = {
24 '|':'or',
25 '&':'and',
26 '^':'xor'
27 '&&':'andand',
28 '||':'oror'
29 # todo: add shift operations
32 # todo: not bang
33 int_types = {
34 'bool':'true',
35 'int8':'13',
36 'uint8':'13',
37 'int16':'13',
38 'uint16':'13',
39 'int32':'13',
40 'uint32':'13U',
41 'int64':'13L',
42 'uint64':'13UL',
45 float_types = {
46 'float':'0.2',
47 'double':'0.42'
50 number_types = dict(int_types.items() + float_types.item())
52 def binary_exp(folder, type1, val1, type2, val2, op):
53 filename = folder + '/' + name + '-' + type1 + '-' + type2 + '.mgw'
54 content = "void main()\n" + "{\n" + \
55 " cast(" + type1 + ", " + val1 + ") " + op + \
56 " cast(" + type2 + ", " + val2 + ");\n}\n"
57 file = open(filename, "w")
58 file.write(content)
59 file.close()
61 for symbol, name in binary_ops.iteritems():
62 for type1, val1 in number_types.iteritems():
63 for type2, val2 in number_types.iteritems():
64 binary_exp('expr', type1, val1, type2, val2, op)
66 for symbol, name in binary_bitwise_ops.iteritems():
67 for type1, val1 in int_types.iteritems():
68 for type2, val2 in int_types.iteritems():
69 binary_exp('expr', type1, val1, type2, val2, op)
71 for symbol, name in binary_bitwise_ops.iteritems():
72 for type1, val1 in float_types.iteritems():
73 for type2, val2 in number_types.iteritems():
74 binary_exp('bad_expr', type1, val1, type2, val2, op)