FIRST(X) para un símbolo gramatical X es el conjunto de terminales que comienzan las strings derivables de X.
Reglas para calcular el PRIMER conjunto:
- Si x es un terminal, entonces PRIMERO(x) = { ‘x’ }
- Si x-> Є, es una regla de producción, agregue Є a FIRST(x).
- Si X->Y1 Y2 Y3….Yn es una producción,
- PRIMERO(X) = PRIMERO(Y1)
- Si PRIMERO(Y1) contiene Є entonces PRIMERO(X) = { PRIMERO(Y1) – Є } U { PRIMERO(Y2) }
- Si PRIMERO (Yi) contiene Є para todo i = 1 a n, entonces agregue Є a PRIMERO (X).
Ejemplo 1:
Production Rules of Grammar E -> TE’ E’ -> +T E’|Є T -> F T’ T’ -> *F T’ | Є F -> (E) | id FIRST sets FIRST(E) = FIRST(T) = { ( , id } FIRST(E’) = { +, Є } FIRST(T) = FIRST(F) = { ( , id } FIRST(T’) = { *, Є } FIRST(F) = { ( , id }
Ejemplo 2:
Production Rules of Grammar S -> ACB | Cbb | Ba A -> da | BC B -> g | Є C -> h | Є FIRST sets FIRST(S) = FIRST(ACB) U FIRST(Cbb) U FIRST(Ba) = { d, g, h, b, a, Є} FIRST(A) = { d } U FIRST(BC) = { d, g, h, Є } FIRST(B) = { g , Є } FIRST(C) = { h , Є }
Notas:
- La gramática utilizada anteriormente es la gramática libre de contexto (CFG). La sintaxis de la mayor parte del lenguaje de programación se puede especificar usando CFG.
- CFG tiene la forma A -> B , donde A es un solo No-Terminal, y B puede ser un conjunto de símbolos gramaticales (es decir, Terminales y No-Terminales)
En el siguiente artículo, «Conjuntos de SEGUIMIENTO en el diseño del compilador», veremos cómo calcular los conjuntos de seguimiento.
Este artículo ha sido compilado por Vaibhav Bajpai . Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA