1st full macro expander
This commit is contained in:
@@ -386,11 +386,11 @@ begin
|
||||
// (defmacro name [params] body)
|
||||
if (Length(tailNodes) <> 3) or (tailTokens[0].Kind <> tkIdentifier) then
|
||||
raise Exception.Create('Syntax Error: ''defmacro'' requires a name, a parameter list, and a body.');
|
||||
if elements[1].Node <> nil then
|
||||
if elements[2].Params = nil then
|
||||
raise Exception.Create('Syntax Error: Expected a parameter list [...] after macro name.');
|
||||
|
||||
var macroName := IIdentifierNode(tailNodes[0]);
|
||||
var macroParams := elements[1].Params;
|
||||
var macroParams := elements[2].Params;
|
||||
var macroBody := tailNodes[2];
|
||||
|
||||
Result := TAst.MacroDef(macroName, macroParams, macroBody);
|
||||
@@ -405,7 +405,7 @@ begin
|
||||
begin
|
||||
if Length(tailNodes) <> 2 then
|
||||
raise Exception.Create('Syntax Error: ''fn'' requires a parameter list and a body.');
|
||||
if elements[1].Node <> nil then
|
||||
if elements[1].Params = nil then
|
||||
raise Exception.Create('Syntax Error: Expected a parameter list [...] after ''fn''.');
|
||||
Result := TAst.LambdaExpr(elements[1].Params, tailNodes[1]);
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user