aboutsummaryrefslogtreecommitdiff
path: root/src/cffc.hff
diff options
context:
space:
mode:
Diffstat (limited to 'src/cffc.hff')
-rw-r--r--src/cffc.hff18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/cffc.hff b/src/cffc.hff
index d1d423f..066c1f7 100644
--- a/src/cffc.hff
+++ b/src/cffc.hff
@@ -19,8 +19,8 @@ struct Loc {
#[lax]
enum TokT : i32 {
// !sorted
- kw_alignof, kw_and, kw_as, kw_break, kw_case, kw_const,
- kw_continue, kw_def, kw_defer, kw_defmacro, kw_do,
+ kw_alignof, kw_and, kw_as, kw_bitfield, kw_break, kw_case,
+ kw_const, kw_continue, kw_def, kw_defer, kw_defmacro, kw_do,
kw_else, kw_enum, kw_extern, kw_fn,
kw_for, kw_if, kw_import, kw_let, kw_offsetof,
kw_or, kw_return, kw_sizeof, kw_static,
@@ -71,6 +71,12 @@ struct AggField {
struct EnumVal { name *const u8, i i64 }
+struct BitFField {
+ name *const u8,
+ ty *const Type,
+ off u16, size u16
+}
+
enum union TeplArg;
struct Type {
@@ -108,6 +114,12 @@ struct Type {
flds [#]AggField,
decls *Env,
},
+ BitF struct {
+ intty *const Type,
+ name *const u8,
+ id int,
+ flds [#]BitFField,
+ },
VaList,
},
@@ -178,9 +190,11 @@ struct Expr {
Cond struct { test *Expr, t *Expr, f *Expr },
Cast *Expr,
Dot struct { lhs *Expr, fld *const AggField },
+ BitDot struct { lhs *Expr, fld *const BitFField },
SLen *Expr,
SPtr *Expr,
EUTag *Expr,
+ BitRaw *Expr,
Index struct { lhs *Expr, rhs *Expr },
Slice struct { lhs *Expr, begin *Expr, end *Expr },
Call struct { lhs *Expr, args [#]Expr },