Title :
Compiler generation tools for C#
Author :
Woss, A. ; Löberbauer, M. ; Mössenböck, H.
Author_Institution :
Inst. for Practical Comput. Sci., Johannes Kepler Univ. Linz, Austria
Abstract :
Recursive descent parsing has the advantage of more convenient semantic processing than in the case of bottom-up parsing. However, it is limited to LL(1) grammars, which has often prevented its use for popular programming languages, such as Java or C#. The authors extended their compiler generator Coco/R, which generates recursive descent parsers, so that the user can specify rules for LL(1) conflict resolution. The simple technique works by evaluating user-defined Boolean expressions to allow the parser to make its parsing decisions where a one-symbol lookahead does not suffice. Thus multi-symbol lookahead or even semantic information can now guide the parsing process as well. Using their extended compiler generator, the authors implemented a compiler front end for C# that can be used as a framework for implementing a variety of tools, two of which are described in more detail: a white-box testing tool that measures path coverage, and a performance hint tool that evaluates source code according to user-defined rules about performance enhancements or coding style.
Keywords :
Boolean algebra; C language; compiler generators; program testing; software performance evaluation; C#; Coco/R; LL(1) conflict resolution; coding style; compiler front end; compiler generation tools; multi-symbol lookahead; path coverage; performance enhancements; performance hint tool; recursive descent parsers; source code; user-defined Boolean expressions; white-box testing tool;
Journal_Title :
Software, IEE Proceedings -
DOI :
10.1049/ip-sen:20030984