tag:blogger.com,1999:blog-75829022024-03-08T05:25:06.249-08:00vnsjavaEsto es el weblogs de vnsjavavictor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.comBlogger81125tag:blogger.com,1999:blog-7582902.post-34665596707441331392008-10-24T04:34:00.000-07:002008-10-24T04:41:26.988-07:00Regular expression para IPv4 y IPv6Estos son los patrones para pasear con expresiones regulares los protocolos ipv4 y ipv6. Esto incluyes los netblock de los respectivos protocolos. Para el protocolo de ipv4 este patron no aceptas las direcciones reservadas (o especiales) como por ejemplo: 127.0.0.1.<br /><br />Para el el protocolo ipv6 si permite direcciones especiales (en este caso en muy complejo agregar la validaciones de estas).<br /><br />IPv4<br />^(1\d{0,2}|2(?:[0-4]\d{0,1}|[6789]|5[0-5]?)?|[3-9]\d?|0)\.(1\d{0,2}|2(?:[0-4]\d{0,1}|[6789]|5[0-5]?)?|[3-9]\d?|0)\.(1\d{0,2}|2(?:[0-4]\d{0,1}|[6789]|5[0-5]?)?|[3-9]\d?|0)\.(1\d{0,2}|2(?:[0-4]\d{0,1}|[6789]|5[0-5]?)?|[3-9]\d?|0)(\/(?:[012]\d?|3[012]?)){0,1}$<br /><br />IPv6<br />^[a-f0-9]{0,4}((\:)?|(\::)?)[a-f0-9]{0,4}((\:)?|(\::)?)[a-f0-9]{0,4}((\:)?|(\::)?)[a-f0-9]{0,4}((\:)?|(\::)?)[a-f0-9]{0,4}((\:)?|(\::)?)[a-f0-9]{0,4}((\:)?|(\::)?)[a-f0-9]{0,4}((\:)?|(\::)?)[a-f0-9]{0,4}(\/(?:[01236]\d?|1\d[0-8]?)){0,1}$victor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com0tag:blogger.com,1999:blog-7582902.post-37581534074834388062008-03-24T12:32:00.000-07:002008-03-24T12:37:32.557-07:00SCJP 1.5 and SCWCD 1.5Despues de un buen tiempo fuera de mi blog, vuelvo ahora con esta buenas nuevas.<br /><br />Bueno ya obtuve dos certificaciones SCJP 1.5 y SCWCD 1.5 :) en dos meses. Quisiera saber quien es que hace las preguntas del examen por quisiera decirle un san antonio ;)<br /><br />Dios... que fuerte.<br /><br /><br />Bueno, esta claro que no me quedaré en estas dos certificaciones.<br /><br />:D ahora vamos por la SCDJWS y SCBCD 1.5victor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com4tag:blogger.com,1999:blog-7582902.post-64797132944069909412007-08-17T10:36:00.000-07:002007-08-17T10:40:24.575-07:00ant problem “Could not find the main class. Program will exit.”Bueno, para los que han tenido este <a href="http://www.herrodius.com/blog/?p=42">problemita</a> igual que yo, entonces encontré a alguien que sabia como arreglarlo.<br /><br />En detalle es cuando cambio entre folder de Eclipse, entonces la varible ANT_HOME se queda apuntando a la vieja dirección. Y eclipse te dice “Could not find the main class. Program will exit.” cuando tratas de correr el ant :( así que ni idea de cual era el problema.victor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com1tag:blogger.com,1999:blog-7582902.post-27046498999857818542007-06-17T10:46:00.000-07:002007-06-13T06:40:29.827-07:00Web SemánticaAndo detrás de Web Semántica para mi Spider implementado en Jade.<br /><br />Este <a href="http://www.oreillynet.com/xml/blog/2006/12/the_semantic_web_everything_yo.html?CMP=OTC-TY3388567169&ATT=The+Semantic+Web+Everything+you+wanted+to+know+but+were+too+afraid+to+ask">artículo</a> describe muy bien aunque de forma aérea. Ahora estoy buscando la manera de implementar la búsqueda y análisis de los RDF para el Spider. También al mismo tiempo, pienso agregarle funcionalidad de lectura para los RSS creo que será más fácil el desarrollo de RSS.<br /><br />Para la web semántica utilizaré <a href="http://jena.sourceforge.net/">Jena</a>, el cual parece ser un proyecto muy maduro. Para RSS no se aún pero estoy viendo <a href="http://jakarta.apache.org/commons/sandbox/feedparser/">Commons FeedParser</a>, pero también estoy dandole un vistazo a <a href="http://www.rssowl.org/">RSSOWL</a> y a <a href="http://informa.sourceforge.net/">Informa</a>.<br /><br />También estoy buscando la manera de navegación en paginas con javascript, de tal manera que el agente pueda interactuar con estas. Para esto estoy viendo el api llamada Rhino de mozilla, o pudiera usar Chickenfoot el cual es muy potente a la hora de hacer script para automatizar la navegación.<br /><br />Además estoy buscando la manera de almacenar las paginas en cache, esto es fácil de implementar.victor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com0tag:blogger.com,1999:blog-7582902.post-80845927953815890592007-06-16T04:34:00.000-07:002007-06-13T06:37:53.475-07:00Hacking Firefox: The secrets of about:configUn <a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&articleId=9020880">artículo</a> de un poco de hacking en Firefox, me gusto mucho, principalmente por la parte de que queda configurado para que no consuma tanta memoria de mi computadora. Aunque hay un sacrificio de rendimiento.victor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com0tag:blogger.com,1999:blog-7582902.post-83237122112521810092007-06-14T11:39:00.000-07:002007-06-13T06:43:23.415-07:00Spelling EclipseUn <a href="http://www.javalobby.org/java/forums/t17453.html">artículo</a> para poder implementar el corrector de palabras en Eclipse.victor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com0tag:blogger.com,1999:blog-7582902.post-79187548716184304342007-06-14T08:39:00.000-07:002007-06-13T06:34:17.735-07:005 tips para saber a quien contratarEn este <a href="http://blogs.atlassian.com/rebelutionary/archives/2007/03/life_is_a_hire_way_5_tips_for_startup_hi.html"> blog</a> se puede ver cuales solo los requisitos que se deberían tomar en cuanta a la hora de contratar una persona.<br /><br />Por ejemplo:<br />- El reclutamiento es mercadeo (vende la empresa, vende el puesto)<br />- Confianza en el equipo (si contratas a alguien no deberías preguntarle al equipo con quien va a trabajar el nuevo?)<br />- No ganes con dinero (el dinero es importante pero los beneficios y el ambiente de trabajo también, debe haber un balance) tratas con personas no productos.<br />- Guarda espacio para las personas inteligentes (contratar a las personas por su entusiasmo por hacer lo que saben hacer puede ser aprovechado por la empresa a pesar de que la empresa no tenia esos planes, pero la persona es ideal para eso)<br />- Saber cuando dejar pasar. Bueno en este punto hay tres preguntas que deberías hacerte antes de contratar a una persona:<br />1. Quieres a esa persona en tu equipo?<br />2. Pasa esta persona la prueba de la cerveza? (Si te gustaría *compartir con esta persona)<br />3. Es esta persona apasionada, entusiasta, positiva?<br /><br />Por ultimo:<br /><h4>Quickie Bonus Tip: No Keyword Hiring</h4>Que significa no contrates basado en el SIGLAS de tecnologías, el explica que muchas de los mejores no pasan esta pruebas, que contradicción.<br /><br />* En un bar, restaurant, etc. y si aprenderias algo de esa persona de manera personal.victor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com0tag:blogger.com,1999:blog-7582902.post-1152476017543322982007-06-13T13:10:00.000-07:002007-06-13T06:44:41.492-07:00Smartly load your propertiesUna <span class="blsp-spelling-error" id="SPELLING_ERROR_0">manera</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_1">inteligente</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_2">de</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_3">cargar</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_4">tus</span> properties en Java.<br /><br /><a href="http://www.javaworld.com/javaworld/javaqa/2003-08/01-qa-0808-property.html">Smartly load your properties</a>victor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com1tag:blogger.com,1999:blog-7582902.post-19431876965827399262007-06-08T04:38:00.000-07:002007-06-13T06:03:20.600-07:00Eclipse TIPSUna página web con buenos tips de eclipse, aquí encontré como eliminar los espacios al final de las líneas en un archivo.<br /><br />http://www.newt.com/java/eclipse/victor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com0tag:blogger.com,1999:blog-7582902.post-90632554461188741552007-04-21T05:30:00.000-07:002007-04-21T05:42:49.283-07:00Mylar en EclipseMylar es un proyecto que busca integrar la parte colaborativa en Eclipse, es decir su usa bugzilla ya no tienes que salir del IDE, muchos diran ya plugins para eso si pero ninguno que yo sepa hace task focus (enfoque en tareas) como lo hace Mylar :), así que Mylar no es solo integración es eso y más.<br /><br />Solo tuve que ver el <a href="http://adobedev.adobe.acrobat.com/p46246963/">webinar</a> para decir un WOW :), esta es la contribución a Eclipse más importante después del mismo Eclipse, y es mucho decir ;).<br /><br />Tienen que darle un ojo a este impresionante plugin, para los que trabajan al estilo de tareas y bugs en Eclipse se sentirán aliviados :)victor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com0tag:blogger.com,1999:blog-7582902.post-41479775629893806072007-04-03T04:13:00.000-07:002007-04-03T06:55:57.627-07:00Problemas al ejecutar el task de JUnit de Ant en EclipseDe seguro muchos como yo han tenido problemas al ejecutar el ant task de junit con eclipse.<br /><br /><pre style="background: rgb(255, 255, 255) none repeat scroll 0% 50%; color: rgb(0, 0, 0); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="color: rgb(127, 0, 85);"><</span><span style="color: rgb(127, 0, 85);">junit</span> fork=<span style="color: rgb(42, 0, 255);">"</span><span style="color: rgb(42, 0, 255);">true</span><span style="color: rgb(42, 0, 255);">"</span> haltonerror=<span style="color: rgb(42, 0, 255);">"</span><span style="color: rgb(42, 0, 255);">false</span><span style="color: rgb(42, 0, 255);">"</span><span style="color: rgb(127, 0, 85);">></span> <br /> <span style="color: rgb(127, 0, 85);"><</span><span style="color: rgb(127, 0, 85);">classpath</span> location=<span style="color: rgb(42, 0, 255);">"</span><span style="color: rgb(42, 0, 255);">${build_testclassdir}</span><span style="color: rgb(42, 0, 255);">"</span> <span style="color: rgb(127, 0, 85);">/></span><br /> <span style="color: rgb(127, 0, 85);"><</span><span style="color: rgb(127, 0, 85);">classpath</span> refid=<span style="color: rgb(42, 0, 255);">"</span><span style="color: rgb(42, 0, 255);">test.build.classpath</span><span style="color: rgb(42, 0, 255);">"</span> <span style="color: rgb(127, 0, 85);">/></span><br /><br /> <span style="color: rgb(127, 0, 85);"><</span><span style="color: rgb(127, 0, 85);">test</span> name=<span style="color: rgb(42, 0, 255);">"</span><span style="color: rgb(42, 0, 255);">${package}.AllTests</span><span style="color: rgb(42, 0, 255);">"</span> todir=<span style="color: rgb(42, 0, 255);">"</span><span style="color: rgb(42, 0, 255);">${testlogdir}</span><span style="color: rgb(42, 0, 255);">"</span><span style="color: rgb(127, 0, 85);">></span><br /> <span style="color: rgb(127, 0, 85);"><</span><span style="color: rgb(127, 0, 85);">formatter</span> type=<span style="color: rgb(42, 0, 255);">"</span><span style="color: rgb(42, 0, 255);">plain</span><span style="color: rgb(42, 0, 255);">"</span> usefile=<span style="color: rgb(42, 0, 255);">"</span><span style="color: rgb(42, 0, 255);">true</span><span style="color: rgb(42, 0, 255);">"</span><span style="color: rgb(127, 0, 85);">/></span><br /> <span style="color: rgb(127, 0, 85);"><</span><span style="color: rgb(127, 0, 85);">formatter</span> type=<span style="color: rgb(42, 0, 255);">"</span><span style="color: rgb(42, 0, 255);">xml</span><span style="color: rgb(42, 0, 255);">"</span> usefile=<span style="color: rgb(42, 0, 255);">"</span><span style="color: rgb(42, 0, 255);">true</span><span style="color: rgb(42, 0, 255);">"</span><span style="color: rgb(127, 0, 85);">/></span><br /> <span style="color: rgb(127, 0, 85);"></</span><span style="color: rgb(127, 0, 85);">test</span><span style="color: rgb(127, 0, 85);">></span><br /> <br /><span style="color: rgb(127, 0, 85);"></</span><span style="color: rgb(127, 0, 85);">junit</span><span style="color: rgb(127, 0, 85);">></span><br /></pre>El problema esta en que se debe agregar el archivo junit.jar al directorio:<br />..\plugins\org.apache.ant_1.6.5 de eclipse\junit.jar<br /><br />Este archivo es la librería de junit la cual debe estar disponible para ejecutar el ant task.<br /><br />Nota: esto es para eclipse 3.2, no se si las versiones anteriores tienen este problema.victor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com0tag:blogger.com,1999:blog-7582902.post-65602632555137753652007-04-03T04:09:00.000-07:002007-04-03T04:13:10.977-07:00Eclipse subversion - Malformed network dataBueno en este <a href="http://blog.maxdunn.com/articles/2006/12/07/svn-malformed-network-data-error-in-eclipse">blog</a> encontré la solución al problema del cliente de subclipse el cual tenia este error cuando se hacia el checkout de un proyecto.victor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com0tag:blogger.com,1999:blog-7582902.post-49103089892065988182007-04-01T14:00:00.000-07:002007-05-05T02:38:31.007-07:00Video Tutorial de Ajax con PrototypeUn video tutorial hecho por mi :) explicando la creación de un chat utilizando ajax y java, para ajax se utiliza la herramienta archi conocida librería Prototype.<br /><br /><br /><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/aFj3i8bdZHc"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/aFj3i8bdZHc" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object><br /><br />Para poder ver el video en mejor resolusión <a href="http://www.youtube.com/v/3KG0Yd-Kt94">youtube</a>victor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com3tag:blogger.com,1999:blog-7582902.post-18193431050762072732007-03-26T06:52:00.000-07:002007-03-26T06:55:15.646-07:00Anti-patrones en AjaxUnos anti-Patrones que donde me incluyo haberlos utilizados para entregar rápido pero que cuestan a la hora de mantener la aplicación.<br /><br /><a href="http://www-128.ibm.com/developerworks/library/x-ajaxxml3/"><span style="font-weight: bold;">Cinco Anti-Patrones en Ajax</span></a>victor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com0tag:blogger.com,1999:blog-7582902.post-63164623908559540772007-03-26T04:51:00.000-07:002007-04-01T17:32:10.101-07:00Rhino: JavaScript for Java<span style="font-size:85%;"><span>Para implementar la funcionalidad de ejecución de javascript en mi SearchEngine con Agentes de Jade, estuve leyendo un articulo interesante sobre Rhino que es una implementación de Javascript para java que permite scripting en aplicaciones Java. Esto es posible en Java 6 como una nueva característica, ya puedes correr </span></span><span id="intelliTxt">PHP, Ruby, JavaScript, Python (or Jython)</span><span style="font-size:85%;"><span>.<br /><br />Por cierto, Rhino viene integrado en Java SE 6, por lo tanto si tiene Java SE 6 ya puedes utilizar esta característica.<br /><br />La características de este puedo mencionar:<br /></span></span><ul><li><span style="font-size:85%;"><span>Compilación de javascript (si quiere compilar en script para un mejor rendimiento)</span></span></li><li><span style="font-size:85%;"><span>Invocación de funciones.</span></span></li><li><span style="font-size:85%;"><span>Acceso a recursos de Java (Puedes importar clases de java, invocar métodos y objectos de Java )<br /></span></span></li><li><span style="font-size:85%;"><span>Y lo más obvio manejo de return del script que ejecutas.</span></span></li><li><span style="font-size:85%;"><span>Ejecutas el script desde hard code en java (lo cual no tendría mucha diferencia con lo que podrias hacer en java) y ejecución de script almacenado en un archivo.</span></span></li><li><span style="font-size:85%;"><span>Soporte para la ejecución de </span></span><span id="intelliTxt">PHP, Ruby, JavaScript, Python, etc dentro de Java con las características ya mencionadas. (Imaginate correr PHP en un servidor de Java EE y que puedas acceder desde PHP los objectos de java, javabean, ect.)<br /></span></li></ul><a href="http://www.onjava.com/pub/a/onjava/2006/04/26/mustang-meets-rhino-java-se-6-scripting.html"><span style="font-size:100%;">The Mustang Meets the Rhino: Scripting in Java 6</span></a><br /><br />Ejemplo:<br /><br /><pre style="background: rgb(255, 255, 255) none repeat scroll 0% 50%; color: rgb(0, 0, 0); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="color: rgb(127, 0, 85); font-weight: bold;">package</span><span style="color: rgb(127, 0, 85);"> org</span><span style="color: rgb(127, 0, 85);">.</span><span style="color: rgb(127, 0, 85);">vnssoftware</span><span style="color: rgb(127, 0, 85);">;</span><br /><br /><span style="color: rgb(127, 0, 85); font-weight: bold;">import</span><span style="color: rgb(127, 0, 85);"> javax</span><span style="color: rgb(127, 0, 85);">.</span><span style="color: rgb(127, 0, 85);">script</span><span style="color: rgb(127, 0, 85);">.</span><span style="color: rgb(127, 0, 85);">Bindings</span><span style="color: rgb(127, 0, 85);">;</span><br /><span style="color: rgb(127, 0, 85); font-weight: bold;">import</span><span style="color: rgb(127, 0, 85);"> javax</span><span style="color: rgb(127, 0, 85);">.</span><span style="color: rgb(127, 0, 85);">script</span><span style="color: rgb(127, 0, 85);">.</span><span style="color: rgb(127, 0, 85);">Compilable</span><span style="color: rgb(127, 0, 85);">;</span><br /><span style="color: rgb(127, 0, 85); font-weight: bold;">import</span><span style="color: rgb(127, 0, 85);"> javax</span><span style="color: rgb(127, 0, 85);">.</span><span style="color: rgb(127, 0, 85);">script</span><span style="color: rgb(127, 0, 85);">.</span><span style="color: rgb(127, 0, 85);">CompiledScript</span><span style="color: rgb(127, 0, 85);">;</span><br /><span style="color: rgb(127, 0, 85); font-weight: bold;">import</span><span style="color: rgb(127, 0, 85);"> javax</span><span style="color: rgb(127, 0, 85);">.</span><span style="color: rgb(127, 0, 85);">script</span><span style="color: rgb(127, 0, 85);">.</span><span style="color: rgb(127, 0, 85);">Invocable</span><span style="color: rgb(127, 0, 85);">;</span><br /><span style="color: rgb(127, 0, 85); font-weight: bold;">import</span><span style="color: rgb(127, 0, 85);"> javax</span><span style="color: rgb(127, 0, 85);">.</span><span style="color: rgb(127, 0, 85);">script</span><span style="color: rgb(127, 0, 85);">.</span><span style="color: rgb(127, 0, 85);">ScriptEngine</span><span style="color: rgb(127, 0, 85);">;</span><br /><span style="color: rgb(127, 0, 85); font-weight: bold;">import</span><span style="color: rgb(127, 0, 85);"> javax</span><span style="color: rgb(127, 0, 85);">.</span><span style="color: rgb(127, 0, 85);">script</span><span style="color: rgb(127, 0, 85);">.</span><span style="color: rgb(127, 0, 85);">ScriptEngineManager</span><span style="color: rgb(127, 0, 85);">;</span><br /><span style="color: rgb(127, 0, 85); font-weight: bold;">import</span><span style="color: rgb(127, 0, 85);"> javax</span><span style="color: rgb(127, 0, 85);">.</span><span style="color: rgb(127, 0, 85);">script</span><span style="color: rgb(127, 0, 85);">.</span><span style="color: rgb(127, 0, 85);">ScriptException</span><span style="color: rgb(127, 0, 85);">;</span><br /><br /><span style="color: rgb(127, 0, 85); font-weight: bold;">public</span> <span style="color: rgb(127, 0, 85); font-weight: bold;">class</span> Scripting {<br /> <span style="color: rgb(127, 0, 85); font-weight: bold;">public</span> <span style="color: rgb(127, 0, 85); font-weight: bold;">static</span> <span style="color: rgb(127, 0, 85); font-weight: bold;">void</span> main(<span style="color: rgb(127, 0, 85); font-weight: bold;">String</span>[] args) {<br /> ScriptEngineManager engineManager = <span style="color: rgb(127, 0, 85); font-weight: bold;">new</span> ScriptEngineManager();<br /> <br /> ScriptEngine engine = engineManager.getEngineByName(<span style="color: rgb(42, 0, 255);">"js"</span>);<br /> <br /> engine.put(<span style="color: rgb(42, 0, 255);">"age"</span>, 21);<br /> <span style="color: rgb(127, 0, 85); font-weight: bold;">try</span> {<br /> engine.put(<span style="color: rgb(42, 0, 255);">"age"</span>, 26);<br /> engine.put(<span style="color: rgb(42, 0, 255);">"noClaims"</span>, Boolean.TRUE);<br /> <span style="color: rgb(127, 0, 85); font-weight: bold;">Object</span> result = engine.eval(<br /> <span style="color: rgb(42, 0, 255);">"if (age < 25){ "</span> +<br /> <span style="color: rgb(42, 0, 255);">" riskFactor = 1.5;"</span> +<br /> <span style="color: rgb(42, 0, 255);">"} else if (noClaims) {"</span> +<br /> <span style="color: rgb(42, 0, 255);">" riskFactor = 0.75;"</span> +<br /> <span style="color: rgb(42, 0, 255);">"} else {"</span> +<br /> <span style="color: rgb(42, 0, 255);">" riskFactor = 1.0;"</span> +<br /> <span style="color: rgb(42, 0, 255);">"}"</span>);<br /> <span style="color: rgb(127, 0, 85); font-weight: bold;">System</span>.out.println(result);<br /> <br /> <span style="color: rgb(63, 127, 89);">// using javascript files</span><br /> <span style="color: rgb(63, 127, 89);">//engine.eval(new FileReader("c:/voting.js"));</span><br /> <br /> <span style="color: rgb(63, 127, 89);">// importing java classes</span><br /> engine.eval(<span style="color: rgb(42, 0, 255);">"importPackage(java.util); "</span> +<br /> <span style="color: rgb(42, 0, 255);">"today = new Date(); "</span> +<br /> <span style="color: rgb(42, 0, 255);">"print('Today is ' + today);"</span>);<br /> <br /> <span style="color: rgb(63, 127, 89);">// using object instances passed to the script engine, and on static class members.</span><br /> engine.put(<span style="color: rgb(42, 0, 255);">"name"</span>,<span style="color: rgb(42, 0, 255);">"John Doe"</span>);<br /> engine.eval(<span style="color: rgb(42, 0, 255);">"name2 = name.toUpperCase();"</span> +<br /> <span style="color: rgb(42, 0, 255);">"print('Converted name = ' + name2); </span><span style="color: rgb(42, 0, 255);">\n</span><span style="color: rgb(42, 0, 255);">"</span>);<br /> <br /> <span style="color: rgb(63, 127, 89);">// script engine implementations support script compilation</span><br /> Compilable compilable = (Compilable) engine;<br /> CompiledScript script = compilable.compile(<br /> <span style="color: rgb(42, 0, 255);">"if (age < 25){ "</span> +<br /> <span style="color: rgb(42, 0, 255);">" riskFactor = 1.5;"</span> +<br /> <span style="color: rgb(42, 0, 255);">"} else if (noClaims) {"</span> +<br /> <span style="color: rgb(42, 0, 255);">" riskFactor = 0.75;"</span> +<br /> <span style="color: rgb(42, 0, 255);">"} else {"</span> +<br /> <span style="color: rgb(42, 0, 255);">" riskFactor = 1.0;"</span> +<br /> <span style="color: rgb(42, 0, 255);">"}"</span>);<br /><br /> Bindings bindings = engine.createBindings();<br /> bindings.put(<span style="color: rgb(42, 0, 255);">"age"</span>, 26);<br /> bindings.put(<span style="color: rgb(42, 0, 255);">"noClaims"</span>, Boolean.TRUE);<br /> bindings.put(<span style="color: rgb(42, 0, 255);">"riskFactor"</span>, 1);<br /> script.eval();<br /> <br /> <span style="color: rgb(63, 127, 89);">// call individual functions defined in the script from your Java code.</span><br /> engine.eval(<span style="color: rgb(42, 0, 255);">"function increment(i) {return i + 1;}"</span>);<br /> Invocable invocable = (Invocable) engine;<br /> <span style="color: rgb(127, 0, 85); font-weight: bold;">Object</span> resul = invocable.invokeFunction(<span style="color: rgb(42, 0, 255);">"increment"</span>, <span style="color: rgb(127, 0, 85); font-weight: bold;">new</span> <span style="color: rgb(127, 0, 85); font-weight: bold;">Object</span>[] {10});<br /> <span style="color: rgb(127, 0, 85); font-weight: bold;">System</span>.out.print(<span style="color: rgb(42, 0, 255);">"result = "</span> + resul);<br /> <br /> } <span style="color: rgb(127, 0, 85); font-weight: bold;">catch</span> (ScriptException e) {<br /> e.printStackTrace();<br /> } <span style="color: rgb(127, 0, 85); font-weight: bold;">catch</span> (<span style="color: rgb(127, 0, 85); font-weight: bold;">NoSuchMethodException</span> e) {<br /> e.printStackTrace();<br /> }<br /><br /> }<br />}<br /></pre>victor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.comtag:blogger.com,1999:blog-7582902.post-71632202143867899262007-01-09T06:03:00.000-08:002007-03-14T08:35:46.534-07:00En busca de parseadores HTMLEstoy en busca de parseadores HTML para mi spider implementado en Jade,<br />encontré este <a href="http://htmlparser.sourceforge.net/">HTMLParser</a>, el cual es simple y rápido.<br /><br />Ahora es más simple obtener el texto de una pagina web y la lista de enlace de esta misma.<br /><br />Ejemplo:<br /><pre class="code">String URL = "http://htmlparser.sourceforge.net";<br />StringExtractor se = new StringExtractor (URL);<br />String contents = se.extractStrings(true);<br />System.out.println(contents);</pre>victor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com2tag:blogger.com,1999:blog-7582902.post-57345815506913503312007-01-09T04:10:00.000-08:002007-03-14T08:38:47.347-07:00Eclipse and EquinoxEste <a href="http://www.theserverside.com/tt/articles/article.tss?l=EclipseEquinoxOSGi">artículo</a> muestra de manera aérea, como funciona la arquitectura de eclipsevictor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com0tag:blogger.com,1999:blog-7582902.post-1130103769600416592006-11-10T14:42:00.000-08:002006-12-01T10:28:31.079-08:00Grammar DUDU+ mi lenguaje de programaciónEste es el grammar del lenguaje DUDU+, este grammar (BNF production) esta hecho para la generación de un parser con la herramienta javacc. Como se ve la sintaxis es la de java pero con otras reglas, ya que se trata de javacc, que es el generador de parser más popular, se puede encontrar documentación de este en la página: <a href="https://javacc.dev.java.net/">https://javacc.dev.java.net/</a> . Les recomiendo que utilicen el mailling list en el cual hay personas dispuestas a ayudarte :-D.<br /><br /><pre style='color:#000000;background:#ffffff;'><span style='color:#3f7f59; '>/*</span><br /><span style='color:#3f7f59; '> * DUDU+ codename MiniJava</span><br /><span style='color:#3f7f59; '> * HECHO... in Dominican Republic</span><br /><span style='color:#3f7f59; '> * author VГctor Sosa </span><span style='color:#2a00ff; '><</span><span style='color:#3f3fbf; '>victornsosa@gmail.com</span><span style='color:#2a00ff; '>></span><span style='color:#3f7f59; '> vns java</span><br /><span style='color:#3f7f59; '> */</span><br /><br /><br /><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>options</span><span style='color:#000000; background:#ffffff; '>{</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; '>LOOKAHEAD</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>=</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>1</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; '>STATIC</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>=</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>false</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; '>JAVA_UNICODE_ESCAPE</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>=</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>true</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '>}</span><br /><br /><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>PARSER_BEGIN</span><span style='color:#000000; background:#ffffff; '>(</span><span style='color:#000000; background:#ffffff; '>MiniJava</span><span style='color:#000000; background:#ffffff; '>)</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>import</span><span style='color:#7f0055; background:#ffffff; '> java</span><span style='color:#7f0055; background:#ffffff; '>.</span><span style='color:#7f0055; background:#ffffff; '>util</span><span style='color:#7f0055; background:#ffffff; '>.</span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>*</span><span style='color:#7f0055; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>public</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>class</span><span style='color:#000000; background:#ffffff; '> MiniJava </span><span style='color:#000000; background:#ffffff; '>{</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>public</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>static</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>void</span><span style='color:#000000; background:#ffffff; '> main</span><span style='color:#000000; background:#ffffff; '>(</span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>String</span><span style='color:#000000; background:#ffffff; '>[</span><span style='color:#000000; background:#ffffff; '>]</span><span style='color:#000000; background:#ffffff; '> args</span><span style='color:#000000; background:#ffffff; '>)</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>throws</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>ParseException</span><span style='color:#000000; background:#ffffff; '>,</span><span style='color:#000000; background:#ffffff; '> TokenMgrError </span><span style='color:#000000; background:#ffffff; '>{</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> MiniJava parser</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>String</span><span style='color:#000000; background:#ffffff; '> file </span><span style='color:#000000; background:#ffffff; '>=</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>null</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>long</span><span style='color:#000000; background:#ffffff; '> time </span><span style='color:#000000; background:#ffffff; '>=</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>0</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>long</span><span style='color:#000000; background:#ffffff; '> parseTime </span><span style='color:#000000; background:#ffffff; '>=</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>0</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>long</span><span style='color:#000000; background:#ffffff; '> startTime </span><span style='color:#000000; background:#ffffff; '>=</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>0</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>if</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>(</span><span style='color:#000000; background:#ffffff; '>args</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>length </span><span style='color:#000000; background:#ffffff; '>=</span><span style='color:#000000; background:#ffffff; '>=</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>0</span><span style='color:#000000; background:#ffffff; '>)</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>{</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>System</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>out</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>println</span><span style='color:#000000; background:#ffffff; '>(</span><span style='color:#2a00ff; background:#ffffff; '>"Error messages..."</span><span style='color:#000000; background:#ffffff; '>)</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>return</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>}</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>else</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>if</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>(</span><span style='color:#000000; background:#ffffff; '> args</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>length </span><span style='color:#000000; background:#ffffff; '>=</span><span style='color:#000000; background:#ffffff; '>=</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>1</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>)</span><span style='color:#000000; background:#ffffff; '>{</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> file </span><span style='color:#000000; background:#ffffff; '>=</span><span style='color:#000000; background:#ffffff; '> args</span><span style='color:#000000; background:#ffffff; '>[</span><span style='color:#000000; background:#ffffff; '>0</span><span style='color:#000000; background:#ffffff; '>]</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>System</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>out</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>println</span><span style='color:#000000; background:#ffffff; '>(</span><span style='color:#2a00ff; background:#ffffff; '>"Start parsing..."</span><span style='color:#000000; background:#ffffff; '>)</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>try</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>{</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> parser </span><span style='color:#000000; background:#ffffff; '>=</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>new</span><span style='color:#000000; background:#ffffff; '> MiniJava</span><span style='color:#000000; background:#ffffff; '>(</span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>new</span><span style='color:#000000; background:#ffffff; '> java</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>io</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>FileInputStream</span><span style='color:#000000; background:#ffffff; '>(</span><span style='color:#000000; background:#ffffff; '>file</span><span style='color:#000000; background:#ffffff; '>)</span><span style='color:#000000; background:#ffffff; '>)</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>}</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>catch</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>(</span><span style='color:#000000; background:#ffffff; '> java</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>io</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>FileNotFoundException</span><span style='color:#000000; background:#ffffff; '> e </span><span style='color:#000000; background:#ffffff; '>)</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>{</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>System</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>out</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>println</span><span style='color:#000000; background:#ffffff; '>(</span><span style='color:#2a00ff; background:#ffffff; '>"Parser error: Filename "</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>+</span><span style='color:#000000; background:#ffffff; '> file </span><span style='color:#000000; background:#ffffff; '>+</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#2a00ff; background:#ffffff; '>" not found."</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>)</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>return</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>}</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>}</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>else</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>{</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>System</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>out</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>println</span><span style='color:#000000; background:#ffffff; '>(</span><span style='color:#2a00ff; background:#ffffff; '>"Debe escribir: java MiniJava inputfile"</span><span style='color:#000000; background:#ffffff; '>)</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>return</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>}</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>try</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>{</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> startTime </span><span style='color:#000000; background:#ffffff; '>=</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>System</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>currentTimeMillis</span><span style='color:#000000; background:#ffffff; '>(</span><span style='color:#000000; background:#ffffff; '>)</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> parser</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>Start</span><span style='color:#000000; background:#ffffff; '>(</span><span style='color:#000000; background:#ffffff; '>)</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> parseTime </span><span style='color:#000000; background:#ffffff; '>=</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>System</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>currentTimeMillis</span><span style='color:#000000; background:#ffffff; '>(</span><span style='color:#000000; background:#ffffff; '>)</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> time </span><span style='color:#000000; background:#ffffff; '>=</span><span style='color:#000000; background:#ffffff; '> parseTime </span><span style='color:#000000; background:#ffffff; '>-</span><span style='color:#000000; background:#ffffff; '> startTime</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>System</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>out</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>println</span><span style='color:#000000; background:#ffffff; '>(</span><span style='color:#2a00ff; background:#ffffff; '>" Time of parsing: "</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>+</span><span style='color:#000000; background:#ffffff; '> time </span><span style='color:#000000; background:#ffffff; '>+</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#2a00ff; background:#ffffff; '>" ms"</span><span style='color:#000000; background:#ffffff; '>)</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>System</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>out</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>println</span><span style='color:#000000; background:#ffffff; '>(</span><span style='color:#2a00ff; background:#ffffff; '>" DuDu successfully end"</span><span style='color:#000000; background:#ffffff; '>)</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>}</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>catch</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>(</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>ParseException</span><span style='color:#000000; background:#ffffff; '> pex</span><span style='color:#000000; background:#ffffff; '>)</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>{</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>System</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>out</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>println</span><span style='color:#000000; background:#ffffff; '>(</span><span style='color:#000000; background:#ffffff; '> pex</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>getMessage</span><span style='color:#000000; background:#ffffff; '>(</span><span style='color:#000000; background:#ffffff; '>)</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>)</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>System</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>out</span><span style='color:#000000; background:#ffffff; '>.</span><span style='color:#000000; background:#ffffff; '>println</span><span style='color:#000000; background:#ffffff; '>(</span><span style='color:#2a00ff; background:#ffffff; '>" ParserException during parse file"</span><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>)</span><span style='color:#000000; background:#ffffff; '>;</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>}</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '> </span><span style='color:#000000; background:#ffffff; '>}</span><span style='color:#3f7f59; background:#ffffff; '>/* main method*/</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '>}</span><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#000000; background:#ffffff; '></span><br /><span style='color:#7f0055; background:#ffffff; font-weight:bold; '>PARSER_END</span><span style='color:#000000; background:#ffffff; '>(</span><span style='color:#000000; background:#ffffff; '>MiniJava</span><span style='color:#000000; background:#ffffff; '>)</span><br /><br /><span style='color:#3f7f59; '>/* Eat white space and comment*/</span><br /><span style='color:#7f0055; font-weight:bold; '>SKIP </span>: {<br /> <span style='color:#2a00ff; '>" "</span><br />| <span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>\t</span><span style='color:#2a00ff; '>"</span><br />| <span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>\n</span><span style='color:#2a00ff; '>"</span><br />| <span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>\r</span><span style='color:#2a00ff; '>"</span><br />| <<span style='color:#2a00ff; '>"//"</span> (~[<span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>\n</span><span style='color:#2a00ff; '>"</span>,<span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>\r</span><span style='color:#2a00ff; '>"</span>])* (<span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>\n</span><span style='color:#2a00ff; '>"</span> | <span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>\r</span><span style='color:#2a00ff; '>"</span> | <span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>\r</span><span style='color:#2a00ff; '>\n</span><span style='color:#2a00ff; '>"</span>)><br />| <<span style='color:#2a00ff; '>"/*"</span> (~[<span style='color:#2a00ff; '>"*"</span>])* <span style='color:#2a00ff; '>"*"</span> (<span style='color:#2a00ff; '>"*"</span> | ~[<span style='color:#2a00ff; '>"*"</span>,<span style='color:#2a00ff; '>"/"</span>] (~[<span style='color:#2a00ff; '>"*"</span>])* <span style='color:#2a00ff; '>"*"</span>)* <span style='color:#2a00ff; '>"/"</span>><br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>TOKEN </span>: <span style='color:#3f7f59; '>/* RESERVED WORDS AND LITERALS */</span><br />{<br /> < BOOLEAN: <span style='color:#2a00ff; '>"boolean"</span> ><br />| < BYTE: <span style='color:#2a00ff; '>"byte"</span> ><br />| < CHAR: <span style='color:#2a00ff; '>"char"</span> ><br />| < CLASS: <span style='color:#2a00ff; '>"class"</span> ><br />| < DOUBLE: <span style='color:#2a00ff; '>"double"</span> ><br />| < FALSE: <span style='color:#2a00ff; '>"false"</span> ><br />| < FLOAT: <span style='color:#2a00ff; '>"float"</span> ><br />| < FINAL: <span style='color:#2a00ff; '>"final"</span> ><br />| < INT: <span style='color:#2a00ff; '>"int"</span> ><br />| < LONG: <span style='color:#2a00ff; '>"long"</span> ><br />| < PUBLIC: <span style='color:#2a00ff; '>"public"</span> ><br />| < SHORT: <span style='color:#2a00ff; '>"short"</span> ><br />| < STATIC: <span style='color:#2a00ff; '>"static"</span> ><br />| < TRUE: <span style='color:#2a00ff; '>"true"</span> ><br />| < VOID: <span style='color:#2a00ff; '>"void"</span> ><br />| < NEW: <span style='color:#2a00ff; '>"new"</span> ><br />| < MAKE: <span style='color:#2a00ff; '>"make"</span> ><br />| < STACK: <span style='color:#2a00ff; '>"stack"</span> ><br />| < REPEAT: <span style='color:#2a00ff; '>"repeat"</span> ><br />| < UNTIL: <span style='color:#2a00ff; '>"until"</span> ><br />| < ADDSTACK: <span style='color:#2a00ff; '>"addStack"</span> ><br />| < ORDSTACK: <span style='color:#2a00ff; '>"ordStack"</span> ><br />| < ASCENDENTE: <span style='color:#2a00ff; '>"ascendente"</span> ><br />| < DESCENDENTE: <span style='color:#2a00ff; '>"descendente"</span> ><br /><br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>TOKEN </span>: <span style='color:#3f7f59; '>/* SEPARATORS */</span><br />{<br /> < LPAREN: <span style='color:#2a00ff; '>"("</span> ><br />| < RPAREN: <span style='color:#2a00ff; '>")"</span> ><br />| < LBRACE: <span style='color:#2a00ff; '>"{"</span> ><br />| < RBRACE: <span style='color:#2a00ff; '>"}"</span> ><br />| < LBRACKET: <span style='color:#2a00ff; '>"["</span> ><br />| < RBRACKET: <span style='color:#2a00ff; '>"]"</span> ><br />| < SEMICOLON: <span style='color:#2a00ff; '>";"</span> ><br />| < COMMA: <span style='color:#2a00ff; '>","</span> ><br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>TOKEN </span>: <span style='color:#3f7f59; '>/* OPERATORS */</span><br />{<br /> < ASSIGN: <span style='color:#2a00ff; '>"="</span> ><br />| < INCR: <span style='color:#2a00ff; '>"++"</span> ><br />| < DECR: <span style='color:#2a00ff; '>"--"</span> ><br />| < PLUS: <span style='color:#2a00ff; '>"+"</span> ><br />| < MINUS: <span style='color:#2a00ff; '>"-"</span> ><br />| < STAR: <span style='color:#2a00ff; '>"*"</span> ><br />| < SLASH: <span style='color:#2a00ff; '>"/"</span> ><br /><br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>TOKEN </span>: <span style='color:#3f7f59; '>/* LITERALS */</span><br />{<br /> < INTEGER_LITERAL:<br /> < DECIMAL_LITERAL > ([<span style='color:#2a00ff; '>"l"</span>,<span style='color:#2a00ff; '>"L"</span>])?<br /> ><br /> |<br /> < #DECIMAL_LITERAL: [<span style='color:#2a00ff; '>"0"</span>-<span style='color:#2a00ff; '>"9"</span>] ([<span style='color:#2a00ff; '>"0"</span>-<span style='color:#2a00ff; '>"9"</span>])* ><br /> |<br /> < FLOATING_POINT_LITERAL:<br /> ([<span style='color:#2a00ff; '>"0"</span>-<span style='color:#2a00ff; '>"9"</span>])+ <span style='color:#2a00ff; '>"."</span> ([<span style='color:#2a00ff; '>"0"</span>-<span style='color:#2a00ff; '>"9"</span>])* ( < EXPONENT > )? ([<span style='color:#2a00ff; '>"f"</span>,<span style='color:#2a00ff; '>"F"</span>,<span style='color:#2a00ff; '>"d"</span>,<span style='color:#2a00ff; '>"D"</span>])?<br /> | <span style='color:#2a00ff; '>"."</span> ([<span style='color:#2a00ff; '>"0"</span>-<span style='color:#2a00ff; '>"9"</span>])+ ( < EXPONENT >)? ([<span style='color:#2a00ff; '>"f"</span>,<span style='color:#2a00ff; '>"F"</span>,<span style='color:#2a00ff; '>"d"</span>,<span style='color:#2a00ff; '>"D"</span>])?<br /> | ([<span style='color:#2a00ff; '>"0"</span>-<span style='color:#2a00ff; '>"9"</span>])+ < EXPONENT > ([<span style='color:#2a00ff; '>"f"</span>,<span style='color:#2a00ff; '>"F"</span>,<span style='color:#2a00ff; '>"d"</span>,<span style='color:#2a00ff; '>"D"</span>])?<br /> | ([<span style='color:#2a00ff; '>"0"</span>-<span style='color:#2a00ff; '>"9"</span>])+ (< EXPONENT >)? [<span style='color:#2a00ff; '>"f"</span>,<span style='color:#2a00ff; '>"F"</span>,<span style='color:#2a00ff; '>"d"</span>,<span style='color:#2a00ff; '>"D"</span>]<br /> ><br /> |<br /> < #EXPONENT: [<span style='color:#2a00ff; '>"e"</span>,<span style='color:#2a00ff; '>"E"</span>] ([<span style='color:#2a00ff; '>"+"</span>,<span style='color:#2a00ff; '>"-"</span>])? ([<span style='color:#2a00ff; '>"0"</span>-<span style='color:#2a00ff; '>"9"</span>])+ ><br /> |<br /> < CHARACTER_LITERAL:<br /> <span style='color:#2a00ff; '>"'"</span><br /> ( (~[<span style='color:#2a00ff; '>"'"</span>,<span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>\\</span><span style='color:#2a00ff; '>"</span>,<span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>\n</span><span style='color:#2a00ff; '>"</span>,<span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>\r</span><span style='color:#2a00ff; '>"</span>])<br /> | (<span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>\\</span><span style='color:#2a00ff; '>"</span><br /> ( [<span style='color:#2a00ff; '>"n"</span>,<span style='color:#2a00ff; '>"t"</span>,<span style='color:#2a00ff; '>"b"</span>,<span style='color:#2a00ff; '>"r"</span>,<span style='color:#2a00ff; '>"f"</span>,<span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>\\</span><span style='color:#2a00ff; '>"</span>,<span style='color:#2a00ff; '>"'"</span>,<span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>\"</span><span style='color:#2a00ff; '>"</span>]<br /> | [<span style='color:#2a00ff; '>"0"</span>-<span style='color:#2a00ff; '>"7"</span>] ( [<span style='color:#2a00ff; '>"0"</span>-<span style='color:#2a00ff; '>"7"</span>] )?<br /> | [<span style='color:#2a00ff; '>"0"</span>-<span style='color:#2a00ff; '>"3"</span>] [<span style='color:#2a00ff; '>"0"</span>-<span style='color:#2a00ff; '>"7"</span>] [<span style='color:#2a00ff; '>"0"</span>-<span style='color:#2a00ff; '>"7"</span>]<br /> )<br /> )<br /> )<br /> <span style='color:#2a00ff; '>"'"</span><br /> ><br /> |<br /> < STRING_LITERAL:<br /> <span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>\"</span><span style='color:#2a00ff; '>"</span><br /> ( (~[<span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>\"</span><span style='color:#2a00ff; '>"</span>,<span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>\\</span><span style='color:#2a00ff; '>"</span>,<span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>\n</span><span style='color:#2a00ff; '>"</span>,<span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>\r</span><span style='color:#2a00ff; '>"</span>])<br /> | (<span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>\\</span><span style='color:#2a00ff; '>"</span><br /> ( [<span style='color:#2a00ff; '>"n"</span>,<span style='color:#2a00ff; '>"t"</span>,<span style='color:#2a00ff; '>"b"</span>,<span style='color:#2a00ff; '>"r"</span>,<span style='color:#2a00ff; '>"f"</span>,<span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>\\</span><span style='color:#2a00ff; '>"</span>,<span style='color:#2a00ff; '>"'"</span>,<span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>\"</span><span style='color:#2a00ff; '>"</span>]<br /> | [<span style='color:#2a00ff; '>"0"</span>-<span style='color:#2a00ff; '>"7"</span>] ( [<span style='color:#2a00ff; '>"0"</span>-<span style='color:#2a00ff; '>"7"</span>] )?<br /> | [<span style='color:#2a00ff; '>"0"</span>-<span style='color:#2a00ff; '>"3"</span>] [<span style='color:#2a00ff; '>"0"</span>-<span style='color:#2a00ff; '>"7"</span>] [<span style='color:#2a00ff; '>"0"</span>-<span style='color:#2a00ff; '>"7"</span>]<br /> )<br /> )<br /> )*<br /> <span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>\"</span><span style='color:#2a00ff; '>"</span><br /> ><br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>TOKEN </span>: {<br /> <IDENTIFIER: < LETTER > ( < LETTER > | < DIGIT > )*><br />| <#LETTER: [<span style='color:#2a00ff; '>"$"</span>,<span style='color:#2a00ff; '>"A"</span>-<span style='color:#2a00ff; '>"Z"</span>,<span style='color:#2a00ff; '>"_"</span>,<span style='color:#2a00ff; '>"a"</span>-<span style='color:#2a00ff; '>"z"</span>]><br />| <#DIGIT: [<span style='color:#2a00ff; '>"0"</span>-<span style='color:#2a00ff; '>"9"</span>]><br />}<br /><br /><br /><span style='color:#3f5fbf; '>/*********************************************</span><br /><span style='color:#3f5fbf; '> </span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#3f5fbf; '> THE MINIJAVA LANGUAGE GRAMMAR STARTS HERE </span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#3f5fbf; '></span><br /><span style='color:#3f5fbf; '> </span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#3f5fbf; '>*/</span><br /><br /><span style='color:#3f7f59; '>/*</span><br /><span style='color:#3f7f59; '> * Struts.</span><br /><span style='color:#3f7f59; '> */</span><br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> Start() <span style='color:#7f0055; font-weight:bold; '>throws</span> <span style='color:#7f0055; font-weight:bold; '>ParseException</span> :<br />{}<br />{<br /> (TypeDeclaration() )*<br />}<br /><br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> TypeDeclaration() :<br />{}<br />{<br /> ClassDeclaration()<br />}<br /><br /><span style='color:#3f7f59; '>/*</span><br /><span style='color:#3f7f59; '> * Declaracion de clases</span><br /><span style='color:#3f7f59; '> */</span><br /><span style='color:#7f0055; font-weight:bold; '>void</span> ClassDeclaration() :<br />{}<br />{<br /> ( <span style='color:#2a00ff; '>"final"</span> | <span style='color:#2a00ff; '>"public"</span> | <span style='color:#2a00ff; '>"static"</span> )* <span style='color:#2a00ff; '>"class"</span> < IDENTIFIER ><br /> <span style='color:#2a00ff; '>"{"</span> ( ClassBodyDeclaration() )* <span style='color:#2a00ff; '>"}"</span><br /><br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> ClassBodyDeclaration() :<br />{}<br />{<br /> <span style='color:#7f0055; font-weight:bold; '>LOOKAHEAD</span>(2)<br /> FieldDeclaration()<br />|<br /> <span style='color:#7f0055; font-weight:bold; '>Statement</span>()<br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> FieldDeclaration() :<br />{}<br />{<br /> ( <span style='color:#2a00ff; '>"public"</span> | <span style='color:#2a00ff; '>"static"</span> | <span style='color:#2a00ff; '>"final"</span> )*<br /> Type() VariableDeclarator() ( <span style='color:#2a00ff; '>","</span> VariableDeclarator() )* <span style='color:#2a00ff; '>";"</span><br /><br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> VariableDeclarator() :<br />{}<br />{<br /> VariableDeclaratorId() [ <span style='color:#2a00ff; '>"="</span> VariableInitializer() ]<br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> VariableDeclaratorId() :<br />{}<br />{<br /> < IDENTIFIER > ( <span style='color:#2a00ff; '>"["</span> <span style='color:#2a00ff; '>"]"</span> )*<br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> VariableInitializer() :<br />{}<br />{<br /> ArrayInitializer()<br />|<br /> Expression()<br /><br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> ArrayInitializer() :<br />{}<br />{<br /> <span style='color:#2a00ff; '>"{"</span> [ VariableInitializer() ( <span style='color:#7f0055; font-weight:bold; '>LOOKAHEAD</span>(2) <span style='color:#2a00ff; '>","</span> VariableInitializer() )* ] [ <span style='color:#2a00ff; '>","</span> ] <span style='color:#2a00ff; '>"}"</span><br />}<br /><br /><span style='color:#3f7f59; '>/*</span><br /><span style='color:#3f7f59; '> * Tipos, nombre y sentencias</span><br /><span style='color:#3f7f59; '> */</span><br /><span style='color:#7f0055; font-weight:bold; '>void</span> Type() :<br />{}<br />{<br /> PrimitiveType() ( <span style='color:#2a00ff; '>"["</span> <span style='color:#2a00ff; '>"]"</span> )*<br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> PrimitiveType() :<br />{}<br />{<br /> <span style='color:#2a00ff; '>"boolean"</span><br />|<br /> <span style='color:#2a00ff; '>"char"</span><br />|<br /> <span style='color:#2a00ff; '>"byte"</span><br />|<br /> <span style='color:#2a00ff; '>"short"</span><br />|<br /> <span style='color:#2a00ff; '>"int"</span><br />|<br /> <span style='color:#2a00ff; '>"long"</span><br />|<br /> <span style='color:#2a00ff; '>"float"</span><br />|<br /> <span style='color:#2a00ff; '>"double"</span><br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> Name() :<br />{ }<br />{<br /> < IDENTIFIER ><br />}<br /><br /><span style='color:#3f7f59; '>/*</span><br /><span style='color:#3f7f59; '> * Expression syntax</span><br /><span style='color:#3f7f59; '> */</span><br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> Expression() :<br />{}<br />{<br /> ConditionalExpression() [ AssignmentOperator() AdditiveExpression() ]<br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> AssignmentOperator() :<br />{}<br />{<br /> <span style='color:#2a00ff; '>"="</span><br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> ConditionalExpression() :<br />{}<br />{<br /> ConditionalOrExpression() [ <span style='color:#2a00ff; '>"?"</span> Expression() <span style='color:#2a00ff; '>":"</span> ConditionalExpression() ]<br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> ConditionalOrExpression() :<br />{}<br />{<br /> ConditionalAndExpression() ( <span style='color:#2a00ff; '>"||"</span> ConditionalAndExpression() )*<br /><br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> ConditionalAndExpression() :<br />{}<br />{<br /> EqualityExpression() ( <span style='color:#2a00ff; '>"&&"</span> EqualityExpression() )*<br /><br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> EqualityExpression() :<br />{}<br />{<br /> RelationalExpression() ( ( <span style='color:#2a00ff; '>"=="</span> | <span style='color:#2a00ff; '>"!="</span> ) RelationalExpression() )*<br /><br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> RelationalExpression() :<br />{}<br />{<br /> AdditiveExpression() ( ( <span style='color:#2a00ff; '>"<"</span> | <span style='color:#2a00ff; '>">"</span> | <span style='color:#2a00ff; '>"<="</span> | <span style='color:#2a00ff; '>">="</span> ) AdditiveExpression() )*<br /><br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> AdditiveExpression() :<br />{}<br />{<br /> MultiplicativeExpression() ( <span style='color:#7f0055; font-weight:bold; '>LOOKAHEAD</span>(2)( <span style='color:#2a00ff; '>"+"</span> | <span style='color:#2a00ff; '>"-"</span> ) MultiplicativeExpression() )*<br /><br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> MultiplicativeExpression() :<br />{}<br />{<br /> UnaryExpression() ( ( <span style='color:#2a00ff; '>"*"</span> | <span style='color:#2a00ff; '>"/"</span> ) UnaryExpression() )*<br /><br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> UnaryExpression() :<br />{}<br />{<br /> ( <span style='color:#2a00ff; '>"+"</span> | <span style='color:#2a00ff; '>"-"</span> ) UnaryExpression()<br />|<br /> UnaryExpressionNotPlusMinus()<br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> UnaryExpressionNotPlusMinus() :<br />{}<br />{<br /> PostfixExpression()<br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> PostfixExpression() :<br />{}<br />{<br /> PrimaryExpression() [ <span style='color:#2a00ff; '>"++"</span> | <span style='color:#2a00ff; '>"--"</span> ]<br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> PrimaryExpression() :<br />{}<br />{<br /> PrimaryPrefix() ( PrimarySuffix() )*<br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> PrimaryPrefix() :<br />{}<br />{<br /> Literal()<br />|<br /> <span style='color:#2a00ff; '>"("</span> Expression() <span style='color:#2a00ff; '>")"</span><br />|<br /> AllocationExpression()<br />|<br /> Name()<br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> PrimarySuffix() :<br />{}<br />{<br /> <span style='color:#2a00ff; '>"["</span> Expression() <span style='color:#2a00ff; '>"]"</span><br />|<br /> <span style='color:#7f0055; font-weight:bold; '>LOOKAHEAD</span>(2)<br /> <span style='color:#2a00ff; '>"."</span> <span style='color:#2a00ff; '>"addStack"</span> <span style='color:#2a00ff; '>"("</span> ( Name() | Literal() ) <span style='color:#2a00ff; '>")"</span><br />|<br /> <span style='color:#2a00ff; '>"."</span> <span style='color:#2a00ff; '>"ordStack"</span> <span style='color:#2a00ff; '>"("</span> OrdenType() <span style='color:#2a00ff; '>")"</span><br /><br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> OrdenType() :<br />{}<br />{<br /> <span style='color:#2a00ff; '>"ascendente"</span><br />|<br /> <span style='color:#2a00ff; '>"descendente"</span><br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> Literal() :<br />{}<br />{<br /> < INTEGER_LITERAL ><br />|<br /> < FLOATING_POINT_LITERAL ><br />|<br /> < CHARACTER_LITERAL ><br />|<br /> < STRING_LITERAL ><br />|<br /> BooleanLiteral()<br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> BooleanLiteral() :<br />{}<br />{<br /> <span style='color:#2a00ff; '>"true"</span><br />|<br /> <span style='color:#2a00ff; '>"false"</span><br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> AllocationExpression() :<br />{}<br />{<br /> <span style='color:#2a00ff; '>"new"</span> PrimitiveType() ArrayDimsAndInits()<br />|<br /> MakeStack()<br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> MakeStack() :<br />{}<br />{<br /> <span style='color:#2a00ff; '>"make"</span> <span style='color:#2a00ff; '>"stack"</span><br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> ArrayDimsAndInits() :<br />{}<br />{<br /> <span style='color:#7f0055; font-weight:bold; '>LOOKAHEAD</span>(2)<br /> ( <span style='color:#7f0055; font-weight:bold; '>LOOKAHEAD</span>(2) <span style='color:#2a00ff; '>"["</span> Expression() <span style='color:#2a00ff; '>"]"</span> )+ ( <span style='color:#7f0055; font-weight:bold; '>LOOKAHEAD</span>(2) <span style='color:#2a00ff; '>"["</span> <span style='color:#2a00ff; '>"]"</span> )*<br />|<br /> ( <span style='color:#2a00ff; '>"["</span> <span style='color:#2a00ff; '>"]"</span> )+ ArrayInitializer()<br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> <span style='color:#7f0055; font-weight:bold; '>Statement</span>() :<br />{}<br />{<br /> Expression() <span style='color:#2a00ff; '>";"</span><br />|<br /> RepeatStatement()<br /><br />}<br /><br /><span style='color:#7f0055; font-weight:bold; '>void</span> RepeatStatement() :<br />{}<br />{<br /> <span style='color:#2a00ff; '>"repeat"</span> <span style='color:#7f0055; font-weight:bold; '>Statement</span>() <span style='color:#2a00ff; '>"until"</span> <span style='color:#2a00ff; '>"("</span> Expression() <span style='color:#2a00ff; '>")"</span><br /><br />}<br /></pre>victor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com3tag:blogger.com,1999:blog-7582902.post-34482422066926873452006-11-05T06:47:00.000-08:002006-11-05T06:54:13.446-08:00Stevey en el pais de las maravillas (Google)Interesante <a href="http://steve-yegge.blogspot.com/2006/09/good-agile-bad-agile_27.html">artculo</a> de Stevey para decirnos que vivimos en un mundo de mentira :) que sincero, y de como se debe trabajar segun Google.victor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com0tag:blogger.com,1999:blog-7582902.post-86895915365847263302006-11-05T06:18:00.000-08:002006-11-05T06:23:34.693-08:00Los 10 lenguajes más demandadosEn este <a href="http://www.versioncero.com/noticia/518/los-10-lenguajes-mas-demandados">artículo</a> se confirma mas aun lo que dije anteriormente, para mis amigos que todavia estan pensando que M$ domina el negocio de las computadoras no significa que contole en que se programa.<a href="http://www.versioncero.com/noticia/518/los-10-lenguajes-mas-demandados"><br /></a>victor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com0tag:blogger.com,1999:blog-7582902.post-1154003455965364362006-08-27T00:30:00.000-07:002006-08-15T17:30:46.896-07:00oferta de trabajo USAEsto es para los amigos mios que no creen que en el mundo de Java no se gana dinero (Eso es porque solamente piensa en dinero) y creen que los chelitos solo se hacen con M$.<br /><br />Vean este <a href="http://msn.careerbuilder.com/JobSeeker/Jobs/JobDetails.aspx?IPath=SQGT&jobcount=3217&job_did=J8D8BT61W3KLBY1SJH6&sfascc=&amp;dv=dv&jrdid=&lpage=129&sname=&amp;CiBookMark=1&strcrit=QID%3dA6653235163317%3bst%3da%3buse%3dALL%3bCID%3dUS%3bSID%3dNY%3bTID%3d0%3bENR%3dNO%3bDTP%3dDR3%3bYDI%3dYES%3bIND%3dALL%3bPDQ%3dAll%3bJN%3dJN008%3bJN%3dJN004%3bPAYL%3d0%3bPAYH%3dgt120%3bPOY%3dNO%3bETD%3dALL%3bRE%3dALL%3bMGT%3dDC%3bSUP%3dDC%3bFRE%3d30%3bCHL%3dAL%3bQS%3dsid_unknown%3bSS%3dNO%3bTITL%3d0%3bVT%3ddetail%3bJQT%3dRAD">sueldito</a>.victor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com4tag:blogger.com,1999:blog-7582902.post-1152470838659203982006-08-16T11:46:00.000-07:002006-08-15T17:28:18.730-07:00The Power of Three - Eclipse, Tomcat, and StrutsUn pequeño <a href="http://javaboutique.internet.com/tutorials/three/index.html">tutorial</a> de la integración de estos tres legendarios en el desarrollo de aplicaciones web de una manera ágil.victor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com0tag:blogger.com,1999:blog-7582902.post-1152105076071579162006-08-16T09:10:00.000-07:002006-08-15T17:26:26.093-07:00Branching with Eclipse and CVSUn articulo para estar claro de como se manejan los branch en Eclipse con CVS.<br /><br />http://www.eclipse.org/articles/Article-CVS-branching/eclipse_branch.htmlvictor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com0tag:blogger.com,1999:blog-7582902.post-1153146770147117372006-08-15T20:31:00.000-07:002006-08-15T17:22:06.780-07:00Nifty Corners - Esquinas redondeadasComo obterner cuadros con esquinas redondeadas, pero lo más importante compatible con los diferentes navegadores, solución usar <a href="http://www.html.it/articoli/nifty/index.html">Nifty Corners</a> , es una librería ligerade css y javascript para lograr este efecto es bien fácil de usar en nuestros proyectos.victor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com0tag:blogger.com,1999:blog-7582902.post-1153181081935078712006-08-15T20:19:00.000-07:002006-08-15T17:25:16.593-07:00Ruby on Rails and J2EEEste <a href="http://www-128.ibm.com/developerworks/web/library/wa-rubyonrails/">artículo</a> es una comparacion de los modelos de desarrollo propuesto por Ruby on Rails y J2EE.<br /><br />Mostrando cada ventaja y desventaja, un buen artículo con los pies sobre la tierra.victor sosahttp://www.blogger.com/profile/10866357818618401740noreply@blogger.com0