summaryrefslogtreecommitdiff
path: root/sci2jsyacc.py
diff options
context:
space:
mode:
Diffstat (limited to 'sci2jsyacc.py')
-rwxr-xr-xsci2jsyacc.py46
1 files changed, 23 insertions, 23 deletions
diff --git a/sci2jsyacc.py b/sci2jsyacc.py
index c36e099d..6fb6960e 100755
--- a/sci2jsyacc.py
+++ b/sci2jsyacc.py
@@ -565,13 +565,11 @@ def p_lterm_assignment_expression(p):
VARCOUNT += 1
var = var[1:-1]
ltermvars = var.split(',')
- idx = 0
- for var in ltermvars:
+ for idx, var in enumerate(ltermvars):
prefix = ''
if var in LOCAL_VARS and '.' not in var:
prefix = 'var '
p[0] += '%*s%s%s = %s[%d];\n' % (INDENT_LEVEL * INDENT_SIZE, ' ', prefix, var, tmpvar, idx)
- idx += 1
else:
prefix = ''
value = p[3][0]
@@ -694,37 +692,39 @@ def p_modelexpression_expression(p):
def p_getvalueassignment_getvalue_arguments(p):
'getvalueassignment : lterm ASSIGNMENT SCICOS_GETVALUE OPENBRACKET getvaluearguments CLOSEBRACKET EOL'
global OPTIONS_BLOCK
- var = 'ok'
- add_local_var(var)
- p[0] = '%*svar %s = true;\n' % (INDENT_LEVEL * INDENT_SIZE, ' ', print_var(var))
lterm = p[1]
if lterm[0] == '[':
lterm = lterm[1:-1]
ltermvars = lterm.split(',')
- idx = 0
- for var in ltermvars:
+ lastidx = len(ltermvars) - 2
+ for idx, var in enumerate(ltermvars, -1):
if var[:5] == 'this.':
basevar = var[5:]
else:
basevar = var
- if basevar in ('ok', 'exprs'):
- continue
- add_global_var(basevar, force=True)
+ if idx in (-1, lastidx):
+ add_local_var(basevar)
+ else:
+ add_global_var(basevar, force=True)
var = print_var(basevar)
- vartype = get_var_vartype(basevar, STRING_TYPE)
- parsefunction = PARSE_MAP.get(vartype, '')
- if parsefunction != '':
- parsecall = '%s(arguments[%d][\"%s\"])' % (parsefunction, 0, basevar)
+ if idx == -1:
+ p[0] = '%*svar %s = true;\n' % (INDENT_LEVEL * INDENT_SIZE, ' ', var)
+ elif idx == len(ltermvars) - 2:
+ pass
else:
- parsecall = 'arguments[%d][\"%s\"]' % (0, basevar)
- p[0] += "%*s%s = %s;\n" % (INDENT_LEVEL * INDENT_SIZE, ' ', var, parsecall)
- if idx < len(LABELS):
- if vartype == MATRIX_TYPE:
- showvar = var + '.toString().replace(/,/g," ")'
+ vartype = get_var_vartype(basevar, STRING_TYPE)
+ parsefunction = PARSE_MAP.get(vartype, '')
+ if parsefunction != '':
+ parsecall = '%s(arguments[%d][\"%s\"])' % (parsefunction, 0, basevar)
else:
- showvar = var
- OPTIONS_BLOCK += '%*s%s:[%s,%s],\n' % (INDENT_LEVEL * INDENT_SIZE, ' ', basevar, LABELS[idx], showvar)
- idx += 1
+ parsecall = 'arguments[%d][\"%s\"]' % (0, basevar)
+ p[0] += "%*s%s = %s;\n" % (INDENT_LEVEL * INDENT_SIZE, ' ', var, parsecall)
+ if idx < len(LABELS):
+ if vartype == MATRIX_TYPE:
+ showvar = var + '.toString().replace(/,/g," ")'
+ else:
+ showvar = var
+ OPTIONS_BLOCK += '%*s%s:[%s,%s],\n' % (INDENT_LEVEL * INDENT_SIZE, ' ', basevar, LABELS[idx], showvar)
def p_getvaluearguments_arg1_arg2_arg3_arg4(p):
'getvaluearguments : getvaluearg1 COMMA getvaluearg2 COMMA getvaluearg3 COMMA getvaluearg4'