Warning, /kdevelop/kdevelop-pg-qt/TODO is written in an unsupported language. File is not indexed.
0001 TODO list for kdev-pg 0002 --------------------- 0003 0004 See also: http://techbase.kde.org/Development/KDevelop-PG-Qt_Development_Guide#Ideas_for_the_future 0005 0006 - Inside kdev-pg, seperate the parser ast from the struct member ast. 0007 The latter should be far easier to access from code generating visitors, 0008 so it would be awesome to have one. 0009 0010 - Provide a FAIL("errormessage") macro which exits the currently running rule 0011 or try/* block with an error. That will add many #define/#undef directives 0012 to the generated code, but makes the grammar author's life more bearable. 0013 0014 - Make a distinction between try/* blocks that are expected fail and ones that 0015 should not fail. For example, if "try/recover(#statement=block_statement)*" 0016 fails, then we want an error message, and parsing should continue anyways. 0017 On the other hand, when we have something like 0018 "try/rollback(cast_expression=cast_expression)" we don't know if there's 0019 really a cast_expression supposed to come up, it's just trial-and-error. 0020 In case it's not a cast_expression, we don't want an error here. 0021 0022 - Introduce abstract rules, like 0023 "@abstract modifier [ member variable mod: unsigned int; ] ;;" 0024 and also provide an opportunity to assign default values to those members. 0025 Derived rules would then inherit from the abstract rule, like 0026 "(...rule...) -> accessor_modifier is a modifier ;;" 0027 Make sure that every member of the abstract rule is either declared again 0028 in the derived rule's variable section, or directly assigned in its body. 0029 So that grammar authors don't forget to have a valid value for inherited 0030 member variables. 0031 (I think this one's pretty important, as it has the potential to vastly 0032 simplify and overall improve the generated ast. So that the same structures 0033 in differently parsed variations still return the same node struct.) 0034 0035 - Introduce rule proxies in order to improve the generated ast, like 0036 "value=variable_declaration SEMICOLON -> variable_declaration_statement is a variable_declaration proxy ;;" 0037 which cuts down a bit on the number of unnecessarily generated nodes. 0038 In this case, there would be no variable_declaration_statement node, 0039 instead it's just passing on the variable_declaration node to its 0040 actual parsing function, without allocating a node of its own. 0041 0042 - Inside kdev-pg, make symbols point to rules, not the other way round. 0043 That would make FIRST/FOLLOW set inheritance easier than it is now, 0044 and allows for individual properties of symbols. 0045 0046 - Proper LL(k) support? Roberto, where are you? 0047 0048 - Make it easier to transform the AST with manually written code. 0049 0050 - Evaluate if it makes sense to move kdev-pg from its yacc grammar to a 0051 kdev-pg grammar, including the implied effects on the then autogenerated 0052 visitor class and its subclasses. (The struct member ast would still need 0053 to be generated manually, as there is no input file for it.)