|
@@ -5,6 +5,7 @@ include "io.alh"
|
|
include "modelling.alh"
|
|
include "modelling.alh"
|
|
|
|
|
|
Element while_stack = ?
|
|
Element while_stack = ?
|
|
|
|
+Element variable_map = ?
|
|
|
|
|
|
Action function construct_top():
|
|
Action function construct_top():
|
|
String command
|
|
String command
|
|
@@ -62,7 +63,7 @@ Action function construct_top_funcdef():
|
|
assign = create_value(!assign)
|
|
assign = create_value(!assign)
|
|
resolve = create_value(!resolve)
|
|
resolve = create_value(!resolve)
|
|
constant = create_value(!constant)
|
|
constant = create_value(!constant)
|
|
- formal = input()
|
|
|
|
|
|
+ formal = dict_read(variable_map, input())
|
|
func = create_node()
|
|
func = create_node()
|
|
params = create_node()
|
|
params = create_node()
|
|
dict_add(global, "var", formal)
|
|
dict_add(global, "var", formal)
|
|
@@ -86,7 +87,7 @@ Action function construct_top_funcdef():
|
|
param = create_node()
|
|
param = create_node()
|
|
dict_add(params, string_get(arg_names_decl, counter), param)
|
|
dict_add(params, string_get(arg_names_decl, counter), param)
|
|
dict_add(param, "name", string_get(arg_names_decl, counter))
|
|
dict_add(param, "name", string_get(arg_names_decl, counter))
|
|
- output(param)
|
|
|
|
|
|
+ dict_add(variable_map, input(), param)
|
|
// Output each parameter in turn
|
|
// Output each parameter in turn
|
|
counter = counter + 1
|
|
counter = counter + 1
|
|
|
|
|
|
@@ -172,7 +173,7 @@ Action function construct_access():
|
|
Action function construct_resolve():
|
|
Action function construct_resolve():
|
|
Action this_element
|
|
Action this_element
|
|
this_element = create_value(!resolve)
|
|
this_element = create_value(!resolve)
|
|
- dict_add(this_element, "var", input())
|
|
|
|
|
|
+ dict_add(this_element, "var", dict_read(variable_map, input()))
|
|
return this_element
|
|
return this_element
|
|
|
|
|
|
Action function construct_assign():
|
|
Action function construct_assign():
|
|
@@ -241,7 +242,7 @@ Action function construct_declare():
|
|
this_element = create_value(!declare)
|
|
this_element = create_value(!declare)
|
|
declared_element = create_node()
|
|
declared_element = create_node()
|
|
dict_add(this_element, "var", declared_element)
|
|
dict_add(this_element, "var", declared_element)
|
|
- output(declared_element)
|
|
|
|
|
|
+ dict_add(variable_map, input(), declared_element)
|
|
if (input()):
|
|
if (input()):
|
|
dict_add(this_element, "next", construct_unknown())
|
|
dict_add(this_element, "next", construct_unknown())
|
|
return this_element
|
|
return this_element
|
|
@@ -304,7 +305,7 @@ Action function construct_function():
|
|
while (counter < nrParams):
|
|
while (counter < nrParams):
|
|
param = create_node()
|
|
param = create_node()
|
|
dict_add(params, string_get(arg_names_decl, counter), param)
|
|
dict_add(params, string_get(arg_names_decl, counter), param)
|
|
- output(param)
|
|
|
|
|
|
+ dict_add(variable_map, input(), param)
|
|
// Output each parameter in turn
|
|
// Output each parameter in turn
|
|
counter = counter + 1
|
|
counter = counter + 1
|
|
|
|
|