summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSunil Shetye2018-07-09 23:34:12 +0530
committerSunil Shetye2018-07-10 11:24:53 +0530
commit30c83c60e309a3b94d7bb7dcf5cfebd5db1884cb (patch)
tree3a34d6ebbf6302eda511391e750d267823e1ef55
parent9b18945e2e2348db85595fb096a1e1eba04f9baf (diff)
downloadsci2js-30c83c60e309a3b94d7bb7dcf5cfebd5db1884cb.tar.gz
sci2js-30c83c60e309a3b94d7bb7dcf5cfebd5db1884cb.tar.bz2
sci2js-30c83c60e309a3b94d7bb7dcf5cfebd5db1884cb.zip
separate listcall from expression
-rwxr-xr-xsci2jsyacc.py45
1 files changed, 30 insertions, 15 deletions
diff --git a/sci2jsyacc.py b/sci2jsyacc.py
index 366dc20a..f47db97f 100755
--- a/sci2jsyacc.py
+++ b/sci2jsyacc.py
@@ -489,7 +489,8 @@ def p_elsestatement_else(p):
# define assignment
def p_lterm_assignment_expression(p):
- 'assignment : lterm ASSIGNMENT expression'
+ '''assignment : lterm ASSIGNMENT expression
+ | lterm ASSIGNMENT listcall'''
p[0] = '%*s%s = %s' % (INDENT_LEVEL * INDENT_SIZE, ' ', p[1], p[3][0])
add_var_vartype(p[1], p[3][1])
@@ -522,12 +523,17 @@ def p_assignment_model_modelvar_assignment_modelexpression(p):
p[0] = '%*s%s = %s' % (INDENT_LEVEL * INDENT_SIZE, ' ', var, p[5][0])
add_var_vartype(var, p[5][1])
-def p_modelexpression_list(p):
+def p_modelexpression_list_modelexpressionlist(p):
'modelexpression : LIST OPENBRACKET modelexpressionlist CLOSEBRACKET'
p[0] = ('%s(%s)' % (p[1], p[3]), LIST_TYPE)
+def p_modelexpression_list(p):
+ 'modelexpression : LIST OPENBRACKET CLOSEBRACKET'
+ p[0] = ('%s()' % (p[1]), LIST_TYPE)
+
def p_modelexpressionlist_expression(p):
- 'modelexpressionlist : expression'
+ '''modelexpressionlist : expression
+ | listcall'''
vartype = MODEL_MAP.get(p[1][1], 'ScilabDouble')
if vartype != '':
p[0] = 'new %s([%s])' % (vartype, p[1][0])
@@ -535,7 +541,8 @@ def p_modelexpressionlist_expression(p):
p[0] = '%s' % (p[1][0])
def p_modelexpressionlist_modelexpression_list_expression(p):
- 'modelexpressionlist : modelexpressionlist COMMA expression'
+ '''modelexpressionlist : modelexpressionlist COMMA expression
+ | modelexpressionlist COMMA listcall'''
vartype = MODEL_MAP.get(p[3][1], 'ScilabDouble')
if vartype != '':
p[0] = '%s, new %s([%s])' % (p[1], vartype, p[3][0])
@@ -699,28 +706,35 @@ def p_termarraylist_expression_colon_expression(p):
# define list
def p_list_list_expression(p):
- 'list : list COMMA expression'
+ '''list : list COMMA expression
+ | list COMMA listcall'''
p[0] = '%s,%s' % (p[1], p[3][0])
def p_list_list_var_expression(p):
'''list : list COMMA VAR ASSIGNMENT expression
- | list COMMA MODEL ASSIGNMENT expression'''
+ | list COMMA MODEL ASSIGNMENT expression
+ | list COMMA VAR ASSIGNMENT listcall
+ | list COMMA MODEL ASSIGNMENT listcall'''
p[0] = '%s,%s=%s' % (p[1], p[3], p[5][0])
def p_list_list_in_expression(p):
- 'list : list COMMA IN ASSIGNMENT expression'
+ '''list : list COMMA IN ASSIGNMENT expression
+ | list COMMA IN ASSIGNMENT listcall'''
p[0] = '%s,%s1=%s' % (p[1], p[3], p[5][0])
def p_list_expression(p):
- 'list : expression'
+ '''list : expression
+ | listcall'''
p[0] = '%s' % (p[1][0])
def p_list_var_expression(p):
- 'list : VAR ASSIGNMENT expression'
+ '''list : VAR ASSIGNMENT expression
+ | VAR ASSIGNMENT listcall'''
p[0] = '%s=%s' % (p[1], p[3][0])
def p_list_in_expression(p):
- 'list : IN ASSIGNMENT expression'
+ '''list : IN ASSIGNMENT expression
+ | IN ASSIGNMENT listcall'''
p[0] = '%s1=%s' % (p[1], p[3][0])
def p_getvaluelist_getvaluelist_expression(p):
@@ -791,7 +805,8 @@ def p_expression_expression_addition_expression(p):
p[0] = ('%s%s%s' % (p[1][0], p[2], p[3][0]), vartype)
def p_expression_expression_comparison_expression(p):
- 'expression : expression COMPARISON expression'
+ '''expression : expression COMPARISON expression
+ | expression COMPARISON listcall'''
operator = p[2]
if operator == '<>' or operator == '~=':
operator = '!='
@@ -1025,8 +1040,8 @@ def p_term_function_parameters(p):
p[0] = ('%s(%s)' % (p[1][0], p[3]), p[1][1])
# list(2,3)
-def p_term_list_parameters(p):
- 'term : LIST OPENBRACKET list CLOSEBRACKET'
+def p_listcall_list_parameters(p):
+ 'listcall : LIST OPENBRACKET list CLOSEBRACKET'
p[0] = ('%s(%s)' % (p[1], p[3]), LIST_TYPE)
# gettext("abc")
@@ -1040,8 +1055,8 @@ def p_term_function(p):
p[0] = ('%s()' % (p[1][0]), p[1][1])
# list()
-def p_term_list(p):
- 'term : LIST OPENBRACKET CLOSEBRACKET'
+def p_listcall_list(p):
+ 'listcall : LIST OPENBRACKET CLOSEBRACKET'
p[0] = ('%s()' % (p[1]), LIST_TYPE)
# $