Kahina for QType status page
A Kahina-based graphical debugger is currently being developed for the grammar development system QType (see http://user.phil-fak.uni-duesseldorf.de/~rumpf/talks/index_talks.htm for some talks about it). This page is for keeping track of the progress of certain individual features. It is not meant to be a complete overview of all features. Since QType is not publicly available, this page is presumably of little interest to the general public.
Grammar-based source code editor
Done.
Kahina's source code editor highlights lines in source code files for corresponding execution steps. At present, most of the steps highlight corresponding lines in QType's Prolog source code. Steps corresponding to the lookup of lexical entries, lexical rules, grammar rules, macros, constraints and examples will in the future be associated with lines in the QType grammar (QTG) file that is being compiled or used for parsing.
Lexical entries | Lexical rules | Grammar rules | Macros | Constraints | Examples | |
QTG parser stores line numbers with uncompiled entities | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Lookup calls of uncompiled entities are being traced as Kahina steps associated with line number | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Compiler stores line numbers with compiled entities | ✔ | in last argument of db:lexrule/4 | ✔ | ✔ | ✔ | N/A* |
Lookup calls of compiled entities are being traced as Kahina steps associated with line number | in lexrule:apply_lexrules/4 and in parser:lc/5 | in lexrule:apply_lexrules/4* | in parser:lc_complete/8 | in descr:save_call_macro/7 etc. | ✔ | N/A |
Lookup steps tested in practice and deemed useful in their context | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Synonyms: sorts, relational constraints
* Examples are not compiled, so there is just grammar:lexample/2, no separate database predicate, grammar:db_example/_.
All constraints for each type are compiled to a single bunch of Prolog code; we introduced descr:start_constraint/1 calls into this bunch that mark the beginning of each new constraint and carry the line number information.
* Not visible during parsing, the new grammar:db_word/4 entries created by applying lexical rules still carry the line number of the original word.
Selection of predicates to trace as steps, layering
Done.
Initial selection of predicates (automatically generated from QType source code): those with at least one clause that contains a msg/3 call. Minus some very frequent and not very informative ones, plus some important ones (e.g. lookup calls for grammar entities, see above, and all the predicates that make up the core of the LC parser).
Layering (defined in org.kahina.qtype.data.tree.QTypeLayerDecider): Everything is on level 1, except for selected cornerstones that are on level 0 unless they are already dominated in the call tree by a step with layer > 0. These are:
- steps whose predicate has arity 0 (QTypes's compile process is coarsely divided into such predicates)
- steps whose predicates is of arity > 0 and whose functor is one of compile_grammar, lc, lc_complete, lc_list, lexentry_existence, tokenize_and_parse_the_external_syntax
Feature structure display
Done.
- understand QType's internal feature structure representation ✔
- write predicates to generate Grisu strings from it ✔
- test and debug them ✔
- extend Kahina's data structures and view components for Prolog terms to display FSs ✔
- transmit Grisu strings to GUI ✔
Chart display for Left-Corner Parsing
Done.
- make the chart display more freely configurable ✔
- specialized variant for Left-Corner Parsing instead of Bottom-Up-Parsing ✔
- support export of charts for purposes of analysis and comparison ✔
Reworking of control flow display
Done.
- optimization of user interface and display options for QType-specific control flow patterns ✔
- experiment with more dynamic ways of handling the layering, aiming towards increased intuitiveness ✔
UI/workflow integration
Done.
- The new commands trace/notrace allow to switch graphical tracing with Kahina on/off from the QType prompt. ✔
- As long as tracing isn't used, there should be no dependency on Kahina: http://kahina.org/trac/ticket/75 ✔
- possibility to start Kahina from QType (both from prompt and on startup via command line) without tracing a specific command ✔
- possibility to start compilation and left-corner parsing from GUI ✔
- define QType-specific feedback information for the message console ✔
- context-dependent control components for QType ✔
Architecture extensions
Done.
- Exposure of interfaces to provide more flexibility and allow for more behavior ✔
- Harmonizing and systematizing the central interfaces for more maintainability ✔
Extensions to the control agent system
Done.
- Definition and administration of control agent profiles. ✔
- Predefined QType-specific control agents. ✔
Documentation
In Progress.
- Writing a tutorial for easy access. ✔
- Documentation of the adapted view components.
- User's manual documenting the entire resulting debugging system.