|
@@ -76,40 +76,49 @@ Action function construct_global():
|
|
|
declared_element = input()
|
|
|
dict_add_fast(this_element, "var", declared_element)
|
|
|
|
|
|
- // Defines
|
|
|
- Action assign
|
|
|
- Action resolve
|
|
|
- Action value
|
|
|
- assign = create_value(!assign)
|
|
|
- dict_add_fast(this_element, "next", assign)
|
|
|
- resolve = create_value(!resolve)
|
|
|
- dict_add_fast(assign, "var", resolve)
|
|
|
- dict_add_fast(resolve, "var", declared_element)
|
|
|
op = input()
|
|
|
- if (op == "deref"):
|
|
|
- value = create_value(!constant)
|
|
|
- dict_add_fast(value, "node", import_node(input()))
|
|
|
- elif (op == "empty"):
|
|
|
- value = create_value(!call)
|
|
|
- Element res
|
|
|
- Element acc
|
|
|
- res = create_value(!resolve)
|
|
|
- acc = create_value(!access)
|
|
|
- dict_add_fast(value, "func", acc)
|
|
|
- dict_add_fast(acc, "var", res)
|
|
|
- dict_add_fast(res, "var", "create_node")
|
|
|
- elif (op == "const"):
|
|
|
- value = create_value(!constant)
|
|
|
- dict_add_fast(value, "node", input())
|
|
|
- dict_add_fast(assign, "value", value)
|
|
|
-
|
|
|
- Element result
|
|
|
- result = create_node()
|
|
|
- dict_add_fast(result, "name", "")
|
|
|
- dict_add_fast(result, "instruction", this_element)
|
|
|
- dict_add_fast(result, "start", this_element)
|
|
|
- dict_add_fast(result, "end", assign)
|
|
|
- return result!
|
|
|
+ if (op != "none"):
|
|
|
+ // Defines
|
|
|
+ Action assign
|
|
|
+ Action resolve
|
|
|
+ Action value
|
|
|
+ assign = create_value(!assign)
|
|
|
+ dict_add_fast(this_element, "next", assign)
|
|
|
+ resolve = create_value(!resolve)
|
|
|
+ dict_add_fast(assign, "var", resolve)
|
|
|
+ dict_add_fast(resolve, "var", declared_element)
|
|
|
+ if (op == "deref"):
|
|
|
+ value = create_value(!constant)
|
|
|
+ dict_add_fast(value, "node", import_node(input()))
|
|
|
+ elif (op == "empty"):
|
|
|
+ value = create_value(!call)
|
|
|
+ Element res
|
|
|
+ Element acc
|
|
|
+ res = create_value(!resolve)
|
|
|
+ acc = create_value(!access)
|
|
|
+ dict_add_fast(value, "func", acc)
|
|
|
+ dict_add_fast(acc, "var", res)
|
|
|
+ dict_add_fast(res, "var", "create_node")
|
|
|
+ elif (op == "const"):
|
|
|
+ value = create_value(!constant)
|
|
|
+ dict_add_fast(value, "node", input())
|
|
|
+ dict_add_fast(assign, "value", value)
|
|
|
+
|
|
|
+ Element result
|
|
|
+ result = create_node()
|
|
|
+ dict_add_fast(result, "name", "")
|
|
|
+ dict_add_fast(result, "instruction", this_element)
|
|
|
+ dict_add_fast(result, "start", this_element)
|
|
|
+ dict_add_fast(result, "end", assign)
|
|
|
+ return result!
|
|
|
+ else:
|
|
|
+ Element result
|
|
|
+ result = create_node()
|
|
|
+ dict_add_fast(result, "name", "")
|
|
|
+ dict_add_fast(result, "instruction", this_element)
|
|
|
+ dict_add_fast(result, "start", this_element)
|
|
|
+ dict_add_fast(result, "end", this_element)
|
|
|
+ return result!
|
|
|
|
|
|
Action function construct_funcdef(mutable : Boolean):
|
|
|
Action assign
|
|
@@ -329,34 +338,38 @@ Action function construct_declare():
|
|
|
dict_add_fast(variable_map, name, declared_element)
|
|
|
|
|
|
// Assign value
|
|
|
- Action assign
|
|
|
- Action resolve
|
|
|
- Action value
|
|
|
- assign = create_value(!assign)
|
|
|
- dict_add_fast(this_element, "next", assign)
|
|
|
- resolve = create_value(!resolve)
|
|
|
- dict_add_fast(assign, "var", resolve)
|
|
|
- dict_add_fast(resolve, "var", declared_element)
|
|
|
op = input()
|
|
|
- if (op == "deref"):
|
|
|
- value = create_value(!constant)
|
|
|
- dict_add_fast(value, "node", import_node(input()))
|
|
|
- elif (op == "empty"):
|
|
|
- value = create_value(!call)
|
|
|
- Element res
|
|
|
- Element acc
|
|
|
- res = create_value(!resolve)
|
|
|
- acc = create_value(!access)
|
|
|
- dict_add_fast(value, "func", acc)
|
|
|
- dict_add_fast(acc, "var", res)
|
|
|
- dict_add_fast(res, "var", "create_node")
|
|
|
- elif (op == "const"):
|
|
|
- value = create_value(!constant)
|
|
|
- dict_add_fast(value, "node", input())
|
|
|
- dict_add_fast(assign, "value", value)
|
|
|
-
|
|
|
- if (input()):
|
|
|
- dict_add_fast(assign, "next", construct_unknown())
|
|
|
+ if (op != "none"):
|
|
|
+ Action assign
|
|
|
+ Action resolve
|
|
|
+ Action value
|
|
|
+ assign = create_value(!assign)
|
|
|
+ dict_add_fast(this_element, "next", assign)
|
|
|
+ resolve = create_value(!resolve)
|
|
|
+ dict_add_fast(assign, "var", resolve)
|
|
|
+ dict_add_fast(resolve, "var", declared_element)
|
|
|
+ if (op == "deref"):
|
|
|
+ value = create_value(!constant)
|
|
|
+ dict_add_fast(value, "node", import_node(input()))
|
|
|
+ elif (op == "empty"):
|
|
|
+ value = create_value(!call)
|
|
|
+ Element res
|
|
|
+ Element acc
|
|
|
+ res = create_value(!resolve)
|
|
|
+ acc = create_value(!access)
|
|
|
+ dict_add_fast(value, "func", acc)
|
|
|
+ dict_add_fast(acc, "var", res)
|
|
|
+ dict_add_fast(res, "var", "create_node")
|
|
|
+ elif (op == "const"):
|
|
|
+ value = create_value(!constant)
|
|
|
+ dict_add_fast(value, "node", input())
|
|
|
+ dict_add_fast(assign, "value", value)
|
|
|
+
|
|
|
+ if (input()):
|
|
|
+ dict_add_fast(assign, "next", construct_unknown())
|
|
|
+ else:
|
|
|
+ if (input()):
|
|
|
+ dict_add_fast(this_element, "next", construct_unknown())
|
|
|
return this_element!
|
|
|
|
|
|
Action function construct_input():
|