module languages/cpp/syntax/If
imports languages/cpp/syntax/Expr
languages/cpp/syntax/Text
exports
context-free syntax
if:If then:Text elif-parts:ElifParts? else-part:ElsePart?
Endif -> Line {cons("if-group")}
"#" "if" expr:Expr NewLine -> If {cons("if")}
"#" "ifdef" id:Id NewLine -> If {cons("ifdef")}
"#" "ifndef" id:Id NewLine -> If {cons("ifndef")}
"#" "elif" expr:Expr NewLine -> Elif
Elif text:Text -> ElifPart
ElifPart+ -> ElifParts
"#" "else" NewLine text:Text -> ElsePart
"#" "endif" NewLine -> Endif