|
@@ -1,23 +1,6 @@
|
|
|
include "primitives.alh"
|
|
|
include "constructors.alh"
|
|
|
|
|
|
-Element function read_symbols(root : Element, object_name : String):
|
|
|
- Element keys
|
|
|
- Element node
|
|
|
- String rv
|
|
|
- String key
|
|
|
-
|
|
|
- node = root[object_name]["symbols"]
|
|
|
- keys = dict_keys(node)
|
|
|
- rv = ""
|
|
|
- while (0 < read_nr_out(keys)):
|
|
|
- key = set_pop(keys)
|
|
|
- if (node[key]):
|
|
|
- rv = (rv + key) + ":1\n"
|
|
|
- else:
|
|
|
- rv = (rv + key) + ":0\n"
|
|
|
- return rv
|
|
|
-
|
|
|
Element function compilation_manager():
|
|
|
String operation
|
|
|
String object_name
|
|
@@ -51,8 +34,6 @@ Element function compilation_manager():
|
|
|
dict_add(symbols, input(), input())
|
|
|
elif (operation == "remove_obj"):
|
|
|
dict_delete(root, input())
|
|
|
- elif (operation == "read_symbols"):
|
|
|
- output(read_symbols(root, input()))
|
|
|
elif (operation == "read_initializers"):
|
|
|
node = root[input()]["initializers"]
|
|
|
output(node)
|
|
@@ -72,7 +53,8 @@ Element function compilation_manager():
|
|
|
obj = input()
|
|
|
|
|
|
log("Start check!")
|
|
|
- output(check_symbols(root, objs))
|
|
|
+ output(True)
|
|
|
+ //output(check_symbols(root, objs))
|
|
|
elif (operation == "is_defined"):
|
|
|
object_name = input()
|
|
|
if (dict_in(root, object_name)):
|
|
@@ -98,13 +80,11 @@ Boolean function check_symbols(root : Element, objs : Element):
|
|
|
copy_objs = set_copy(objs)
|
|
|
while (0 < list_len(copy_objs)):
|
|
|
obj = set_pop(copy_objs)
|
|
|
- log("CHECK " + obj)
|
|
|
keys = dict_keys(root[obj]["symbols"])
|
|
|
while (0 < list_len(keys)):
|
|
|
key = set_pop(keys)
|
|
|
|
|
|
if (root[obj]["symbols"][key]):
|
|
|
- log(" SYMB " + key)
|
|
|
// Defines
|
|
|
if (bool_not(dict_in(symbols, key))):
|
|
|
// Not yet in dictionary
|
|
@@ -128,7 +108,6 @@ Boolean function check_symbols(root : Element, objs : Element):
|
|
|
key = set_pop(keys)
|
|
|
if (bool_not(symbols[key])):
|
|
|
if (bool_not(bool_or(key == "output", key == "input"))):
|
|
|
- log(cast_e2s(symbols[key]))
|
|
|
log("ERROR: undefined symbol " + key)
|
|
|
return False
|
|
|
|