-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmain.ex
More file actions
34 lines (28 loc) · 872 Bytes
/
main.ex
File metadata and controls
34 lines (28 loc) · 872 Bytes
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
29
30
31
32
33
34
defmodule ExampleElixirParser.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 = ExampleElixirParser.process_tree(tree)
IO.puts "\nFinal state"
IO.inspect state, pretty: true
end
def main([]) do
IO.puts "Usage ./example_elixir_parser <filename>"
end
def main(args) do
IO.puts "derp"
IO.puts "#{args}"
filename = Enum.fetch!(args, 0)
IO.puts "Parsing #{filename}"
text = File.read!(filename)
{:ok, tokens, line} = :example_elixir_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(:example_elixir_parser.parse(tokens))
end
end