I can only find the grammar of translation unit in section 6.9 which is as the follows:
translation-unit: external-declaration
translation-unit external-declaration
From this grammar, it seems that there should be at least one external declarations, which implies that an empty translation unit is not allowed. However, I would like to know what is required for a compiler to do for such a scenario. Can any one point me to the description in C11 if there is one?
Given that definition of a translation-unit, attempting to treat a empty source file as a translation unit results in a syntax error.
Section 5.1.1.3 of the C11 standard (see the N1570 draft) requires a diagnostic for a translation unit that violates a syntax rule or constraint. If the diagnostic is a non-fatal warning and the implementation translates it anyway, the resulting behavior is undefined by omission (4p2). If an implementation fails to issue a diagnostic message, the implementation is non-conforming (at least in the mode in which you invoked it), and the standard has nothing more to say about it.
Although the behavior of a particular implementation doesn't directly answer questions about what the language standard says, here's what gcc and clang do with an empty source file (with options to tell them to attempt to conform to C11):
$ gcc -c -std=c11 -pedantic-errors empty.c
empty.c:1:0: error: ISO C forbids an empty translation unit [-Wpedantic]
$ clang -c -std=c11 -pedantic-errors empty.c
empty.c:1:1: error: ISO C requires a translation unit to contain at least one declaration [-Werror,-Wempty-translation-unit]
^
1 error generated.
$