jueves, 3 de febrero de 2011

Toshiba Dynabook Qosmio T750, una estupenda laptop que cambia de color

Toshiba Dynabook Qosmio T750

una de las cosas mas importantes hoy en dia son las computadoras. es un equipo indispensable para casi toda actividad.
en esta ocasion toshiba trae su nuevo modelo Toshiba Dynabook Qosmio T750 l

caracteristicas

-Procesador: Intel Core i5-480M a 2.66GHz

-RAM: 4GB de DDR3

-Espacio en disco: 750GB

-Pantalla: 15,6 pulgadas con retroiluminación LED y resolución de 1366×768

-Unidad: grabadora de DVD

es muy completa y se adapta a cualquier utilidad.

mas en:

http://tecnomagazine.net/2011/02/03/toshiba-dynabook-qosmio-t750-una-estupenda-laptop-que-cambia-de-color/

China bloquea la palabra Egipto en busquedas de Twitter

Las autoridades chinas han bloqueado la palabra "Egipto" en las búsquedas del popular servicio de microblogs Twitter y la cobertura sobre las revueltas egipcias en los medios oficiales está siendo limitada.

mas en:

miércoles, 2 de febrero de 2011

JavaCC

El generador JavaCC (Java Compiler Compiler) es una herramienta para generar programas escritos en lenguaje Java; acepta como entrada una especificación de un determinado lenguaje y produce como salida un analizador para ese lenguaje. En la manera más simple de funcionamiento, la especificación proporcio-nada define las características sintácticas y lexicográficas de un lenguaje y se genera un analizador léxico-sintáctico del lenguaje especificado; pero también es posible completar una especificación léxico-sintáctica con la inclusión adecuada de código para que el programa generado llegue a ser un analizador completo del lenguaje.

Obtención de un analizador léxico-sintáctico

Pasos para la generación del analizador

1.- Edición de la especificación (editor de texto plano)

vi | edit |· · · NombreFichero.jj

(el nombre del fichero puede tener cualquier extensión; suele usarse .jj)

2.- Ejecución del generador

javacc NombreFichero.jj

Si el nombre elegido para la especificación es NombreDeLaEspecif (más adelante se indica la manera de dar un nombre a la especificación), como resultado de la generación se obtiene (además de otros ficheros auxiliares) el fichero

NombreDeLaEspecif.java

3.- Compilación del analizador generado

javac NombreDeLaEspecif.java

Como resultado de la compilación se obtiene (además de otras clases auxiliares) el fichero

NombreDeLaEspecif.class

Ejecución del analizador generado

Si el nombre del fichero donde se encuentra el texto fuente (escrito en el lenguaje para el que se ha genera-do el analizador) que se pretende analizar es Programa.len

java NombreDeLaEspecif <>

Si se desea que los resultados del análisis, en vez de presentarse por pantalla, queden grabados en un fi-chero de nombre Salida.dat

java NombreDeLaEspecif <> Salida.dat

Ejemplo de presentación

Descripción del lenguaje

El lenguaje L está formado por las expresiones en las que pueden aparecer:

- variables

- constantes

- operadores + y *

Las variables son nombres formados por una única letra (minúscula o mayúscula); las constantes son nú-meros enteros de una o más cifras. El espacio y el tabulador pueden estar presentes, pero no tienen ningún significado; los finales de línea tampoco son significativos (una expresión puede codificarse ocupando una o más líneas).

La sintaxis de las expresiones se especifica mediante la siguiente gramática:

::= { + }

::= { * }

::= variable

| constante

| ( )

Especificación léxico-sintáctica codificada con la notación JavaCC

Una manera de escribir la especificación (para la que se ha elegido el nombre ExprMin) de forma que sea aceptada por el generador es:

options { Ignore_Case = true; }

PARSER_BEGIN (ExprMin)

public class ExprMin {

public static void main (String[] argum) throws ParseException {

ExprMin anLexSint = new ExprMin (System.in);

anLexSint.unaExpresion();

System.out.println("Análisis terminado:");

System.out.println

("no se han hallado errores léxico-sintácticos");

}

}

PARSER_END (ExprMin)

void unaExpresion() :

{ }

{

expresion()

}

void expresion() :

{ }

{

termino() ( "+" termino() )*

}

void termino() :

{ }

{

factor() ( "*" factor() )*

}

void factor() :

{ }

{

|

| "(" expresion() ")"

}

TOKEN:

{

<>

}

TOKEN:

{

<>

}

SKIP:

{ " " | "\t" | "\n" | "\r" }

Obtención del analizador

Si la especificación precedente se tiene grabada en un fichero de nombre Ejemplo.jj, para obtener el analizador:

- se ejecuta el generador: javacc Ejemplo.jj

- se compila el analizador generado: javac ExprMin.java

Ejecución del analizador

Si se quiere analizar una expresión grabada en un fichero de nombre PruebaExp.txt:

  • se ejecuta el analizador obtenido: java ExprMin <>


Webgrafia:

http://www.lpsi.eui.upm.es/webcomp/jgperez/java/IntrodJavaCC.pdf





ANTLR

Es el nombre de a generador del programa de análisis ese aplicaciones LL (*) análisis. ANTLR es el sucesor a Sistema de herramienta de la construcción del recopilador de Purdue (PCCTS), primero convertido en 1989, y está en el desarrollo activo. Su sostén es profesor Parr de Terence de Universidad de San Francisco.

Las reglas de ANTLR se expresan en un formato deliberadamente similar a EBNF en vez de expresión regular sintaxis empleado por otros generadores del programa de análisis.

En el momento que, ANTLR apoya la generación de código en las idiomas siguientes: C, C++,Java, Python, C#, Objetivo-c. ANTLR 3 está bajo cláusula 3 Licencia del DEB.

Es un generador de lenguajes, a partir de la especificación de un lenguaje a partir de una gramática podemos:

  • Reconocer si un programa (o palabra) cumple una especificación.
  • Traducir el programa (o palabra) a otro lenguaje.
  • Realizar alguna serie de órdenes.

A veces nos interesara definir el lenguaje de una forma más laxa. Admitimos palabras/programas que en principio no tengan mucho sentido porque:

  • Es más fácil definir la gramática.
  • La estructura que define expresa la estructura que buscamos.

Para introducir una gramática en ANTLR, se debe utilizar la notación EBNF. ATENCIÓN, DIFERENTES FORMAS DE DECIR LA GRAMÁTICA NO FUNCIONAN IGUAL.

Ejemplo de utilización de ANTLR

Definamos una gramática para el lenguaje de los paréntesis.

grammar prueba;

principal

: ’(’ principal ’)’|;

Primera prueba, ¿Como definir una gramática para que acepte lo mismo añadiendo los corchetes?

Encontrando una Grámatica

Queremos estudiar un lenguaje de programación.

¿Donde está la información?

¿Que diferencia hay entre elegir una gramática u otra?

Ejemplo de utilización de ANTLR

grammar prueba;

principal

: SI principal1 (CONTRA principal)?|ALGO;

principal1

: SI principal1|ALGO;

SI : ’sib’;

CONTRA : ’en_otro_caso’;

ALGO : ’algo’;

WS : (’\n’|’\t’|’\r’|’ ’)+{skip();};

grammar suma;

start : expresion;

expresion

: NUMERO OPERADOR expresion| NUMERO;

NUMERO : ’0’..’9’+;

OPERADOR: ’+’;

ESPACIOS: (’\n’|’\r’|’\t’){skip();};

Webgrafia:

http://www.worldlingo.com/ma/enwiki/es/ANTLR

http://personales.unican.es/gomezd/Talf/antlr.pdf

Tambien:

http://www.worldlingo.com/ma/enwiki/es/Compiler-compiler ( generador del programa de análisis)

http://www.worldlingo.com/ma/enwiki/es/LL_parser (LL (*))

http://www.worldlingo.com/ma/enwiki/es/Terence_Parr ( Parr de Terence)

http://www.worldlingo.com/ma/enwiki/es/Extended_Backus%E2%80%93Naur_Form ( EBNF)

http://www.worldlingo.com/ma/enwiki/es/Regular_expression (Expresion regular)

http://www.sgoliver.net/blog/?page_id=30 (Libro Gratuito ANTLR 3 Proyecto FKScript)