I'm using Bison to create a simple parser and have some trouble understanding the C code below. To me it doesn't look like a valid statement, but gcc comepiles it neatly and the code in the block executes on parsing error.
I'd really like to know what this actually means.
The code I refer to is from http://dinosaur.compilertools.net/bison/bison_7.html#SEC66 :
yyerror (s)
char *s;
{
// Some code here
}
That's K&R C
In modern C (C89/90 or C99) that would be:
int yyerror(char *s)
{
}
It means
int yyerror(char* s){
//some code here
}
code attached to your question is just another way of specifying function argument types.
GNU bison is now at version 2.5, see here. Why do you use such an ancient version (you refer to bison 1.25 from 1996)?
The yyerror
function is for error recovery. A simple example is here
This is old K&R C.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With