Viết ngôn ngữ lập trình biên dịch với hàm main

Chào mọi người, mình đang tìm hiểu cách viết 1 ngôn ngữ lập trình đơn giản.
Hiện tại mình đang thiết kế parser cho ngôn ngữ, tuy nhiên mình có 1 thắc mắc là mình nên khai báo hàm main trong parser luôn để bắt buộc chương trình viết ra phải có hàm main. (ngôn ngữ không hỗ trợ link nhiều file với nhau, nên 1 file thực thi luôn phải có hàm main)
Hay phần check hàm main sẽ để lại sau này kiểm tra cách chương trình thực thi nhỉ?
Ví dụ:
program -> (var_declare | func_declare)* (tức là không phân biệt có hàm main hay ko)
program -> (var_declare | func_declare)* main_function (tức là bắt buộc có hàm main ở cuối chương trình luôn)

Mọi người có thể giải đáp giúp mình ko ạ. Cảm ơn nhiều!

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?