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