ANÁLISIS LÉXICO SINTÁCTICO Y SEMÁNTICO PARA ECUACIONES DE SEGUNDO GRADO

jueves, 17 de febrero de 2011

ANALIZADOR LÉXICO




DEFINICION DE LA GRAMATICA

G={VT,VN,S,R}

VT={1……9,a……z,2,1,0,4,=,raíz,(,)}

VN= {ecuación, asig, numeronulo,  variable, segundo, primerO, terceroO, exp, numerodef, parentesisI, parentesisC, discrimante, Raiz}

R=


REGLAS GRAMATICALES


     S                             -> ecuación asig numeronulo| ecuacion
ecuacion                 -> primerO operador segundoO operador tercerO | primerO operador segundo | primerO operador tercerO | primerO |operador ecuación |operador primeroO raíz discrimante |segundoO
primerO                   -> numero variable exp| variable exp
segundoO               -> numero variable| variable | segudoO variable
tercerO                   -> numero | variable
discriminante       -> parentesisI ecuacion operador ecuación parentesisC
numero                  -> 1……….9
variable                -> a………z
exp                         -> 2 | 1
asig                        -> =
numeronulo         ->  0
numerodef          -> 4
operador             -> + |- |/ | *
parentesisI         -> (
parentesisC      ->  )
Raiz                     ->  raiz

Ejemplo de la gramática
·         2x2+3x-4


ANALIZADOR SEMÁNTICO



     S                         ->  ecuación asig numeronulo | ecuación
Print(ecuación.val asig.valex numeronulo.valex)
Print(ecuación.val)
ecuacion           ->  ecuación.val operador tercerO | primerO operador segundoO | primerO |operador ecuación |operador primeroO raíz discrimante |segundo
    ecuación.val = ecuación.val operador.valex terceroO.val                                      
    ecuación.val =primero.val operador.valex segundo.val
    ecuación.val = operador.val ecuación.val
    ecuación.val = operador.valex primero.val raíz.valex discriminante.val
    ecuación.val = segundo.val
primeroO     ->  numero variable exp| variable exp
primero,val = numero.valex variable.valex exp.valex                                     
primero,val =variable.valex exp.val

segundoO  -> numero variable| variable | segudoO variable
    segundo.val = numero.valex variable.valex
    segundo.val =variable.valex
    segundo.val =segundo.val variable.valex

tercerO  -> numero | variable
tercero.val= numero.val
tercero.val= variable.val
discriminante         ->  parentesisI ecuacion operador ecuación parentesisC
discriminante.val= parentesisI.valex ecuación.val operador.valex                    ecuación.val parentesisC.valex
numero                        ->  1……….9
numero.valex = 1.valex| 2.valex |3.valex|4.valex|5.valex|6.valex|7.valex 1 8.valex|9.valex
variable                       ->  a………z
variable.valex= a.valex………….z.valex
exp                                   ->  2
exp.valex=2.valex
asig                                  ->  =
asig.valex = =.valex
numeronulo                ->  0
numeronulo.valex = 0.valex
numerodef                   ->  4
numerodef.valex =4.valex
operador             ->   + |- |/ | *
operador.valex = +.valex | -.valex | /.valex | *.valex
parentesisI                ->  (
parentesisI.valex = (.valex
parentesisC             ->  )
parentesisC.valex = ).valex
Raiz                          ->  raíz
Raíz.val=raíz.valex