I can't remember to have seen an error message mentioning an
"unenclosed token" from a C compiler, so I assume that it
comes from the make.sh shell script (and in the future please
post complete error messages exactly as you got them, not
something you rephrased). Moreover the C files look more or
less ok (except the use of XMLCALL, that may be needed for the
library to get it to compile under some circumstnces, but not
for your program, and that you shouldn't cast the return value
of malloc() and you must check it), at least there's nothing
on the first lines of them that should trigger such an error
message. But if it's from the shell script you should be asking
somewhere else, e.g. in comp.unix.programmer or comp.unix.shell,
where shell programing is more on-topic. (And, no, I had a look
at the shell script and there's also nothing that would make me
expect an error message about an "unclosed token". The thing I
would definitely change is to move the '-lexpat' to the end of
the gcc line.)
But I am rather sure that your problem is neither related to
the make script nor the compiling of the program, but that it
is an error you get when running the resulting program. If
that's the case it's also rather off-topic here since it's
related to the use of the expat library and not something
concerning C. There are several mailing list for the expat
library, see
http://mail.libexpat.org/mailman/listinfo
and some issues with an error message about an "unclosed token
at line 1" already seem to have been discussed there some time
ago. Just do a Google search for "unclosed token at line 1".
If that doesn't help you, you probably best ask there.
Regards, Jens