SCLParser.ExpressionParser (scl_parser v1.0.0)

Parses SCL expression strings like $var('foo') |> $jq('.bar').

These expressions typically appear within backtick strings in SCL files.

Summary

Functions

Parses an SCL expression string.

Functions

parse(input)

Parses an SCL expression string.

Handles function calls starting with $ and allows piping with |>. Parameters can be strings (single, double, backtick quoted), numbers, or booleans.

Examples

iex> SCLParser.ExpressionParser.parse("$var('foo')")
{:ok, [%{fn: "var", params: ["foo"]}]}

iex> SCLParser.ExpressionParser.parse("$var(123) |> $add(10)")
{:ok, [%{fn: "var", params: [123]}, %{fn: "add", params: [10]}]}

iex> SCLParser.ExpressionParser.parse("not an expression")
{:error, "Expression must start with '$'"}

iex> SCLParser.ExpressionParser.parse("$func(unterminated 'string)")
{:error, "Unterminated single-quoted string in parameter list"}

iex> SCLParser.ExpressionParser.parse("$func() |> ")
{:error, "Expected '$' after '|>'"}

Returns

  • {:ok, list_of_maps} where each map is %{fn: String.t(), params: list()}.
  • {:error, reason :: String.t()} on failure.