From 89a9cb97a7bc0597af4dade5ac71278a2c601f31 Mon Sep 17 00:00:00 2001 From: Leonardo Luna Date: Fri, 31 May 2024 23:43:08 -0600 Subject: [PATCH] chatbot commit --- labs/07/chatbot | Bin 0 -> 32032 bytes labs/07/chatbot.l | 29 ++++++++++++++++ labs/07/chatbot.y | 83 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 112 insertions(+) create mode 100755 labs/07/chatbot create mode 100644 labs/07/chatbot.l create mode 100644 labs/07/chatbot.y diff --git a/labs/07/chatbot b/labs/07/chatbot new file mode 100755 index 0000000000000000000000000000000000000000..d82074e9d9453bdbe3978c95f26862f768bebe02 GIT binary patch literal 32032 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 TrQzC}{!+C*k8vnCvf}>&Uz^|E literal 0 HcmV?d00001 diff --git a/labs/07/chatbot.l b/labs/07/chatbot.l new file mode 100644 index 00000000..57506b6c --- /dev/null +++ b/labs/07/chatbot.l @@ -0,0 +1,29 @@ +%{ +#include "y.tab.h" +%} + +%% + +hello { return HELLO; } +hi { return HELLO; } +hey { return HELLO; } +goodbye { return GOODBYE; } +bye { return GOODBYE; } +time { return TIME; } +"what is the time" { return TIME; } +"what time is it" { return TIME; } +"what is your name" { return NAME; } +"name" { return NAME; } +"your name" { return NAME; } +"what is the weather" { return WEATHER; } +"weather" { return WEATHER; } +"how are you" { return HOWAREYOU; } +"mood" { return HOWAREYOU; } +"flip coin" { return FLIP_COIN; } + +\n { return 0; } /* End of input on newline */ + +. { return yytext[0]; } + +%% + diff --git a/labs/07/chatbot.y b/labs/07/chatbot.y new file mode 100644 index 00000000..15f9be8a --- /dev/null +++ b/labs/07/chatbot.y @@ -0,0 +1,83 @@ +%{ +#include +#include +#include + +void yyerror(const char *s); +int yylex(void); +%} + +%token HELLO GOODBYE TIME NAME WEATHER HOWAREYOU FLIP_COIN + +%% + +chatbot : greeting + | farewell + | query + | inquiry + | coinflip + ; + +greeting : HELLO { printf("Chatbot: Hello! How can I help you today?\n"); } + ; + +farewell : GOODBYE { printf("Chatbot: Goodbye! Have a great day!\n"); } + ; + +query : TIME { + time_t now = time(NULL); + struct tm *local = localtime(&now); + printf("Chatbot: The current time is %02d:%02d.\n", local->tm_hour, local->tm_min); + } + ; + +inquiry : NAME { printf("Chatbot: My name is Jeff.\n"); } + | WEATHER { + srand(time(NULL)); + int temperature = 25 + rand() % 16; + printf("Chatbot: The weather today is %d degrees Celsius outside.\n", temperature); + } + | HOWAREYOU { + srand(time(NULL)); + const char *moods[] = { + "happy 😊", + "sad 😢", + "excited 😆", + "angry 😠", + "bored 😐", + "confused 😕", + "surprised 😮", + "tired 😴", + "scared 😱", + "calm 😌" + }; + int moodIndex = rand() % 10; + printf("Chatbot: I'm feeling %s\n", moods[moodIndex]); + } + ; + +coinflip: FLIP_COIN { + srand(time(NULL)); + int result = rand() % 2; + if (result == 0) { + printf("Chatbot: It's heads! 🪙\n"); + } else { + printf("Chatbot: It's tails! 🪙\n"); + } + } + ; + +%% + +int main() { + printf("Chatbot: Hi! You can greet me, ask for the time, ask my name, ask my mood, inquire about the weather, flip a coin, or say goodbye.\n"); + while (yyparse() == 0) { + // Loop until end of input + } + return 0; +} + +void yyerror(const char *s) { + fprintf(stderr, "Chatbot: I didn't understand that.\n"); +} +