diff options
author | Sunil Shetye | 2018-06-29 21:42:04 +0530 |
---|---|---|
committer | Sunil Shetye | 2018-06-29 21:42:04 +0530 |
commit | 1a2f1eadf0906a47a3608f495a26a4ae8217d16b (patch) | |
tree | f07e4bdd0c95779befae7d89a931f60485e75fed | |
parent | 154c6f55d02ccbdd48ee3876e62619de7a3ab997 (diff) | |
download | sci2js-1a2f1eadf0906a47a3608f495a26a4ae8217d16b.tar.gz sci2js-1a2f1eadf0906a47a3608f495a26a4ae8217d16b.tar.bz2 sci2js-1a2f1eadf0906a47a3608f495a26a4ae8217d16b.zip |
support variable in getvalue
-rwxr-xr-x | sci2jsyacc.py | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/sci2jsyacc.py b/sci2jsyacc.py index e8332399..659e0bc9 100755 --- a/sci2jsyacc.py +++ b/sci2jsyacc.py @@ -460,9 +460,22 @@ def p_assignment_expression(p): 'assignment : lterm ASSIGNMENT expression' p[0] = '%*s%s %s %s' % (INDENT_LEVEL * INDENT_SIZE, ' ', p[1], p[2], p[3]) -def p_getvalueassignment_getvalue(p): - 'getvalueassignment : lterm ASSIGNMENT SCICOS_GETVALUE OPENBRACKET expression COMMA expression COMMA expression COMMA expression CLOSEBRACKET' - p[0] = '%*s%s %s %s(%s,%s,%s,%s)' % (INDENT_LEVEL * INDENT_SIZE, ' ', p[1], p[2], p[3], p[5], p[7], p[9], p[11]) +def p_getvalueassignment_getvalue_list_list(p): + 'getvalueassignment : lterm ASSIGNMENT SCICOS_GETVALUE OPENBRACKET expression COMMA expression COMMA LIST OPENBRACKET getvaluelist CLOSEBRACKET COMMA expression CLOSEBRACKET' + p[0] = '%*s%s = %s(%s,%s,%s(%s),%s)' % (INDENT_LEVEL * INDENT_SIZE, ' ', p[1], p[3], p[5], p[7], p[9], p[11], p[14]) + lterm = p[1] + if lterm[0] == '[': + lterm = lterm[1:-1] + ltermvars = lterm.split(',') + for var in ltermvars: + if var in ('ok', 'exprs'): + continue + if var not in GLOBAL_VARS: + GLOBAL_VARS.add(var) + +def p_getvalueassignment_getvalue_var_var(p): + 'getvalueassignment : lterm ASSIGNMENT SCICOS_GETVALUE OPENBRACKET expression COMMA expression COMMA VAR COMMA expression CLOSEBRACKET' + p[0] = '%*s%s = %s(%s,%s,%s,%s)' % (INDENT_LEVEL * INDENT_SIZE, ' ', p[1], p[3], p[5], p[7], p[9], p[11]) lterm = p[1] if lterm[0] == '[': lterm = lterm[1:-1] @@ -538,6 +551,14 @@ def p_list_in_expression(p): 'list : IN ASSIGNMENT expression' p[0] = '%s1=%s' % (p[1], p[3]) +def p_getvaluelist_getvaluelist_expression(p): + 'getvaluelist : getvaluelist COMMA expression' + p[0] = '%s,%s' % (p[1], p[3]) + +def p_getvaluelist_expression(p): + 'getvaluelist : expression' + p[0] = '%s' % (p[1]) + # end define list # define expression |