Packages

Lift functions for working with multi-level nested lists

Current section

Files

Jump to
lift deps makeup_elixir lib makeup lexers elixir_lexer atoms.ex.exs
Raw

deps/makeup_elixir/lib/makeup/lexers/elixir_lexer/atoms.ex.exs

defmodule Makeup.Lexers.ElixirLexer.Atoms do
@moduledoc false
# parsec:Makeup.Lexers.ElixirLexer.Atoms
# This module is generated at "dev time" so that the lexer
# doesn't have to depend on the (excellent) `unicode_set` library,
# which takes several minutes to compile.
import NimbleParsec
atom_start_unicode_syntax =
"[[:L:][:Nl:][:Other_ID_Start:]-[:Pattern_Syntax:]-[:Pattern_White_Space:][_]]"
atom_continue_unicode_syntax =
"[[:ID_Start:][:Mn:][:Mc:][:Nd:][:Pc:][:Other_ID_Continue:]-[:Pattern_Syntax:]-[:Pattern_White_Space:][_@]]"
# TODO: Why do we need to flatten these lists? A bug in `unicode_set`?
atom_start_chars = Unicode.Set.to_utf8_char(atom_start_unicode_syntax) |> List.flatten()
atom_continue_chars = Unicode.Set.to_utf8_char(atom_continue_unicode_syntax) |> List.flatten()
defcombinator(:atom_start_chars, label(utf8_char(atom_start_chars), "atom start"))
defcombinator(:atom_continue_chars, label(utf8_char(atom_continue_chars), "atom continue"))
# parsec:Makeup.Lexers.ElixirLexer.Atoms
end