aboutsummaryrefslogtreecommitdiff
path: root/bootstrap/all.h
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2022-08-08 08:48:21 +0200
committerlemon <lsof@mailbox.org>2022-08-08 08:50:18 +0200
commit215c18ebc86b116827d3af19ca0779316e1a0e15 (patch)
tree472683c87148646856b73c0af09e64768aa550af /bootstrap/all.h
parent8e94bb58ca91b26c0916210a179157b1280489be (diff)
break & continue
Diffstat (limited to 'bootstrap/all.h')
-rw-r--r--bootstrap/all.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/bootstrap/all.h b/bootstrap/all.h
index 3145674..1629455 100644
--- a/bootstrap/all.h
+++ b/bootstrap/all.h
@@ -35,6 +35,7 @@ struct span {
_(break) \
_(case) \
_(const) \
+ _(continue) \
_(def) \
_(defmacro) \
_(do) \
@@ -74,6 +75,7 @@ enum toktype {
TKgensym,
TKtype,
TKexpr,
+ TKlabel,
TKeof,
};
@@ -137,6 +139,7 @@ struct parser {
bool save_envage;
int envage;
int varid;
+ int loopid, curloop;
};
enum typetype {
@@ -237,6 +240,7 @@ enum decltype {
Ddef,
Dmacro,
Dtepl,
+ Dlabel,
};
struct decl {
@@ -268,6 +272,7 @@ struct decl {
struct toktree toks;
int envage;
} tepl;
+ int loopid;
};
int age;
};
@@ -394,6 +399,8 @@ enum stmttype {
Siswitch,
Sreturn,
Seuswitch,
+ Sbreak,
+ Scontinue,
};
struct iswitchcase {
@@ -424,6 +431,7 @@ struct stmt {
} ifelse;
struct {
slice_t(struct stmt) ini;
+ int id;
struct expr test;
struct expr *next;
struct blockstmt body;
@@ -440,6 +448,9 @@ struct stmt {
bool byptr;
} euswitch;
struct expr *retex;
+ struct {
+ int id;
+ } brkcon;
};
};