A first attempt at definitions.

This commit is contained in:
Simon Forman 2023-02-04 22:58:38 -08:00
parent b70229d727
commit 15482c1fdd
1 changed files with 55 additions and 0 deletions

View File

@ -0,0 +1,55 @@
import sys
#list(open('../defs.txt'))
defs = '''\
abs dup 0 < [] [neg] branch
anamorphism [pop []] swap [dip swons] genrec
app1 grba infrst
app2 [grba swap grba swap] dip [infrst] cons ii
app3 3 appN
appN [grabN] codi map reverse disenstacken
at drop first
average [sum] [size] cleave /
b [i] dip i
binary unary popd
ccccons ccons ccons
ccons cons cons
clear [] swaack pop
cleave fork popdd
clop cleave popdd
cmp [[>] swap] dipd [ifte] ccons [=] swons ifte
codi cons dip
codireco codi reco
dinfrirst dip infrst
dipd [dip] codi
disenstacken ? [uncons ?] loop pop'''.splitlines()
for line in defs:
name, body = line.split(None, 1)
print(f'{name}, def_{name}')
print()
print()
print('void')
print('init_defs(void)')
print('{')
for line in defs:
name, body = line.split(None, 1)
print(f'\tdef_{name}_body = text_to_expression({repr(body)});')
print('}')
print()
print()
for line in defs:
name, body = line.split(None, 1)
print(f'void def_{name}(JoyListPtr stack, JoyListPtr expression)')
print()
print()
for line in defs:
name, body = line.split(None, 1)
print(f'void def_{name}(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) {{ push_quote(def_{name}_body, expression); }}')