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

In progress.

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 entriesLexical rulesGrammar rulesMacros**ConstraintsExamples
QTG parser stores line numbers
Line numbers are stored with entities in DBN/A***
Lookup calls are being traced as Kahina steps associated with line number
QTypeLayerDecider puts lookup calls on layer 0N/A*
Lookup steps tested in practice and deemed useful in their context

* These lookups happen inside mgu/8, thus don't belong on layer 0.

** Synonyms: sorts, relational constraints

*** Examples are not compiled, so there is just grammar:lexample/2, no separate database predicate, grammar:db_example/_.

Selection of predicates to trace as steps, layering

In progress.

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: Everything is on level 1, except for selected cornerstones that are on level 0. These are:

  • steps whose predicate has arity 0 and that are not dominated by any step with higher arity (QTypes's compile process is coarsely divided into such predicates) ✔
  • the "important" steps defined in the previous paragraph ✔

Feature structure display

In progress.

  • identify steps that are associated with specific feature structures/local trees whose node labels are FSs, resp. identify arguments of traced predicates that contain feature structures
  • 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 ✔
  • customize the transmission of step information accordingly, using new kahinasicstus_breakpoint_action options ✔

Chart display for Left-Corner Parsing

In progress.

  • make the chart display more freely configurable ✔
  • specialized variant for Left-Corner Parsing instead of Bottom-Up-Parsing
  • support import/export of charts for purposes of analysis and comparison
  • independent chart display for lean debugging & inspection of exported charts

Reworking of control flow display

Not started yet.

  • 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
  • visualization of delayed goals, leading to a complete explanation of control flow (does not apply?)

UI/workflow integration

In progress.

  • 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 ✔
  • context-dependent control components for QType
  • define QType-specific feedback information for the message console

Architecture extensions

In progress.

  • Exposure of interfaces to provide more flexibility and allow for more behavior ✔
  • Harmonizing and systematizing the central interfaces for more maintainability

Extensions to the breakpoint system

Not started yet.

  • Definition and administration of breakpoint profiles.
  • Support for breakpoint templates.
  • Predefined QType-specific breakpoint templates.
  • Generation of grammar-specific breakpoint profiles.

Documentation

In Progress.

  • Documentation of the adapted view components.
  • User's manual documenting the entire resulting debugging system.
  • Javadoc for QType-relevant parts of Kahina to facilitate later modifications