summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsci2jsyacc.py31
1 files changed, 27 insertions, 4 deletions
diff --git a/sci2jsyacc.py b/sci2jsyacc.py
index 23c92649..11427935 100755
--- a/sci2jsyacc.py
+++ b/sci2jsyacc.py
@@ -49,6 +49,10 @@ def p_statement_assignment(p):
| function EOL'''
p[0] = str(p[1]) + '\n'
+def p_statement_selectstatement_selectstatement_casestatementblock(p):
+ 'statement : selectstatement casestatementblock END EOL'
+ p[0] = p[1] + p[2] + '}\n'
+
def p_statement_whilestatement_whilestatementblock(p):
'statement : whilestatementblock END EOL'
p[0] = p[1] + '}\n'
@@ -84,7 +88,15 @@ def p_statement_eol(p):
# end define statement
-# define while, if, elseif, else statement block
+# define case, while, if, elseif, else statement block
+
+def p_casestatementblock_casestatementblock_casestatement(p):
+ 'casestatementblock : casestatementblock casestatement statementblock'
+ p[0] = p[1] + p[2] + p[3]
+
+def p_casestatementblock_casestatement(p):
+ 'casestatementblock : casestatement statementblock'
+ p[0] = p[1] + p[2]
def p_whilestatementblock_whilestatement(p):
'whilestatementblock : whilestatement statementblock'
@@ -106,9 +118,20 @@ def p_elsestatementblock_elsestatement(p):
'elsestatementblock : elsestatement statementblock'
p[0] = p[1] + p[2]
-# end define if, elseif, else statement block
+# end define case, if, elseif, else statement block
+
+# define select, case, while, if, elseif, else
+
+def p_selectstatement_select(p):
+ '''selectstatement : SELECT expression EOL
+ | SELECT expression COMMA EOL'''
+ p[0] = 'switch (' + p[2] + ') {\n'
-# define while, if, elseif, else
+def p_casestatement_case(p):
+ '''casestatement : CASE expression THEN EOL
+ | CASE expression EOL
+ | CASE expression THEN COMMA'''
+ p[0] = 'case ' + p[2] + ':\n'
def p_whilestatement_while_do(p):
'''whilestatement : WHILE expression DO EOL
@@ -128,7 +151,7 @@ def p_elsestatement_else(p):
'''elsestatement : ELSE EOL'''
p[0] = '} else {\n'
-# end define while, if, elseif, else
+# end define select, case, while, if, elseif, else
# define assignment