summaryrefslogtreecommitdiff
path: root/sci2jsyacc.py
diff options
context:
space:
mode:
Diffstat (limited to 'sci2jsyacc.py')
-rwxr-xr-xsci2jsyacc.py18
1 files changed, 16 insertions, 2 deletions
diff --git a/sci2jsyacc.py b/sci2jsyacc.py
index ac1ef9ed..420af69a 100755
--- a/sci2jsyacc.py
+++ b/sci2jsyacc.py
@@ -547,7 +547,7 @@ def p_term_parameter(p):
p[0] = '%s(%s)' % (p[1], p[3])
# B($-2)('function parameter')
-def p_term_termfunc_parameter(p):
+def p_term_termfunc_parameter_parameter(p):
'term : termvar OPENBRACKET expression CLOSEOPENBRACKET expression CLOSEBRACKET'
if isarray(p[1]):
base = '%s[%s-1]' % (p[1], p[3])
@@ -559,7 +559,7 @@ def p_term_termfunc_parameter(p):
p[0] = '%s(%s)' % (base, p[5])
# B($-2)('function parameter')(3)
-def p_term_termfunc_parameter_parameter(p):
+def p_term_termfunc_parameter_parameter_parameter(p):
'term : termvar OPENBRACKET expression CLOSEOPENBRACKET expression CLOSEOPENBRACKET expression CLOSEBRACKET'
if isarray(p[1]):
base = '%s[%s-1]' % (p[1], p[3])
@@ -574,6 +574,20 @@ def p_term_termfunc_parameter_parameter(p):
else:
p[0] = '%s(%s)' % (base, p[7])
+# B($-2)('function parameter')(3:4)
+def p_term_termfunc_parameter_parameter_slice(p):
+ 'term : termvar OPENBRACKET expression CLOSEOPENBRACKET expression CLOSEOPENBRACKET expression COLON expression CLOSEBRACKET'
+ if isarray(p[1]):
+ base = '%s[%s-1]' % (p[1], p[3])
+ else:
+ base = '%s(%s)' % (p[1], p[3])
+ if isarray(base):
+ base = '%s[%s-1]' % (base, p[5])
+ else:
+ base = '%s(%s)' % (base, p[5])
+ addtoarray(base)
+ p[0] = '%s.slice(%s-1,%s)' % (base, p[7], p[9])
+
# part(x,1:10)
def p_term_part_parameter_range(p):
'term : PART OPENBRACKET expression COMMA expression COLON expression CLOSEBRACKET'