rickythefox
rickythefox

Reputation: 6851

Weird C code in Bison (yyerror)

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
}

Upvotes: 5

Views: 768

Answers (4)

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

Upvotes: 1

Some programmer dude
Some programmer dude

Reputation: 409364

This is old K&R C.

Upvotes: 3

KCH
KCH

Reputation: 2854

It means

int yyerror(char* s){
  //some code here
}

code attached to your question is just another way of specifying function argument types.

Upvotes: 4

Šimon Tóth
Šimon Tóth

Reputation: 36451

That's K&R C

In modern C (C89/90 or C99) that would be:

int yyerror(char *s)
{
}

Upvotes: 8

Related Questions