Current section
Files
Jump to
Current section
Files
lib/token.ex
defmodule Token do
defstruct [:type, :value, :line, :row]
@type token ::
:STRING
| :NUMBER
| :COMMA
| :COLON
| :LBRACE
| :RBRACE
| :LBRACKET
| :RBRACKET
| :TRUE
| :FALSE
| :NULL
| :EOF
@type t :: %__MODULE__{
type: token(),
value: any(),
line: non_neg_integer(),
row: non_neg_integer()
}
defguardp in_type?(char)
when char in [
:STRING,
:NUMBER,
:COMMA,
:COLON,
:LBRACE,
:RBRACE,
:LBRACKET,
:RBRACKET,
:TRUE,
:FALSE,
:NULL,
:EOF
]
@spec new(token(), any(), number(), number()) :: t() | no_return()
def new(type, value, line, row) when in_type?(type) do
%__MODULE__{type: type, value: value, line: line, row: row}
end
end