lunes, 14 de septiembre de 2009

Bison


BISON

GNU bison es un programa generador de analizadores sintácticos de propósito general perteneciente al proyecto GNU disponible para prácticamente todos los sistemas operativos, se usa normalmente acompañado de flex aunque los analizadores léxicos se pueden también obtener de otras formas.


Bison convierte la descripción formal de un lenguaje, escrita como una gramática libre de contexto LALR, en un programa en C, C++, o Java que realiza análisis sintáctico. Es utilizado para crear analizadores para muchos lenguajes, desde simples calculadoras hasta lenguajes complejos. Para utilizar Bison, es necesaria experiencia con el la sintaxis usada para describir gramáticas.

GNU bison tiene compatibilidad con Yacc: todas las gramáticas bien escritas para Yacc, funcionan en Bison sin necesidad de ser modificadas. Cualquier persona que esté familiarizada con Yacc podría utilizar Bison sin problemas.
Bison fue escrito en un principio por Robert Corbett; Richard Stallman lo hizo compatible con Yacc y Wilfred Hansen de la Carnegie Mellon University añadió soporte para literales multicaracter y otras características.

Fuente Bison (ej2.y)
%{
int numMedidas = 0;
%}
%union{
int valInt;
float valFloat;
}
%token tCentigrados tFarenheit
%token tHora
%token tValorTemperatura
%type TEMPERATURA MEDICION LISTA_TEMPERATURAS
%start S
%%
S : LISTA_TEMPERATURAS {printf("Temperatura Media en Total: %f C\n",
$1/(float)numMedidas);}
;

LISTA_TEMPERATURAS : LISTA_TEMPERATURAS MEDICION {$$ = $1 + $2; numMedidas++;}
MEDICION {$$ = $1; numMedidas++;} ;
MEDICION : tHora TEMPERATURA { if ($1 == 12) {
printf ("Temp a las 12 son: %f C\n", $2);
}
$$ = $2;
}
;
TEMPERATURA : tValorTemperatura tCentigrados {$$ = $1;}
tValorTemperatura tFarenheit {$$ = (($1 - 32.0) * 5.0) / 9.0;}
;
%%
main() {
yyparse();
}
Compilar
flex ej1.l
bison ej2.y -yd
gcc lex.yy.c y.tab.c -ll -ly

martes, 8 de septiembre de 2009

OBJETIVOS

Sencillo y familiar: sencillo para que no requiera grandes esfuerzos de entrenamiento

Para los programadores familiar por que será comprendido por sus desarrolladores de forma muy fácil.

FILOSOFIA

Este lenguaje de programación esta orientado en una forma directa consistiendo en que siempre se tenga respuesta a su algoritmo y le sea fácil programar.

GRAMATICA

Programa- lista_sentencias.

Lista_sentencias- lista_sentencias sentencias.

Lista _sentencias

Sentencias- loop

Sentencias- IFR

Loop- loop (condición) sentencia

Loop- loop (condición) {lista_sentencias}

IFR- IFR (condición) sentencias

IFR- IFR (condición) {lista_sentencias}

IFR_LS- IFR_LS sentencias

IFR_LS- IFR_LS {lista_sentencias}

Condición – condición lógica condición AND | condición OR

Condición_AND – condición_lógica && condición_lógica

Condición – EE| E<=E| E>=E| E==E| E!=E

E - E+T| E-T| T

T- T*T| T/F| F

F – I|C

lunes, 31 de agosto de 2009

Iniciando

Saludos compañeros iniciando este blog para iniciar un nuevo semestre en la materia de programacion de sistemas.