From 37d5fce399779bd74c584556af4cf4d5eb5f86c2 Mon Sep 17 00:00:00 2001 From: Daniel Venturini Date: Tue, 4 Dec 2018 12:18:38 -0200 Subject: [PATCH] Adicionando flag --version --- README.md | 2 ++ main.c | 20 ++++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index df56f6e..201718a 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,8 @@ cd vcc sudo make install ``` +Use ```vcc --version``` para verificar se o ```vcc``` foi compilado e instalado com sucesso junto com suas dependências. + O software ```xdot``` é instalado junto, pois é usado para exibir a árvore gerada na análise sintática. Porém, o ```vcc``` funcionará normalmente se este não for instalado. Para verificar se o ```xdot``` foi instalado, apenas execute ```xdot```. Também na instalação, é copiado os arquivos necessários para o ```hithlight Syntax``` no ```Sublime Text 3```. As seguintes etapas devem ser realizadas para finalizar a instalação: diff --git a/main.c b/main.c index 8417926..9854132 100644 --- a/main.c +++ b/main.c @@ -9,8 +9,9 @@ typedef TokenRecord TR; // apenas para economizar espaços na linha char **arquivos; // este ponteiro conterá todos os arquivo passados por parâmetros -char flags[7]; // cada posição se refere a um tipo de flag -// flags: [0] = -tk; [1] = -ax; [2] = -at; [3] = -sx; [4] = -st; [5] = -ts; [6] = -h; +char flags[8]; // cada posição se refere a um tipo de flag +// flags: [0] = -tk; [1] = -ax; [2] = -at; [3] = -sx; [4] = -st; [5] = -ts; [6] = -h; [7] = -v; +char *version = "4.2.0"; void qualFlag(char *flag) { @@ -28,6 +29,8 @@ void qualFlag(char *flag) { flags[5] = 1; else if(strcmp(flag, "-h") == 0 || strcmp(flag, "--help") == 0) // --help flags[6] = 1; + else if(strcmp(flag, "-v") == 0 || strcmp(flag, "--version") == 0) // --help + flags[7] = 1; else // flag desconhecida printf("\n\e[38;5;184mvcc:\e[38;5;196m erro: flag desconhecida \e[38;5;255m\'%s\'.\n\n", flag); } @@ -83,6 +86,7 @@ void printHelp() { printf("\u2502Flags: \u2502\n"); printf("\u2502 -h, --help exibe ajuda--------------------------------------------\u2502\n"); + printf("\u2502 -v, --version exibe a versão atual do VCC----------------------------\u2502\n"); printf("\u2502 -tk, --tokens, exibe os tokens----------------------------------------\u2502\n"); printf("\u2502 -ax, --ast-x, exibe as árvores de análises sintáticas no xdot--------\u2502\n"); printf("\u2502 -at, --ast-t, exibe as árvores de análises sintáticas no terminal----\u2502\n"); @@ -93,6 +97,14 @@ void printHelp() { desenhaLinha(2); } +void printVersion() { + printf("Venturini Compiler Compiler\n"); + printf("Release: %s\n", version); + printf("BuildOn: Linux 4.15.0-38-generic\n"); + printf("LLVM, Clang and LLI: 3.8.0\n"); + printf("VCC (https://github.com/danielventurini/vcc)\n"); +} + int main(int argc, char *argv[]) { if(argc < 2){ fprintf(stderr, "Use: vcc [flags] [arquivo1.tpp arquivo2.tpp ...]\n"); @@ -162,5 +174,9 @@ int main(int argc, char *argv[]) { printHelp(); } + if(flags[7]) { + printVersion(); + } + return 0; } \ No newline at end of file