It doesn't do anything, or perhaps it's a forward declaration for the enum symbolType.
Perhaps it would help if you knew what an enum was: http://www.cprogramming.com/tutorial/enum.html
enums have much the same syntax as structs and unions. An enum has the basic form
Code:
enum tag {
data
} variable;
If the tag is present, it declares the enum as a type, but it doesn't actually create a variable. If the variable nam is present, an instance of the enu is declared, but you can't reference the enum type anywhere else because it doesn't have a tag. Both the tag and the variable can be present. (You can get anonymous enums, too, with neither a tag nor a variable name.) And you can have multiple variable names, just like structures.
The data in the enum is a list of names, with this basic form:
Code:
enum { value1, value2, valueN } ;
The first is assigned zero, unless you change it:
Code:
enum {
two = 2,
three
};
Succeeding values are one greater than the previous value, unless they are also assigned a value.
Code:
enum {
negative = -1,
positive = 1
};