| April 14, 2002: |
| |
| I haven't worked on Yapps for a while, mainly because I spent all my energy |
| on trying to graduate. Now that I've finished school, I have several projects |
| I want to start working on again, including Yapps. |
| |
| Notes for myself: |
| |
| Add a debugging mode that helps you understand how the grammar |
| is constructed and how things are being parsed |
| Look into an English output mode that would use natural language |
| to describe a grammar |
| Optimize unused variables |
| Add a convenience to automatically gather up the values returned |
| from subpatterns, put them into a list, and return them |
| Improve the documentation |
| Write some larger examples |
| Get rid of old-style regex support |
| Use SRE's lex support to speed up lexing (this may be hard given that |
| yapps allows for context-sensitive lexers) |
| Look over Dan Connoly's experience with Yapps (bugs, frustrations, etc.) |
| and see what improvements could be made |
| Add something to pretty-print the grammar (without the actions) |
| Maybe conditionals? Follow this rule only if <condition> holds. |
| But this would be useful mainly when multiple rules match, and we |
| want the first matching rule. The conditional would mean we skip to |
| the next rule. Maybe this is part of the attribute grammar system, |
| where rule X<0> can be specified separately from X<N>. |
| Convenience functions that could build return values for all rules |
| without specifying the code for each rule individually |
| Patterns (abstractions over rules) -- for example, comma separated values |
| have a certain rule pattern that gets replicated all over the place |
| "Gather" mode that simply outputs the return values for certain nodes. |
| For example, if you just want all expressions, you could ask yapps |
| to gather the results of the 'expr' rule into a list. This would |
| ignore all the higher level structure. |
| Look at everyone's Yapps grammars, and come up with larger examples |
| http://www.w3.org/2000/10/swap/SemEnglish.g |
| http://www.w3.org/2000/10/swap/kifExpr.g |
| http://www.w3.org/2000/10/swap/rdfn3.g |
| It would be nice if you could feed text into Yapps (push model) instead |
| of Yapps reading text out of a string (pull model). However, I think |
| that would make the resulting parser code mostly unreadable |
| (like yacc, etc.). Coroutines/stacklesspython may be the answer. |
| |
| |