Skip to content

Latest commit

 

History

History
136 lines (113 loc) · 3.64 KB

File metadata and controls

136 lines (113 loc) · 3.64 KB

Gramáticas libres de contexto

Primera gramática: sintaxis de Stókhos

<entrada> -> <instruccion> | <expresion>

<instruccion> -> <definicion> | <asignacion>

<definicion> -> <tipo> <lvalues> := <expresion> ;
<asignacion> -> <lvalues> := <expresion> ;

<tipo> -> <tipoBasico> 
       -> [<tipo>]

<tipoBasico> 
        -> num
        -> bool

<expresion>
        -> <número>
        -> <identificador>
        -> (<expresion>)
        -> [<expresion>]
        -> <expresion>^<expresion>
        -> +<expresion>
        -> -<expresion>
        -> <expresion> * <expresion>
        -> <expresion> / <expresion>
        -> <expresion> % <expresion>
        -> <expresion> + <expresion>
        -> <expresion> - <expresion>
        -> <booleano>
        -> !<expresion>
        -> <expresion> < <expresion>
        -> <expresion> <= <expresion>
        -> <expresion> >= <expresion>
        -> <expresion> > <expresion>
        -> <expresion> = <expresion>
        -> <expresion> <> <expresion>
        -> <expresion> && <expresion>
        -> <expresion> || <expresion> 
        -> [<expresion>]
        -> <identificador>[<expresion>]       
        #(acomodar para <expresion>[<expresion>])   
        -> <expresion> , <expresion>
        -> <identificador>(<expresion>)     
        -> '<expresion>'

# <funcion>
#         -> if(<condición>, < expT>, < expF>)
#         -> type(<exp>)
#         -> ltype(<exp>)
#         -> reset()
#         -> uniform()
#         -> floor(<exp>)
#         -> length(<exp>)
#         -> sum(<exp>)
#         -> avg(<exp>)
#         -> pi()
#         -> now()

Segunda gramática: Utilizada para la construcción del reconocedor.

<entrada> -> 
          -> <instruccion> 
          -> <expresion>
          
<instruccion> -> <definicion> | <asignacion>

<definicion> -> <tipo> <lvalues> TkAssign <expresion> TkSemicolon
<asignacion> -> <lvalues> TkAssign <expresion> TkSemicolon

<tipo> -> <tipoBasico> 
       -> TkOpenBracket <tipo> TkCloseBracket

<tipoBasico> 
        -> TkNum
        -> TkBool

<lvalues> -> <identificador>
          -> <expresionArreglo>

<expresion>
        -> <numero>
        -> <identificador>
        -> TkOpenPar <expresion> TkClosePar
        -> TkOpenBrace <expresion> TkCloseBrace
        -> TkSingleQuote <expresion> TkSingleQuote
        -> TkOpenBracket expresionArgs TkCloseBracket
        -> <expresion> TkPower <expresion>
        -> TkPlus <expresion>
        -> TkMinus <expresion>
        -> <expresion> TkMult <expresion>
        -> <expresion> TkDiv <expresion>
        -> <expresion> TkMod <expresion>
        -> <expresion> TkPlus <expresion>
        -> <expresion> TkMinus <expresion>
        -> <booleano>
        -> TkNot <expresion>
        -> <expresion> TkLT <expresion>
        -> <expresion> TkLE <expresion>
        -> <expresion> TkGE <expresion>
        -> <expresion> TkGT <expresion>
        -> <expresion> TkEQ <expresion>
        -> <expresion> TkNE <expresion>
        -> <expresion> TkAnd <expresion>
        -> <expresion> TkOr <expresion>   
        -> <expresionArreglo>
        -> <expresionFunciones>


<numero> -> TkNumber

<identificador> -> TkId

<booleano>
        -> TkTrue
        -> TkFalse

<expresionArreglo>
        -> <identificador> TkOpenBracket <expresion> TkCloseBracket
        -> <expresionArreglo> TkOpenBracket <expresion> TkCloseBracket
        #-> <expresion> TkOpenBracket <expresion> TkCloseBracket
        #-> <identificador> TkOpenBracket <expresion> TkCloseBracket

<expresionArgs>
        -> 
        -> <expresion>  
        -> <expresion> , <expresionArgs>

<expresionFunciones>
        -> <identificador> TkOpenPar <expresionArgs> TkClosePar