“Shell de ejecución y verificación de sentencias matemátic as”Resumen: El siguiente proyecto describe el proceso para desarrollar una Shell que permite reconocer y ejecutar sentencias matemáticas validando su sintaxis para cada expresión, en este proyecto se primero se definirá un lenguaje el cual incluirá la definición de las palabras pertenecientes al lenguaje mediante expresiones regulares para identificarlas, como por ejemplo: sin, cos, log, +, -, etc, para identificar las palabras se utilizara un autómata de pila determinista (AFD). El segundo paso será transformar las expresiones de notación infija a notación posfija para finalmente evaluar la expresión usando una maquina posfija representado por un autómata de pila. La aplicación será implementada en lenguaje de programación java y para el reconocimiento de las se utilizara un reconocedor léxico con el nombre de JFLEX que ara la función de autómata de finito determinista. Abstract: This project describes the process of developing a Shell to recognize and enforce judgments validating mathematical syntax f or each expression, this Project will first define a language which will include the definition of words belonging to language using regular expressions to identify them as for example: sin, cos, log, +, -, etc., to identify the words used deterministic stack automata(DSA). The second step is to convert infix expressions to pos tfix nota tion to finally evalua te the post fix express ion using a machine represented by a stack automaton. The application will be implemented in Java programming language and the recognition of the use of a lexicón recognizer JFLEX name Plowing function deterministic finite automaton. Indice. INTRODUCCION Un programa para el análisis de expresiones matemáticas presenta principalmente 2 dificultades, la primera es saber en qué notación se recibirá la entrada para ser analizada; este punto se considera importante por la razón de que la notación utilizada presentara un ventaja al momento de analizar la expresión y tomando en cuenta esta condición, la opción que mejor facilita esta labor es utilizar notaciones posfijas. El segundo problema presente en el análisis de expresiones matemáticas está presente al momento de evaluar las variables, ya que al utilizar variables en las expresiones, se deben evaluar su sintaxis para detectar errores como por ejemplo la raíz cuadrada de una variable cuando su valor es negativo.
7
Embed
Shell de ejecución y verificación de sentencias matemáticas
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
5/10/2018 Shell de ejecución y verificación de sentencias matemáticas - slidepdf.com
“Shell de ejecución y verificación de sentencias matemáticas”
Resumen:
El siguiente proyecto describe el proceso para desarrollar una Shell que permite reconocer
y ejecutar sentencias matemáticas validando su sintaxis para cada expresión, en esteproyecto se primero se definirá un lenguaje el cual incluirá la definición de las palabras
pertenecientes al lenguaje mediante expresiones regulares para identificarlas, como por
ejemplo: sin, cos, log, +, -, etc, para identificar las palabras se utilizara un autómata de pila
determinista (AFD). El segundo paso será transformar las expresiones de notación infija a
notación posfija para finalmente evaluar la expresión usando una maquina posfija
representado por un autómata de pila. La aplicación será implementada en lenguaje de
programación java y para el reconocimiento de las se utilizara un reconocedor léxico con
el nombre de JFLEX que ara la función de autómata de finito determinista.
Abstract:
This project describes the process of developing a Shell to recognize and enforce
judgments validating mathematical syntax for each expression, this Project will first
define a language which will include the definition of words belonging to language using
regular expressions to identify them as for example: sin, cos, log, +, -, etc., to identify
the words used deterministic stack automata(DSA). The second step is to convert infix
expressions to postfix notation to finally evaluate the postfix expression using a machine
represented by a stack automaton. The application will be implemented in Java
programming language and the recognition of the use of a lexicón recognizer JFLEX namePlowing function deterministic finite automaton.
Indice.
INTRODUCCION
Un programa para el análisis de expresiones matemáticas presenta principalmente 2
dificultades, la primera es saber en qué notación se recibirá la entrada para ser analizada;
este punto se considera importante por la razón de que la notación utilizada presentara
un ventaja al momento de analizar la expresión y tomando en cuenta esta condición, la
opción que mejor facilita esta labor es utilizar notaciones posfijas.
El segundo problema presente en el análisis de expresiones matemáticas está presente al
momento de evaluar las variables, ya que al utilizar variables en las expresiones, se deben
evaluar su sintaxis para detectar errores como por ejemplo la raíz cuadrada de una
variable cuando su valor es negativo.
5/10/2018 Shell de ejecución y verificación de sentencias matemáticas - slidepdf.com
esa cadena pertenece al lenguaje que el autómata reconoce. El lenguaje que reconoce un
autómata con pila pertenece al grupo de los lenguajes libres de contexto en la
clasificación de la Jerarquía de Chomsky.
Formalmente, un autómata finito es una 5-tupla (Q , Σ, q 0 , δ, F ) donde:6
es un conjunto finito de estados;
es un alfabeto finito;
es el estado inicial;
es una función de transición;
es un conjunto de estados finales o de aceptación.
MÁQUINAS POSTFIJAS
Una expresión postfija esta formada por una serie de operandos y operadores. Se
evalúa usando una máquina postfija, en la forma siguiente: cuando se encuentra
un operando, se apila en la pila; cuando se encuentra un operador, el número de
operandos (según el operador) son sacados de la pila; se realiza la operación, y el
resultado se apila de nuevo en la pila. Cuando la expresión postfija completa ha
sido procesada, el resultado deberá de ser el único valor en la pila.
Considere la expresión 1 + 5 * 2; que en notación postfija es, La evaluación es
como sigue: el 1, el 5 y el 2 son apilados en ese orden, en la pila de operandos. Alleerse el operador de multiplicación; el 2 y el 5 son desapilados, efectuándose el
producto de 2*5, siendo el resultado 10; ahora, 10 es metido a la pila.
Continuando con el algoritmo; se lee en la entrada el operador de suma, por lo que
10 y 1 son sacados de la pila, procediéndose a efectuar la suma entre estos;
siendo el resultado 11; el cual es apilado nuevamente en la pila. En consecuencia
el resultado de la evaluación es 11. La figura 4, ilustra este hecho.
JFlex:
JFlex es una metacompilador que permite generar rápidamente analizadores
léxicos que se integran con Java.
Escrito por Gerwin Klein y Régis Décamps.
Se dispondrá de un fichero Jflex.jar, el cual contendrá un clase Main, encargada
de Metacompilar nuestro programa .jflex de entrada; de esta manera, una
invocación típica es de la forma:
java JFlex.Main fichero.jflex
Lo que generará un fichero Yylex.java que implementa al analizador lexicográfico.
Notacion PosFija:
La Notación Polaca Inversa, notación de postfijo, o notación posfija,(en inglés, Reverse polish notation, o RPN), es un método algebraico alternativo deintroducción de datos. Su nombre viene por analogía con la relacionada notación polaca,una notación de prefijo introducida en 1920 por el matemático polaco Jan Lukasiewicz, endonde cada operador está antes de sus operandos. En la notación polaca inversa es alrevés, primero están los operandos y después viene el operador que va a realizar loscálculos sobre ellos. Tanto la notación polaca como la notación polaca inversa nonecesitan usar paréntesis para indicar el orden de las operaciones mientras la aridad deloperador sea fija.
Ventajas:
Los cálculos se realizan secuencialmente según se van introduciendo operadores, en vez de
tener que esperar a escribir la expresión al completo. Debido a esto, se cometen menos
errores al procesar cálculos complejos.
El proceso de apilación permite guardar resultados intermedios para un uso posterior. Esta
característica permite que las calculadoras RPN computen expresiones de complejidad muy
superior a la que alcanzan las calculadoras algebraicas.
No requiere paréntesis ni reglas de preferencia, al contrario que la notación algebraica, ya que
el proceso de apilamiento permite calcular la expresión por etapas.
En las calculadoras RPN, el cálculo se realiza sin tener que apretar la tecla "=" (aunque se
requiere pulsar la tecla "Enter" para añadir cifras a la pila).
5/10/2018 Shell de ejecución y verificación de sentencias matemáticas - slidepdf.com