zf

zenflows testing
git clone https://s.sonu.ch/~srfsh/zf.git
Log | Files | Refs | Submodules | README | LICENSE

leex_helpers.ex (768B)


      1 defmodule EarmarkParser.Helpers.LeexHelpers do
      2 
      3   @moduledoc false
      4   @doc """
      5     Allows to lex an Elixir string with a leex lexer and returns
      6     the tokens as needed for a yecc parser.
      7   """
      8   def lex text, with: lexer do
      9     case text
     10       |> String.to_charlist()
     11       |> lexer.string() do
     12         {:ok, tokens, _} -> tokens
     13       end
     14   end
     15 
     16   def tokenize line, with: lexer do
     17     {:ok, tokens, _} =
     18     line
     19     |> to_charlist()
     20     |> lexer.string()
     21     elixirize_tokens(tokens,[])
     22     |> Enum.reverse()
     23   end
     24 
     25   defp elixirize_tokens(tokens, rest)
     26   defp elixirize_tokens([], result), do: result
     27   defp elixirize_tokens([{token, _, text}|rest], result), do: elixirize_tokens(rest, [{token,to_string(text)}|result])
     28 
     29 end
     30 
     31 # SPDX-License-Identifier: Apache-2.0