Gramática del lenguaje codificador de objetos ideales
Imagínate un programa que siga la gramática expuesta para generar el código que define el objeto estudiante y el método para asignar día de inscripción.
En la gramática hay elementos de tres colores distintos, en negro están los elementos no-terminales que son auxiliares en el procesamiento en azul los elementos terminales que genera el programa y en rojo los datos que proporciona el usuario, éstos son de dos tipos, los que teclea (identificados con una T) y los que selecciona de una lista de opciones (identificados con S).
softbot --> <softbot nombre="ejemplo" (T) > datos metodos </softbot>
datos --> <datos> objeto
objeto --> <etiqueta> contenido </etiqueta> objeto |</datos>
contenido --> objeto | dato
etiqueta --> texto (T)
dato --> numero | fecha | logico | texto (S)
metodos --> <metodos> metodo </metodos>
metodo --> <metodo nombre="metodo 1" (T)> instruccion </metodo>
instruccion --> <decision> condicion verdadero (falso)+ </decision> //0 ó 1 vez
| <asignacion> <variable> texto </variable>
<operando> alfanumerico(T)</operando></asignacion>
condicion --> <condicion>alfanumerico(T)</condicion>
verdadero --> <verdadero> metodo</verdadero>
falso --> <falso> metodo</falso>
<softbot nombre="estudiante">
<datos>
<estudiante>
<boleta>numero</boleta>
<promedio>numero</promedio> // los nombres de etiquetas (T) y el tipo de dato (S)
<reprobadas>numero</reprobadas>
<dia>numero</dia>
</estudiante>
</datos>
<metodos>
<metodo>
<decision>
<condicion>reprobadas=0 y promedio >8</condicion>
<verdadero><metodo>
<asignacion><variable>dia</variable>
<operando>1</operando></asignacion></metodo>
</verdadero>
<falso><metodo>
<decision>
<condicion>reprobadas=0 y promedio< 8</condicion>
<verdadero><metodo>
<asignacion>
<variable>dia</variable>
<operando>2</operando>
</asignacion></metodo>
</verdadero>
<falso><metodo>
<decision>
<condicion>reprobadas=1 o reprobadas=2</condicion>
<verdadero><metodo>
<asignacion>
<variable>dia</variable>
<operando>3</operando>
</asignacion></metodo>
</verdadero>
<falso>
<metodo>
<asignacion>
<variable>dia</variable>
<operando>4</operando></asignacion>
</metodo>
</falso>
</decision></metodo>
</falso>
</decision>
</metodo>
</falso>
</decision>
</metodo>
</metodos>
</softbot>