X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=TODO;h=bfd54527f30a1ed9ec1a5bbd7159eaa6c60555e6;hb=0709f476ea7bc26f606aacfda4675c44fbba4fc4;hp=9a85373b68a1da5021a1bd04778d74d72a77287b;hpb=564a3cdfed70f6e7d7c75fa693ea2630b82cb8aa;p=cparser diff --git a/TODO b/TODO index 9a85373..bfd5452 100644 --- a/TODO +++ b/TODO @@ -1,9 +1,8 @@ Driver: -- add an -std= option (for c99, gnu99, ms at least) Refactoring: - eliminate target_architecture.h and replace with stuff in lang_features.h -- redo storage classes: so we can separate real from declared storage class +- create structures for variables and functions, removing the omnipotent declaration Lexer: - Add preprocessor code @@ -13,7 +12,6 @@ Lexer: Parser: - disallow storage class specifiers in struct/union members -- label: declaration; is no valid C99 but we parse it anyway - add constant folding code (optional, ast2firm already does it) - Refactor code, so code to handle number values (and strings?) is an own module and replacable @@ -25,6 +23,7 @@ Parser: - check semantic for functions declared/defined in global scope and declared again in a local scope - print initialisation type_path for initializer errors +- check switches for: double cases, all enums ast2firm: - handle non-constant initializers @@ -32,10 +31,16 @@ ast2firm: - handle bitfield members with 0 correctly (standard says they finish the current unit) +Missing Errors: +* label: declaration; is no valid C99 but we parse it anyway +* check switches for double cases + Missing Warnings: * dead assignments (int x = 5; x = bla(); -> dead assignment at x = 5;) * unused label - +* check switches for all enums values +* catch the if(k = b) cases, maybe require all assignments to be in parentheses + (but some few exceptions like toplevel, nested assignments) Spec-Status: (only test datasets tried yet)