I'm trying to create a simple scripting language using lex and yacc. I've
noticed that the grammars for most scripting languages have some kind of
keyword in front of function declarations. For example:

I was wondering why that is. I suspect the point is to avoid of ambiguity
with other language constructs, but I'm not sure. If possible, I don't want
to use a keyword. The grammar I want to use for my scripting language would
go something like this:

func_name '(' param_list ')' IS_TOKEN
func_body
END_TOKEN

Does anyone have any suggestions as to whether or not I should have/need a
keyword in front?