Hola amig@s, necesito ayuda con una práctica que tengo que realizar en lex y yacc como trabajo final de una materia. si alguno pudiera ver por donde podría empezar o algo le estaría agradecido ya que estamos intentando sacarla pero no conseguimos mucho :s.la practica es la siguiente:
El alfabeto está constituído por las letras minúsculas del alfabeto inglés, los dígitos y los símbolos - (guión), < (ángulo izquierdo), (, ) (paréntesis), +, *, /, %, y . (punto).
Las sentencias pueden ser de asignación o de impresión, y todas terminan con un punto.
El programa termina cuando lo hace el fichero de entrada (Control-D si la entrada es desde el teclado).
La sentencia de asignación puede ser múltiple, y asigna el valor de la última expresión a las precedentes. El operador de asignación es <-. Por ejemplo, las sentencias a <- b <- c <- 3+4. d<-b. asignarían el valor 7 a las variables a, b, c y d.
Las constantes son enteras y positivas, en formato decimal o hexadecimal, en cuyo caso están constituídas por una sucesión de dígitos hexadecimales seguidos por una h.
Los identificadores de variable son cadenas de letras y dígitos que comiencen por una letra y no sean la palabra print ni puedan interpretarse como constantes. La longitud máxima del identificador de una variable es LONGMAX. Puede suponerse que no habrá más de NMAX variables.
Los operadores son los siguientes, con las precedencias y asociatividades habituales:
operador significado ejemplos
+ suma 3+4 = 7
- monus: diferencia si positiva, 0 si no 5-3 = 2; 3-5 = 0
* producto 5*3=15
/ cociente entero 15/6=2
% resto de la división entera 15%6=3
Los paréntesis tienen el uso habitual en las expresiones.
Las variables que se usen sin haberles asignado valor tendrán un valor inicial 0.
La sentencia de impresión tiene la forma print expresión, y su efecto es la impresión por pantalla del valor de la expresión. Si la expresión es una sola variable, antes del valor se imprimirá el nombre de la variable seguido del símbolo =. Si el valor no está determinado (por ejemplo, en una división por 0), en lugar del valor se imprimirá la palabra “indeterminado”.