From 535dc8434cd9b60d064673e36e2c5e478f6ffe9a Mon Sep 17 00:00:00 2001 From: Sei Lisa Date: Fri, 13 Mar 2015 05:16:22 +0100 Subject: [PATCH] Allow a code block instead of a ':' as terminator for 'case' and 'default'. For Firestorm compatibility. --- lslopt/lslparse.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lslopt/lslparse.py b/lslopt/lslparse.py index bc48cb9..9c91db4 100644 --- a/lslopt/lslparse.py +++ b/lslopt/lslparse.py @@ -1299,7 +1299,8 @@ list lazy_list_set(list L, integer i, list v) return_statement: RETURN ';' | RETURN expression ';' declaration_statement: TYPE lvalue ';' | TYPE lvalue '=' expression ';' switch_statement: SWITCH '(' expression ')' code_block - case_statement: CASE expression ':' | DEFAULT ':' + case_statement: CASE expression ':' | CASE expression code_block + | DEFAULT ':' | DEFAULT code_block break_statement: BREAK ';' continue_statement: CONTINUE ';' @@ -1616,8 +1617,10 @@ list lazy_list_set(list L, integer i, list v) raise EParseCaseNotAllowed(self, u"case") self.NextToken() expr = self.Parse_expression() - self.expect(':') - self.NextToken() + if self.tok[0] == ':': + self.NextToken() + elif self.tok[0] != '{': + raise EParseSyntax(self) return {'nt':'CASE', 't':None, 'ch':[expr]} if tok0 == 'DEFAULT': @@ -1630,8 +1633,10 @@ list lazy_list_set(list L, integer i, list v) # labels. Nothing we can do about that. raise EParseCaseNotAllowed(self, u"default") self.NextToken() - self.expect(':') - self.NextToken() + if self.tok[0] == ':': + self.NextToken() + elif self.tok[0] != '{': + raise EParseSyntax(self) return {'nt':'DEFAULTCASE', 't':None} # else fall through to eventually fail