2011 · 283 citations · 54 references
ComputingComputer EngineeringComputer ScienceCompilersProgramming LanguagesSoftware EngineeringParsingSyntactic AnalysisSyntax AnalysisSyntax ParsingType CheckingType SystemsConditional CompilationData ParsingHeuristicsLexical Analysis In Compiler Front EndsLexical FeaturesParser DesignRuntime Type CheckingStatic Type Checking
In many projects, lexical preprocessors are used to manage different variants of the project (using conditional compilation) and to define compile-time code transformations (using macros). Unfortunately, while being a simple way to implement variability, conditional compilation and lexical macros hinder automatic analysis, even though such analysis is urgently needed to combat variability-induced complexity. To analyze code with its variability, we need to parse it without preprocessing it. However, current parsing solutions use unsound heuristics, support only a subset of the language, or suffer from exponential explosion. As part of the TypeChef project, we contribute a novel variability-aware parser that can parse almost all unpreprocessed code without heuristics in practicable time. Beyond the obvious task of detecting syntax errors, our parser paves the road for further analysis, such as variability-aware type checking. We implement variability-aware parsers for Java and GNU C and demonstrate practicability by parsing the product line MobileMedia and the entire X86 architecture of the Linux kernel with 6065 variable features.
54
Granularity in software product lines
Christian Kästner, Sven Apel, Martin Kuhlemann · 2008 · 495 citations
Model checking <u>lots</u> of systems
Patrick Heymans, Pierre‐Yves Schobbens, Axel Legay et al. · 2010 · 363 citations