[vala/0.54] parser: Split out Parser.parse_switch_section_statement()
- From: Rico Tzschichholz <ricotz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala/0.54] parser: Split out Parser.parse_switch_section_statement()
- Date: Sun, 14 Nov 2021 09:39:38 +0000 (UTC)
commit d4ddca9980647f449143a9b677bde1b1e04b5c20
Author: Rico Tzschichholz <ricotz ubuntu com>
Date: Tue Nov 2 13:22:00 2021 +0100
parser: Split out Parser.parse_switch_section_statement()
vala/valaparser.vala | 40 +++++++++++++++++++++++-----------------
1 file changed, 23 insertions(+), 17 deletions(-)
---
diff --git a/vala/valaparser.vala b/vala/valaparser.vala
index f71f6e89c..64266126b 100644
--- a/vala/valaparser.vala
+++ b/vala/valaparser.vala
@@ -2121,28 +2121,34 @@ public class Vala.Parser : CodeVisitor {
var stmt = new SwitchStatement (condition, get_src (begin));
expect (TokenType.OPEN_BRACE);
while (current () != TokenType.CLOSE_BRACE) {
- begin = get_location ();
- var section = new SwitchSection (get_src (begin));
- do {
- if (accept (TokenType.CASE)) {
- section.add_label (new SwitchLabel (parse_expression (), get_src
(begin)));
- while (current () == TokenType.COMMA) {
- expect (TokenType.COMMA);
- section.add_label (new SwitchLabel (parse_expression (),
get_src (begin)));
- }
- } else {
- expect (TokenType.DEFAULT);
- section.add_label (new SwitchLabel.with_default (get_src (begin)));
- }
- expect (TokenType.COLON);
- } while (current () == TokenType.CASE || current () == TokenType.DEFAULT);
- parse_statements (section);
- stmt.add_section (section);
+ stmt.add_section ((SwitchSection) parse_switch_section_statement ());
}
expect (TokenType.CLOSE_BRACE);
return stmt;
}
+ Statement parse_switch_section_statement () throws ParseError {
+ var begin = get_location ();
+ var section = new SwitchSection (get_src (begin));
+ do {
+ if (accept (TokenType.CASE)) {
+ section.add_label (new SwitchLabel (parse_expression (), get_src (begin)));
+ while (current () == TokenType.COMMA) {
+ expect (TokenType.COMMA);
+ section.add_label (new SwitchLabel (parse_expression (), get_src
(begin)));
+ }
+ expect (TokenType.COLON);
+ } else if (accept (TokenType.DEFAULT)) {
+ section.add_label (new SwitchLabel.with_default (get_src (begin)));
+ expect (TokenType.COLON);
+ } else {
+ throw new ParseError.SYNTAX ("expected `case' or `default' switch label");
+ }
+ } while (current () == TokenType.CASE || current () == TokenType.DEFAULT);
+ parse_statements (section);
+ return section;
+ }
+
Statement parse_while_statement () throws ParseError {
var begin = get_location ();
expect (TokenType.WHILE);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]