@@ -21,8 +21,8 @@ static bool match(TokenType type) {
2121
2222static void consume (TokenType type , const char * message ) {
2323 if (!match (type )) {
24- fprintf ( stderr , "Parse error at line %d: %s\n " ,
25- current_token ? current_token -> line : -1 , message );
24+ if ( mode == FILE_MODE ) ( stderr , "Parse error at line %d: " , current_token ? current_token -> line : -1 );
25+ fprintf ( stderr , "%s\n" , message );
2626 exit (1 );
2727 }
2828 advance ();
@@ -76,7 +76,8 @@ ASTNode* parse_statement() {
7676 advance (); // consume 'def'
7777
7878 if (!match (TOK_ID )) {
79- fprintf (stderr , "Parse error at line %d: Expected function name\n" , current_token -> line );
79+ if (mode == FILE_MODE ) fprintf (stderr , "Parse error at line %d: " ,current_token -> line );
80+ fprintf (stderr , "Expected function name\n" );
8081 exit (1 );
8182 }
8283 char * func_name = strdup (current_token -> value );
@@ -90,7 +91,8 @@ ASTNode* parse_statement() {
9091 if (!match (TOK_RPAREN )) {
9192 do {
9293 if (!match (TOK_ID )) {
93- fprintf (stderr , "Parse error at line %d: Expected parameter name\n" , current_token -> line );
94+ if (mode == FILE_MODE ) fprintf (stderr , "Parse error at line %d: " ,current_token -> line );
95+ fprintf (stderr ,"Expected parameter name\n" );
9496 exit (1 );
9597 }
9698 params [param_count ++ ] = strdup (current_token -> value );
@@ -155,7 +157,8 @@ ASTNode* parse_statement() {
155157 advance (); // consume 'each'
156158
157159 if (!match (TOK_ID )) {
158- fprintf (stderr , "Parse error at line %d: Expected variable name\n" , current_token -> line );
160+ if (mode == FILE_MODE ) fprintf (stderr , "Parse error at line %d: " ,current_token -> line );
161+ fprintf (stderr , "Expected variable name\n" );
159162 exit (1 );
160163 }
161164 char * target = strdup (current_token -> value );
@@ -333,7 +336,8 @@ ASTNode* parse_comparison() {
333336 if (match (TOK_ASSIGN )) {
334337 advance (); // consume '='
335338 if (expr -> type != AST_VAR && expr -> type != AST_INDEX ) {
336- fprintf (stderr , "Parse error at line %d: Invalid assignment target.\n" , expr -> line );
339+ if (mode == FILE_MODE ) fprintf (stderr , "Parse error at line %d: " ,current_token -> line );
340+ fprintf (stderr , "Invalid assignment target.\n" );
337341 exit (1 );
338342 }
339343 ASTNode * value = parse_expression ();
@@ -627,8 +631,8 @@ ASTNode* parse_primary() {
627631 return expr ;
628632 }
629633
630- fprintf (stderr , "Parse error at line %d: Unexpected token\n " ,
631- current_token ? current_token -> line : -1 );
634+ if ( mode == FILE_MODE ) fprintf (stderr , "Parse error at line %d: " , current_token ? current_token -> line : -1 );
635+ fprintf ( stderr , "Unexpected token\n" );
632636 exit (1 );
633637}
634638
0 commit comments