# empty f() ==> Program(ExpressionStatement(CallExpression(VariableName, ArgumentList))) # single anon arg f(1) ==> Program(ExpressionStatement(CallExpression(VariableName, ArgumentList(Number)))) # deprecated multiple anon args f(1, 2) ==> Program(ExpressionStatement(CallExpression(VariableName, ArgumentList(Number, Number)))) # deprecated trailing % startSketchOn('XY') |> line([thickness, 0], %) ==> Program(ExpressionStatement(PipeExpression(CallExpression(VariableName, ArgumentList(String)), PipeOperator, CallExpression(VariableName, ArgumentList(ArrayExpression(VariableName, Number), PipeSubstitution))))) # % and named arg startSketchOn('XY') |> line(%, end = [thickness, 0]) ==> Program(ExpressionStatement(PipeExpression(CallExpression(VariableName, ArgumentList(String)), PipeOperator, CallExpression(VariableName, ArgumentList(PipeSubstitution, LabeledArgument(ArgumentLabel, Equals, ArrayExpression(VariableName, Number))))))) # implied % and named arg startSketchOn('XY') |> line(end = [thickness, 0]) ==> Program(ExpressionStatement(PipeExpression(CallExpression(VariableName, ArgumentList(String)), PipeOperator, CallExpression(VariableName, ArgumentList(LabeledArgument(ArgumentLabel, Equals, ArrayExpression(VariableName, Number))))))) # multiple named arg ngon(plane = "XY", numSides = 5, radius = pentR) ==> Program(ExpressionStatement(CallExpression(VariableName, ArgumentList(LabeledArgument(ArgumentLabel, Equals, String), LabeledArgument(ArgumentLabel, Equals, Number), LabeledArgument(ArgumentLabel, Equals, VariableName)))))