summaryrefslogtreecommitdiff
path: root/sci2jsyacc.py
diff options
context:
space:
mode:
authorSunil Shetye2018-08-24 10:37:00 +0530
committerSunil Shetye2018-08-24 10:42:26 +0530
commit9fee9bd7e5e356e872c7a539d4a6cfa89cae593c (patch)
treef2f3777b239fda03dab6481694a2b38429279704 /sci2jsyacc.py
parent8ae8205dc95554cfafe994c560e57597e2f8954b (diff)
downloadsci2js-9fee9bd7e5e356e872c7a539d4a6cfa89cae593c.tar.gz
sci2js-9fee9bd7e5e356e872c7a539d4a6cfa89cae593c.tar.bz2
sci2js-9fee9bd7e5e356e872c7a539d4a6cfa89cae593c.zip
expand the variable
Diffstat (limited to 'sci2jsyacc.py')
-rwxr-xr-xsci2jsyacc.py27
1 files changed, 23 insertions, 4 deletions
diff --git a/sci2jsyacc.py b/sci2jsyacc.py
index 951805cf..b89c5bdc 100755
--- a/sci2jsyacc.py
+++ b/sci2jsyacc.py
@@ -73,6 +73,8 @@ GLOBAL_VARS = {
}
VAR_TYPES = {}
+VAR_DEFINITIONS = {}
+LAST_ARRAY = []
LABELS = []
@@ -549,7 +551,7 @@ VARCOUNT = 0
def p_lterm_assignment_expression(p):
'''assignment : lterm ASSIGNMENT expression EOL
| lterm ASSIGNMENT listcall EOL'''
- global VARCOUNT
+ global VARCOUNT, LAST_ARRAY
var = p[1]
if var[0] == '[':
prefix = 'var '
@@ -574,6 +576,9 @@ def p_lterm_assignment_expression(p):
prefix = 'var '
p[0] = '%*s%s%s = %s;\n' % (INDENT_LEVEL * INDENT_SIZE, ' ', prefix, var, value)
add_var_vartype(var, p[3][1])
+ if len(LAST_ARRAY) > 0:
+ VAR_DEFINITIONS[var] = LAST_ARRAY
+ LAST_ARRAY = []
def p_model_assignment_expression(p):
'''assignment : GRAPHICS ASSIGNMENT expression EOL
@@ -739,12 +744,22 @@ def p_getvaluearg2_gettext_string(p):
def p_getvaluearg2_var(p):
'getvaluearg2 : VAR'
- # TODO: replace with value of that variable
var = p[1]
add_global_var(var, force=True)
var = print_var(var)
- p[0] = '%s' % (var)
- LABELS.append(var)
+ if var in VAR_DEFINITIONS:
+ # replace variable with value of that variable
+ labels = VAR_DEFINITIONS[var]
+ s = '['
+ for l in labels:
+ s += l + ','
+ LABELS.append(l)
+ else:
+ s += ','
+ s = s[:-1] + ']'
+ else:
+ p[0] = '%s' % (var)
+ LABELS.append(var)
def p_getvaluearg2arraylist_arraylist_arraylistitem(p):
'''getvaluearg2arraylist : getvaluearg2arraylist SEMICOLON getvaluearg2arraylistitem
@@ -860,14 +875,18 @@ def p_ltermarraylistterm_prevar(p):
def p_termarrayarraylist_termarrayarraylist_semicolon_termarraylist(p):
'termarrayarraylist : termarrayarraylist SEMICOLON termarraylist'
p[0] = ('%s,[%s]' % (p[1][0], p[3][0]), p[1][1])
+ LAST_ARRAY.append(p[3][0])
def p_termarrayarraylist_termarraylist_semicolon_termarraylist(p):
'termarrayarraylist : termarraylist SEMICOLON termarraylist'
p[0] = ('[%s],[%s]' % (p[1][0], p[3][0]), p[1][1])
+ LAST_ARRAY.append(p[1][0])
+ LAST_ARRAY.append(p[3][0])
def p_termarrayarraylist_termarraylist_semicolon(p):
'termarrayarraylist : termarraylist SEMICOLON'
p[0] = ('[%s]' % (p[1][0]), p[1][1])
+ LAST_ARRAY.append(p[1][0])
def p_termarraylist_termarraylist_comma_expression(p):
'''termarraylist : termarraylist COMMA expression