\section{Diseño del Lenguaje}
Nuestro lenguaje de programación, de nombre \textit{''Obelisk''}, tiene como pilar fundamental en su diseño el paradigma declarativo, es decir, posee un fuerte enfoque en definir el resultado al que se desea llegar, en contraste a describir el flujo de control para obtener la solución.
En consecuencia, el idioma posee por naturaleza un nivel de abstracción alto.

Por otro lado, las palabras claves utilizadas están inspiradas en el lenguaje Prolog, el cual posee hechos y reglas. Esto es para luego agregar una palabra propia de las acciones a tomar, dependiendo de los hechos y las reglas.

Debido a esto, se abren posibilidades para ser perfeccionado con facilidad ya que al escribir código no es necesario determinar el procedimiento al cual se desea llegar, dándole la poderosa cualidad de ser bastante flexible.

\textit{''Obelisk''} contiene palabras claves que cuando sean utilizadas permitan que ciertas operaciones lógicas sean declaradas y ejecutadas, y por lo tanto reconocidas para su posterior uso, las cuales serán descritas a continuación.
\subsection{Sintaxis}

La sintaxis del lenguaje fue diseñado teniendo en mente el asemejarse al lenguaje humano, específicamente el idioma inglés. La razón es debido a que el inglés es utilizado en todas partes del mundo y es muy fácil de aprender y usar.

\begin{figure}[H]
    \centering
    \includegraphics[width=0.8\textwidth, height=0.8\textheight, keepaspectratio]{figures/ejemplofunc1.png}
    \caption{Estructura Básica de una Palabra Clave Lógica}
    \label{fig:ejemplofunc1}
\end{figure}

La estructura de la sintaxis del lenguaje de programación \textit{''Obelisk''} se desglosa en tres partes. El nombre, los elementos y el punto y coma (;) componen en su totalidad lo que nuestro idioma comprende como una palabra clave del lenguaje. Cabe señalar que las palabras claves del lenguaje están restringidas solo en el idioma inglés.

En este caso, el idioma posee tres palabras claves implementadas, las cuales son las acciones, los hechos y las reglas. Cada una de ellas tiene un orden ligeramente similar y difieren sólo en el contenido de los elementos, el cual se describirá a continuación.

\subsubsection{Hechos}
\begin{figure}[H]
    \centering
    \includegraphics[width=0.8\textwidth, height=0.8\textheight, keepaspectratio]{figures/ejemplohecho1.png}
    \caption{Estructura Básica de un Hecho}
    \label{fig:ejemplohecho1}
\end{figure}

Los hechos tienen su contenido dividido en dos porciones. Sin embargo, la separación semántica es hecha por un verbo.

Por lo tanto, tenemos:

\begin{itemize}
    \item 1°ra Entidad(es) (primera porción): Deben estar en comillas dobles, pueden ser más de uno y deben estar separados por la conjunción \textit{and}. Ej. \textit{''chris and martin...etc''}.
    \item Verbo: Representa la división semántica y la relación entre las dos porciones. Ej. \textit{''can''}
    \item 2°da Entidad(es) (segunda porción): Deben estar en comillas dobles, pueden ser más de uno y deben estar separados por la conjunción \textit{and}. Ej. \textit{''program and speak english...etc''}
\end{itemize}

\subsubsection{Acciones}

\begin{figure}[H]
    \centering
    \includegraphics[width=0.8\textwidth, height=0.8\textheight, keepaspectratio]{figures/ejemploaccion1.png}
    \caption{Estructura Básica de una Acción}
    \label{fig:ejemploaccion1}
\end{figure}

La sintaxis de las acciones destaca principalmente, como las demás palabras clave, en los parámetros.
El contenido esta compuesto por dos porciones, divididos por el adverbio.
Usando como referencia el ejemplo anterior, la estructura es:

\begin{itemize}
    \item 1°ra Entidad (primera porción): Debe estar en comillas dobles. Ej. \textit{''martin''}.
    \item Verbo: Representa la relación entre las dos entidades de la primera porción. Ej. \textit{''is''}.
    \item 2°da Entidad (primera porción): Debe estar en comillas dobles. Ej. \textit{''dangerous''}.
    \item Separación semántica: El adverbio describe la implicación que tiene la primera porción sobre la segunda.
    . Ej. \textit{''then''}.
    \item Sugerencia verdadera(segunda porción): Presenta la opción a sugerir en caso en que el hecho sea verdad. Ej. \textit{''avoid''}.
    \item Sugerencia falsa (segunda porción): Manifiesta la elección a suscitar si es que el hecho sea falso. Ej. \textit{''ignore''}. 
\end{itemize}

\subsubsection{Reglas}

\begin{figure}[H]
    \centering
    \includegraphics[width=0.8\textwidth, height=0.8\textheight, keepaspectratio]{figures/ejemploregla1.png}
    \caption{Estructura Básica de una Regla}
    \label{fig:ejemploregla1}
\end{figure}

La sintaxis de las reglas, como en el resto de las palabras claves, posee una división semántica que divide el contenido de los elementos en dos fragmentos. Cabe mencionar que las reglas deben contener si o si dos entidades por cada porción, separados por un verbo

Por tanto, su estructura es:

\begin{itemize}
    \item 1°era Entidad (primera porción): Debe estar entre comillas dobles. Ej. \textit{''player''}.
    \item Verbo (primera porción): Es la relación entre ambas entidades de la primera porción.
    \item 2°da Entidad (primera porción): Debe estar entre comillas dobles. Ej. \textit{''die''}.
    \item Conjunción condicional: Indica la división semántica entre las dos porciones. En español expresa ''cuando, a ser, etc.''. Ej. \textit{''if''}.
    \item 1°ra Entidad (segunda porción): Debe estar entre comillas dobles. Ej. \textit{''enemy1''}.
    \item Verbo (primera porción): Es la relación entre ambas entidades de la segunda porción.
    \item 2°da Entidad (segunda porción): Debe estar entre comillas dobles. Ej. \textit{''dangerous''}.
\end{itemize}

\subsection{Semántica}
La semasiología de \textit{Obelisk} es en base a las palabras claves contenidas en el lenguaje y en consecuencia, describen la lógica y funcionamiento que tendrán.

Cabe mencionar que cada vez que se agreguen nuevas palabras claves, quedará un registro de estos en la base de conocimientos, el cual almacena toda la información contenida en el lenguaje. Este ultimo será explicado con detalle más adelante.

Finalmente, nuestro lenguaje posee tres palabras claves y su funcionamiento será descrito a continuación:

\subsubsection{Hechos}
Los hechos, como su nombre indica, describen una afirmación en referencia a la entidad declarada en los elementos de la palabra clave.

Es importante mencionar que si un hecho no esta presente en la base de conocimiento, se deja a entender que por defecto su valor booleano es \textit{false}.


\subsubsection{Reglas}
Las reglas se utilizan para crear condiciones y el resultado de estas dependen fundamentalmente de los hechos.

Esto quiere decir que una regla tendrá un valor booleano \textit{true} si existe el hecho que respalde tal regla. En caso contrario la regla quedará con valor \textit{false}.

\subsubsection{Acciones}
Finalmente, las acciones definen que acto(s) se realizará(n) dependiendo si el hecho al cual alude tenga valor booleano \textit{true}.
