charly-lang / charly

🐈 The Charly Programming Language | Written by @KCreate
https://charly-lang.github.io/charly/
MIT License
199 stars 10 forks source link

Refactor CLI Interface #137

Open KCreate opened 7 years ago

KCreate commented 7 years ago

Remove the usage of the OptionParser and create a order-sensitive CLI interface.

See: https://github.com/crystal-lang/crystal/blob/master/src/compiler/crystal/command.cr#L58

Commands should be:

charly # starts the REPL
charly repl # starts the REPL

charly file.ch # runs the file
charly run file.ch # runs the file
charly run repl # searches for a file called repl, doesn't invoke the built-in repl

# If there is a need for passing flags to the interpreter in run mode
# this should be the syntax:
charly run -Fmyflag -Fmyotherflag file.ch

charly tool # cli interface for tooling
charly tool dump # lists available things to dump
charly tool dump ast # asks for a filename
charly tool dump ast file.ch # dumps the ast for the file
charly tool dump tokens file.ch # dumps the tokens for the file
charly tool dump dot file.ch # dumps the dot language for the file

charly [-h, --help] # shows the help page
charly [-v, --version] # shows the version
charly --license # shows the license
ghost commented 7 years ago

@KCreate Export the AST as Text or Image?

KCreate commented 7 years ago

@oltmannsdaniel This is already possible in the current version using the --ast option. This issue would put that option under charly tool dump ast file.ch

ghost commented 7 years ago

Ah, ok. Sorry I read it wrong. Definitely better than now.

KCreate commented 7 years ago

Btw, this is how a textual AST dump looks like: https://pastebin.com/9wP678Hf