bpo-43914: Correctly highlight SyntaxError exceptions for invalid generator expression in function calls (GH-28576)

(cherry picked from commit e5f13ce5b48b551c09fdd0faeafa6ecf860de51c)

Co-authored-by: Pablo Galindo Salgado <Pablogsal@gmail.com>
diff --git a/Parser/pegen.c b/Parser/pegen.c
index 31ebccb..e20e926 100644
--- a/Parser/pegen.c
+++ b/Parser/pegen.c
@@ -2530,8 +2530,17 @@
     return RAISE_SYNTAX_ERROR(msg);
 }
 
+
+static inline expr_ty
+_PyPegen_get_last_comprehension_item(comprehension_ty comprehension) {
+    if (comprehension->ifs == NULL || asdl_seq_LEN(comprehension->ifs) == 0) {
+        return comprehension->iter;
+    }
+    return PyPegen_last_item(comprehension->ifs, expr_ty);
+}
+
 void *
-_PyPegen_nonparen_genexp_in_call(Parser *p, expr_ty args)
+_PyPegen_nonparen_genexp_in_call(Parser *p, expr_ty args, asdl_comprehension_seq *comprehensions)
 {
     /* The rule that calls this function is 'args for_if_clauses'.
        For the input f(L, x for x in y), L and x are in args and
@@ -2545,8 +2554,11 @@
         return NULL;
     }
 
-    return RAISE_SYNTAX_ERROR_STARTING_FROM(
+    comprehension_ty last_comprehension = PyPegen_last_item(comprehensions, comprehension_ty);
+
+    return RAISE_SYNTAX_ERROR_KNOWN_RANGE(
         (expr_ty) asdl_seq_GET(args->v.Call.args, len - 1),
+        _PyPegen_get_last_comprehension_item(last_comprehension),
         "Generator expression must be parenthesized"
     );
 }