Optional brackets around lambda expression: proposed syntax with full grammar

Steven Simpson ss at comp.lancs.ac.uk
Sat Jun 18 03:11:04 PDT 2011


On 18/06/11 10:56, Ali Ebrahimi wrote:
> LambdaDeclaration =
>                     LambdaParameterList '->' LambdaBody
>
> LambdaParameterList =
> 	ZeroOrOneLenParameterList | GreaterThanOneLenParameterList
>
> ZeroOrOneLenParameterList =
> 	'(' LambdaParameter? ')' | LambdaParameter?
>
> GreaterThanOneParameterList=
> 	'(' LambdaParameter , (LambdaParameter)+ ')'

That should probably also be:

GreaterThanOneParameterList=
	'(' LambdaParameter ( ',' LambdaParameter )+ ')'

...unless I'm misunderstanding the meaning of the non-literal comma...?

And if you changed from + to *, you have the unary case with brackets
covered.  Make the contents optional, and you have the nilary covered too:

GreaterThanOneParameterList=
	'(' ( LambdaParameter ( ',' LambdaParameter )* )? ')'

LambdaParameterList =
	LambdaParameter | GreaterThanOneLenParameterList

No need for ZeroOrOneLenParameterList then.

> LambdaParameter =
> 	Parameter | Identifier
>
> LambdaBody =
> 	Expression | `{' Statement* `}'



More information about the lambda-dev mailing list