There are many measurements that can be taken on a grammar, metrics that can be used to analyse them, assess them, visualise them, even compare them. In this extension, you start with a clean grammar, perform calculations based on its contents and present them in a way that makes sense to the user.
Advanced execution of this project will involve some form of fact extraction and smell detection.
Grammars are not always written by humans: they can be inferred by an algorithm: completely or partially, in a form of an automaton or directly of grammar production rules. Research shows that flat out inference of grammars based on just samples is slow and unreliable, but it works realistically well if inference is done partially or based on trees or token models. There is no current component of GrammarLab that does this.
Grammars are written in a variety of notations, and translations from one to another are frequently needed when a grammar engineer finds a suitable grammar in one notation but wants to use it with a toolkit that requires another.
Advanced execution of this project will involve notation analysis and feature modelling.
More often than not, changes to a grammar can be expressed in an abstract policy or convention: lowercase nonterminal names, lack of left recursion, etc. Automatically inferred large scale adjustments like these are called grammar mutations and are implemented in a component called SLEIR.
Advanced execution of this project will involve empirical evaluation based on improving quality of some extracted grammars of the Grammar Zoo.
Grammars found in books and other non-executable sources could be a nice source of information, if they did not contain so many errors. There are heuristics that help extract a proper grammar from a lexically unreliable source, implemented in a Python component called Grammar Hunter.
Advanced execution of this project will involve empirical evaluation based on turning some fetched grammars of the Grammar Zoo into extracted ones.
Grammars can be used as guides to generate test data (each test case is a program) representing a language. Such functionality was implemented a couple of times outside GrammarLab in Java+ANTLR, source code is available.
Advanced execution of this project will involve generation of negative test cases.
Unlike grammar mutations where changes are inferred based on the grammar, there are some transformations that are needed to be specified manually and precisely. Typical uses of these include expressing differences between two conceptually different implementations of the same language, or expressing changes between language versions. GrammarLab includes a suite of such transformation operators called XBGF, a previous implementation of most of them is available in Prolog as well.
Activities
A half-day tutorial about GrammarLab was given at MoDELS 2013 in Miami: if you missed it, you can still have a look at the slides.
Each of the papers published about GrammarLab, except for journal ones, had their corresponding talks with slides available.
A number of PEM Colloquium presentations concerned GrammarLab or research fragments that later became its components: