In a non-object oriented language like C you need to use global variables.
parser.c will declare things like the current line buffer as
static char current_line[MAX_LINE_LEN];
so that other source files won't accidentally modify them. Functions in parser.c are allowed to access the line buffer.
You should have a parser.h file that declares all the functions, data types, and constants that are the public interface to the parser code.
In an object oriented language like C++ these globals become static member variables in the class definition and are automatically hidden from functions that are not class methods.
--Mark