Charlie Gordon
Charlie Gordon
* `InitList` expressions can be used in assignments, function arguments and return values. * add `Expr.isAssignment()` and `Expr.isInitlistAssignment()` to simplify tests * enum values are automatically scoped in the same...
AST values: * add `getValue()` type methods for literal expr nodes, returning a `Value` * add `Value.castAs()` type method * add `ValueKind.Error` for invalid result and evaluation errors * add...
Use case of identifier to resolve ambiguity at parse time for `sizeof(a[x])`: * accept `sizeof(Name[10])` as size of array of 10 objects of type `Name` * and `sizeof(name[10])` as size...
* use style names instead of hard-coded color names * customize color output via environment variable `C2_COLORS`: eg: `C2_COLORS=none`, `C2_COLORS="error:bright-blue`, `C2_COLORS="error:#d0d0d0` * use cache to multiple calls to `unix.isatty()` and...
* use single `on_error` handler with error level and message arguments * remove `Warning` token type, never returned anyway. * improve `#error` and `#warning` message parsing consistency * make `num_error`...
* add support for builtin properties * handle `min`, `max` and `width` for integer types * handle `min`, `max`, `width`, `inf`, `nan` for floating point types * allow builtin names...
* accept commas in variable declarations and struct member definitions * type must not be a pointer type nor an array type * add tests
There is redundant code in the function `Builder.applyAttribute`, can it be removed or was there a reason to make a special case for `PrintfFormat` that was not completed? ```c fn...
The current parser cannot fully disambiguate some expressions that may both be a type and an expression: * In ```sizeof(A[10])```, `A` can be a type and the expression evaluates to...
The **c2** module defines aliases for the current target C types. The name **c2** seems inconsistent for this, **ctypes** would be more appropriate. Using the actual spelling of the C...