Towards a standard schema for C/C++

Developing a standard schema at the abstract syntax tree (AST) level for C/C++ to be used by reverse engineering and reengineering tools is a complex and difficult problem. In this paper we present a catalogue of issues that need to be considered in order to design a solution. Three categories of issues are discussed. Lexical structure is the first category and pertains to characteristics of the source code, such as spaces and comments. The second category, syntax, includes both the mundane and hard problems in the C++ programming language. The final category is semantics and covers aspects such as naming and reference resolution. Example solutions to these challenges are provided from the Datrix schema from Bell Canada and the Columbus schema from University of Szeged. The paper concludes with a discussion of lessons learnt and plans for future work on a C/C++AST standard schema.

[1]  Kostas Kontogiannis,et al.  Towards portable source code representations using XML , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[2]  Rudolf Ferenc,et al.  Columbus { Tool for Reverse Engineering Large Object Oriented Software Systems , 2001 .

[3]  Richard C. Holt,et al.  Union schemas as a basis for a C++ extractor , 2001, Proceedings Eighth Working Conference on Reverse Engineering.

[4]  Andy Schürr,et al.  GXL: toward a standard exchange format , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[5]  Jean-Francois Girard,et al.  An intermediate representation for integrating reverse engineering analyses , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[6]  Michael S. Karasick The architecture of Montana: an open and extensible programming environment with an incremental C++ compiler , 1998, SIGSOFT '98/FSE-6.

[7]  Bruno Laguë,et al.  DATRIX Abstract Semantic Graph Reference Manual , 1999 .

[8]  Susan L. Graham,et al.  Designing an XML-based exchange format for Harmonia , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[9]  Rudolf Ferenc A short introduction to the Columbus Proposal for a standard C/C++ Schema , 2001 .

[10]  Michael W. Godfrey,et al.  Connecting architecture reconstruction frameworks , 2000, Inf. Softw. Technol..

[11]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[12]  Kai Koskimies,et al.  Environment for Software Assessment , 1999, ECOOP Workshops.