%{
#include <stdio.h>
int block_count = 0; // Counter for blocks
%}
%%
begin {
block_count++;
printf("Block %d begins.\n", block_count);
}
end {
printf("Block %d ends.\n", block_count);
block_count--;
}
.|\n ; // Ignore all other characters
%%
int main() {
printf("Enter your input (Ctrl+D to end):\n");
yylex(); // Start lexical analysis
if (block_count == 0) {
printf("All blocks processed successfully.\n");
} else {
printf("Error: Unmatched 'begin' and 'end'.\n");
}
return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CmludCBibG9ja19jb3VudCA9IDA7IC8vIENvdW50ZXIgZm9yIGJsb2NrcwolfQoKJSUKYmVnaW4gICB7IAogICAgICAgICAgICBibG9ja19jb3VudCsrOyAKICAgICAgICAgICAgcHJpbnRmKCJCbG9jayAlZCBiZWdpbnMuXG4iLCBibG9ja19jb3VudCk7IAogICAgICAgIH0KZW5kICAgICB7IAogICAgICAgICAgICBwcmludGYoIkJsb2NrICVkIGVuZHMuXG4iLCBibG9ja19jb3VudCk7IAogICAgICAgICAgICBibG9ja19jb3VudC0tOyAKICAgICAgICB9Ci58XG4gICAgOyAvLyBJZ25vcmUgYWxsIG90aGVyIGNoYXJhY3RlcnMKJSUKCmludCBtYWluKCkgewogICAgcHJpbnRmKCJFbnRlciB5b3VyIGlucHV0IChDdHJsK0QgdG8gZW5kKTpcbiIpOwogICAgeXlsZXgoKTsgLy8gU3RhcnQgbGV4aWNhbCBhbmFseXNpcwogICAgaWYgKGJsb2NrX2NvdW50ID09IDApIHsKICAgICAgICBwcmludGYoIkFsbCBibG9ja3MgcHJvY2Vzc2VkIHN1Y2Nlc3NmdWxseS5cbiIpOwogICAgfSBlbHNlIHsKICAgICAgICBwcmludGYoIkVycm9yOiBVbm1hdGNoZWQgJ2JlZ2luJyBhbmQgJ2VuZCcuXG4iKTsKICAgIH0KICAgIHJldHVybiAwOwp9Cgo=