Título: Numeros negativos en compiladores Publicado por: danielo- en 17 Septiembre 2010, 06:01 am Hola a todos, tengo una duda acerca de la construccion de compiladores, especificamente en la construccion del analizador lexico, y es acerca de los numeros negativos, lo que pasa, que un token valido deberia de ser -343 no? realmente lo validaria en la tabla de simbolos como un numero negativo, pero que pasa si escribo
int o= 3-4? Es decir si yo pongo int o=-4 En la tabla de simbolos entraria: int variable = numero pero y si yo escribo int o=4-3 En la tabla de simbolos entraria: int variable = numero numero lo cual estaria mal, pues deberia entrar int variable = numero - numero no? cual seria la condicion para establecer esto? o acaso estoy equivocado? Porfavor, alguien que me aclare mi duda :) Título: Re: Numeros negativos en compiladores Publicado por: 1mpuls0 en 17 Septiembre 2010, 07:39 am defines que elementos van a delimitar a los tokens, esto es generalemente el signo de espacio, pero tambieen pueden ser los simbolos aritmeticos logicos, parentesis, puntos, comas etc, sigono = etc,
asi por ejem si encuentra esto *nt var= -23; recoge int, que la identifica como palabra resevada despues var, que al no ser una palabra reservada, la mete como variable a la talba e variables despues el signo igual cpn el signo no se creo que depende de como lo quieras manejar si seria 0 mnenos 23 o podria ser -23 lo puedes manejar como el signo del numero o como una operacion y asi omites el signo del numero la verdad como nunca lo implemente. intentale asi int var= 3-4; int variable= numero - numero y int var=-34; int variable= 0 - numero intentá asi, y si te sale lo rolas! xD Título: Re: Numeros negativos en compiladores Publicado por: danielo- en 17 Septiembre 2010, 08:12 am Umm... ya entendi tu punto, jaja.. creo que no estaba pensando, el problema con lo que me haz dicho primero, es que mi maestro nos dijo que hay una regla a seguir en el desarrollo de un analizador lexico, el fin de un automata, es el principio del segundo... esto es, que si yo pongo:
int var=1 me deberia reconocer int variable = 1 a pesar de que se este pegado el texto(var=1), pero ahora que lo pienso, es mi lenguaje, y yo puedo definir la sintaxis en especial del operador negativo es decir que puedo especificar que si hay un - entonces es un signo negativo, pero si existe un -numero, entonces lo considerara como un numero negativo aun a pesar del contexto en el que se encuentre XD y problema solucionado :) ajajja... no se que tan tonto suene, pero pues asi lo are :) jajaja gracias por ayudarme a pensar... :S ya solo me falta una ultima duda y estara listo! =D |