From: | Carl Cerecke <cdc@maxnet.co.nz> |
Newsgroups: | comp.compilers |
Date: | 17 Oct 2004 16:05:36 -0400 |
Organization: | TelstraClear |
References: | 04-10-092 |
Keywords: | syntax, design |
Posted-Date: | 17 Oct 2004 16:05:36 EDT |
M Cleary wrote:
> 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.
> I was wondering why that is. I suspect the point is to avoid of ambiguity
> with other language constructs.
Well, yes and no. Without a function definition keyword, a parser cannot
tell the difference between a function definition and a function call
until after the closing parenthesis. (Assuming the function argument
syntax is the same for calling and definition, as it is in python, but
not in, say, C or Java).
So, for example, given the statement "foo(a,b,c)", the parser would have
to get to the end of the statement before it can disambiguate between
function call, and function def. It's easier to be able to decide
before-hand, especially for plain top-down parsers. An LR-based parser
shouldn't have much trouble, unless there are other interfering language
constructs.
Cheers,
Carl.
Return to the
comp.compilers page.
Search the
comp.compilers archives again.