posted on 2024-08-01, 00:00authored byMelburne Rodrigues
A vast majority of software running on a computer has been processed by a compiler. Given their ubiquitous nature and critical role in the software development process, ensuring their correctness, reliability, and performance is of great importance, yet writing comprehensive tests for compilers remains a challenge. Manually writing test programs is labor-intensive and prone to biases and errors. While existing test program generators are capable of generating programs with complex statements, they often lack versatility and extensibility across different programming languages. We present GEMCEAS (Grammar Enhanced Monte Carlo Engine for App Simulation), a language-independent approach to generating random programs that serve as benchmarks for testing compilers and other program analysis tools. GEMCEAS accepts an EBNF-style language grammar to ensure the generated programs are syntactically correct, and references a language specification encoded as a Prolog knowledge base for semantic validation. We implement our tool for Java and a simple language for arithmetic expressions, and discuss the results of our experiments in this thesis.