aboutsummaryrefslogtreecommitdiff
path: root/lib/main.ex
blob: ca73cb55c02cec5e6e04ba1448a0ca7bbe09940c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
defmodule ElixirMathParser.Main do
   def process_parse({:error, result}) do
    IO.puts "\nParse error"
    IO.inspect result
  end

  def process_parse({:ok, tree}) do
    IO.puts "\nParse tree"
    IO.inspect tree, pretty: true
    state = ElixirMathParser.process_tree(tree)
    IO.puts "\nFinal state"
    IO.inspect state, pretty: true
  end
  
  def main(args) do
    filename = Enum.fetch!(args, 0)

    IO.puts "Parsing #{filename}"
    text = File.read!(filename)

    {:ok, tokens, line} = :elixir_math_parser_lexer.string(String.to_charlist(text))
    IO.puts "Parsed #{filename}, stopped at line #{line}"
    IO.puts "\nTokens:"
    IO.inspect tokens, pretty: true

    process_parse(:elixir_math_parser.parse(tokens))
  end 
end