diff options
| author | 2022-08-26 22:08:52 +0200 | |
|---|---|---|
| committer | 2022-08-26 22:11:30 +0200 | |
| commit | 4a7d610bb9a441f6fb7f88caaa803c1c85e4fcfd (patch) | |
| tree | 3ac01c9be375f30efd09f0a670da74f886ad44ca /src/cffc.hff | |
| parent | 475125eaba2852f88a4ee8d9be64c8b4964df3a9 (diff) | |
bitfields
Diffstat (limited to 'src/cffc.hff')
| -rw-r--r-- | src/cffc.hff | 18 |
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 }, |