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