The following table identifies supported and not supported P416 language features.
Context | Supported | Not Supported |
---|---|---|
Data Types |
void (extern functions only) match_kind (architecture defined) error (architecture and user defined) Integers (unsigned: bit and varbit) bool |
void (others) match_kind (user defined) ParserTimeout error String ( @name “…”) Integers (others) |
Derived Types |
enum (architecture specific) header (and header stack) struct package (architecture specific) typedef const |
enum (user defined) header (push and pop methods) header_union tuple package (user defined) |
Expressions |
Cast Variables Operators (!, ~, -, +, *, >>, <<, &, ^, |) |
Operators (/, %, ?) |
Statements |
assign if, else switch block |
exit return
|
Parsing |
state extract (fixed width extraction) extract (variable width extraction) transition (user defined) transition (accept and reject) select (no overlap with mask/range) verify |
lookahead (extract to underscore, or advance) length select with overlapsskipping bits (mask/range) sub-parsers |
Control |
action table (key, actions, default_action, entries, size and implementation statement) emit applyextern (user) Externs (built-in counter) |
Externs (checksum, register etc.) |
Note: Conditional statements are not supported inside actions.