From bc7c5918804ec14480a7eb07ce171d3e8e64ba1b Mon Sep 17 00:00:00 2001 From: PaddiM8 Date: Sun, 25 Aug 2024 18:56:30 +0200 Subject: [PATCH] Update preview image --- docs/preview.png | Bin 11710 -> 11556 bytes editors/vscode/src/extension.ts | 2 +- preview.png | Bin 11710 -> 11556 bytes src/ElkProgram.cs | 23 ++++++++++++----------- src/Parsing/AstNodes.cs | 16 ++++++++++++++-- 5 files changed, 27 insertions(+), 14 deletions(-) diff --git a/docs/preview.png b/docs/preview.png index ae2d79b57d4a8004f64c02b453634b78d26557fe..73031ad75b8f3d2fd1d837647979c72bbd1c6def 100644 GIT binary patch literal 11556 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 I?@a>#7yd$$<^TWy literal 11710 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 I?@a>#7yd$$<^TWy literal 11710 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 virtualMachine?.Execute(pair.page)) - .LastOrDefault(); + RuntimeObject? result = null; + if (virtualMachine != null) + { + result = generated + .Select(pair => virtualMachine.Execute(pair.page!)) + .LastOrDefault(); + } return new EvaluationResult { @@ -136,7 +141,7 @@ internal static EvaluationResult Evaluate( }; } - private static IEnumerable<(Ast analysedAst, Page page)> GeneratePages( + private static IEnumerable<(Ast analysedAst, Page? page)> GeneratePages( Ast ast, Scope scope, AnalysisScope analysisScope, @@ -154,16 +159,12 @@ internal static EvaluationResult Evaluate( .Concat(EvaluateModules(scope.ModuleScope.Modules, virtualMachine)); var analysedAst = Analyser.Analyse(ast, scope.ModuleScope, analysisScope); - if (virtualMachine != null) - { - var result = virtualMachine.Generate(analysedAst); - pages = pages.Append((analysedAst, result)); - } + var result = virtualMachine?.Generate(analysedAst); - return pages; + return pages.Append((analysedAst, result)); } - private static IEnumerable<(Ast, Page)> EvaluateModules( + private static IEnumerable<(Ast, Page?)> EvaluateModules( IEnumerable modules, VirtualMachine? virtualMachine) { diff --git a/src/Parsing/AstNodes.cs b/src/Parsing/AstNodes.cs index 4dd28fdb..7d4f6fd2 100644 --- a/src/Parsing/AstNodes.cs +++ b/src/Parsing/AstNodes.cs @@ -457,7 +457,7 @@ public class CallExpr( Scope scope, TextPos endPos) : Expr( - modulePath.FirstOrDefault()?.Position ?? identifier.Position, + GetStartPosition(modulePath, identifier, arguments), endPos, scope ) @@ -491,7 +491,19 @@ public class CallExpr( public FunctionExpr? EnclosingClosureProvidingFunction { get; init; } public override IEnumerable ChildExpressions - => Arguments; + => PipedToProgram == null + ? Arguments + : Arguments.Prepend(PipedToProgram); + + private static TextPos GetStartPosition(IList modulePath, Token identifier, IList arguments) + { + var callPos = modulePath.FirstOrDefault()?.Position ?? identifier.Position; + var firstArgumentPosition = arguments.FirstOrDefault()?.StartPosition; + + return firstArgumentPosition?.Index < callPos.Index + ? firstArgumentPosition + : callPos; + } } public class LiteralExpr(Token value, Scope scope)