Fixed parser error in fn def
This commit is contained in:
@@ -348,7 +348,14 @@ begin
|
|||||||
Result := TAst.Assign(IIdentifierNode(tailNodes[0]), tailNodes[1]);
|
Result := TAst.Assign(IIdentifierNode(tailNodes[0]), tailNodes[1]);
|
||||||
end
|
end
|
||||||
else if SameText(head.Token.Text, 'fn') then
|
else if SameText(head.Token.Text, 'fn') then
|
||||||
Result := TAst.LambdaExpr(elements[High(tailNodes)].Params, tailNodes[1])
|
begin
|
||||||
|
// Corrected handling for lambda expressions
|
||||||
|
if Length(tailNodes) <> 2 then
|
||||||
|
raise Exception.Create('Syntax Error: ''fn'' requires a parameter list and a body.');
|
||||||
|
if elements[1].Node <> nil then
|
||||||
|
raise Exception.Create('Syntax Error: Expected a parameter list [...] after ''fn''.');
|
||||||
|
Result := TAst.LambdaExpr(elements[1].Params, tailNodes[1]);
|
||||||
|
end
|
||||||
else if SameText(head.Token.Text, 'do') then
|
else if SameText(head.Token.Text, 'do') then
|
||||||
Result := TAst.Block(tailNodes)
|
Result := TAst.Block(tailNodes)
|
||||||
else if SameText(head.Token.Text, 'recur') then
|
else if SameText(head.Token.Text, 'recur') then
|
||||||
|
|||||||
Reference in New Issue
Block a user