Inference of static semantics for incomplete C programs.
No Thumbnail Available
Date
2018
Journal Title
Journal ISSN
Volume Title
Publisher
Abstract
Incomplete source code naturally emerges in software development: during the design phase, while evolving,
testing and analyzing programs. Therefore, the ability to understand partial programs is a valuable asset.
However, this problem is still unsolved in the C programming language. Difficulties stem from the fact that
parsing C requires, not only syntax, but also semantic information. Furthermore, inferring types so that they
respect C’s type system is a challenging task. In this paper we present a technique that lets us solve these
problems. We provide a unification-based type inference capable of dealing with C intricacies. The ideas we
present let us reconstruct partial C programs into complete well-typed ones. Such program reconstruction has
several applications: enabling static analysis tools in scenarios where software components may be absent;
improving static analysis tools that do not rely on build-specifications; allowing stub-generation and testing
tools to work on snippets; and assisting programmers on the extraction of reusable data-structures out of the
program parts that use them. Our evaluation is performed on source code from a variety of C libraries such as
GNU’s Coreutils, GNULib, GNOME’s GLib, and GDSL; on implementations from Sedgewick’s books; and on
snippets from popular open-source projects like CPython, FreeBSD, and Git.
Description
Keywords
Partial programs, Parsing, Type inference
Citation
MELO, L. T. C. et al. Inference of static semantics for incomplete C programs. Proceedings of the ACM on Programming Languages, v. 2, p. 1-28, 2017. Disponível em: <https://dl.acm.org/citation.cfm?id=3158117>. Acesso em: 15 fev. 2019.