Gramin: a system for incremental learning of programming language grammars

  • Authors:
  • Diptikalyan Saha;Vishal Narula

  • Affiliations:
  • IBM Research, India, New Delhi;IIT Delhi, Hauz Khas, New Delhi

  • Venue:
  • Proceedings of the 4th India Software Engineering Conference
  • Year:
  • 2011

Quantified Score

Hi-index 0.00

Visualization

Abstract

Major software vendors now offer software maintenance as service. Bug detection and removal are major tasks in the maintenance phase of the software life cycle. Vendors often rely on in-house built analysis tools for software fault localization. Programming language grammar is an absolute requirement for building such tools, especially for platforms which are built by third parties. However, the grammar may not be publicly available. Grammars obtained from language reference manuals are often not complete due to language evolution. Manual fixes of such a grammar is a cumbersome task, and requires special expertise. Grammar inference techniques have been traditionally used to infer grammar from the strings of a language, in the context of computational linguistic, but have not been successful in learning industry standard complex programming language grammars. In this paper we present a programming language grammar inference system, called Gramin, which is used to infer grammar from sample programs. Gramin employs various optimizations to make grammar inference practical in the domain of programming languages. We demonstrate the effectiveness of the Gramin system by inferring a programming language grammar used in industry, and not available in public domain.