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.)