Adding c99_parse()

This commit is contained in:
Pierre Pronchery 2008-03-04 14:38:32 +00:00
parent 8878a2564b
commit 56f77e7b48
2 changed files with 25 additions and 9 deletions

View File

@ -143,6 +143,7 @@ static int _c99_do_c(Prefs * prefs, FILE * outfp, char const * infile)
int ret = 0; int ret = 0;
size_t len; size_t len;
char * o = NULL; char * o = NULL;
Cpp * cpp;
if(prefs->outfile == NULL) if(prefs->outfile == NULL)
{ {
@ -159,7 +160,10 @@ static int _c99_do_c(Prefs * prefs, FILE * outfp, char const * infile)
return 1; return 1;
} }
} }
/* FIXME implement */ if((cpp = cpp_new(infile, CPP_FILTER_TRIGRAPH)) == NULL)
ret = 1;
else
ret = c99_parse(cpp, C99_PARSER_MODE_OBJECT);
if(o != NULL) if(o != NULL)
{ {
if(fclose(outfp) != 0) if(fclose(outfp) != 0)
@ -207,7 +211,8 @@ static int _c99_do_E(Prefs * prefs, FILE * outfp, char const * infile)
token_get_filename(token), ":", token_get_filename(token), ":",
token_get_line(token), ": ", token_get_line(token), ": ",
token_get_string(token)); token_get_string(token));
else if(code >= CPP_CODE_META_FIRST && code <= CPP_CODE_META_LAST) else if(code >= CPP_CODE_META_FIRST
&& code <= CPP_CODE_META_LAST)
fprintf(outfp, "%s\n", token_get_string(token)); fprintf(outfp, "%s\n", token_get_string(token));
else else
fputs(token_get_string(token), outfp); fputs(token_get_string(token), outfp);
@ -219,19 +224,24 @@ static int _c99_do_E(Prefs * prefs, FILE * outfp, char const * infile)
static int _c99_do_o(Prefs * prefs, FILE * outfp, char const * infile) static int _c99_do_o(Prefs * prefs, FILE * outfp, char const * infile)
{ {
int ret; int ret;
FILE * infp; Cpp * cpp;
if((infp = fopen(infile, "r")) == NULL) if((cpp = cpp_new(infile, CPP_FILTER_TRIGRAPH)) == NULL)
return error_set_code(1, "%s: %s", infile, strerror(errno)); ret = 1;
/* FIXME implement */ else
ret = error_set_code(1, "%s", strerror(ENOSYS)); ret = c99_parse(cpp, C99_PARSER_MODE_OBJECT);
if(fclose(infp) != 0 && ret == 0)
return error_set_code(1, "%s: %s", infile, strerror(errno));
return ret; return ret;
} }
/* useful */ /* useful */
/* c99_parse */
int c99_parse(C99 * c99, C99ParserMode mode)
{
return error_set_code(1, "%s", strerror(ENOSYS));
}
/* c99_scan */ /* c99_scan */
int c99_scan(C99 * c99, Token ** token) int c99_scan(C99 * c99, Token ** token)
{ {

View File

@ -137,9 +137,15 @@ typedef enum _C99Code
C99_CODE_KEYWORD__IMAGINARY C99_CODE_KEYWORD__IMAGINARY
} C99Code; } C99Code;
typedef enum _C99ParserMode {
C99_PARSER_MODE_OBJECT, C99_PARSER_MODE_EXECUTABLE
} C99ParserMode;
/* functions */ /* functions */
/* useful */ /* useful */
int c99_parse(C99 * c99, C99ParserMode mode);
int c99_scan(C99 * c99, Token ** token); int c99_scan(C99 * c99, Token ** token);
#endif /* !C99_C99_H */ #endif /* !C99_C99_H */