Kahina for QType status page

A Kahina-based graphical debugger is currently being developed for the grammar development system QType (see 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


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 rulesMacrosConstraintsExamples
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 entitiesin last argument of db:lexrule/4N/A*
Lookup calls of compiled entities are being traced as Kahina steps associated with line numberin lexrule:apply_lexrules/4 and in parser:lc/5in lexrule:apply_lexrules/4*in parser:lc_complete/8in 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


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


  • 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


  • 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


  • 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


  • 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:
  • 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


  • 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


  • Definition and administration of control agent profiles. ✔
  • Predefined QType-specific control agents. ✔


In Progress.

  • Writing a tutorial for easy access. ✔
  • Documentation of the adapted view components.
  • User's manual documenting the entire resulting debugging system.
Last modified 4 years ago Last modified on May 18, 2013, 11:34:09 PM