Error recursivo a la izquierda con mi gramática C

Tengo un error recursivo a la izquierda con mi gramática C que se puede encontrar aquí http://www.archive-host.com/files/1959502/24fe084677d7655eb57ba66e1864081450017dd9/cAST.txt. cuando reemplazo

initializer
 : assignment_expression
 | '{' initializer_list '}'
 ;

con

initializer
 : assignment_expression
 | '{' initializer_list '}'
 |  initializer_list
 ;

Hice esto porque estoy tratando de hacer este código en Ctrl-D

int k [2] = 1,4;

Sin embargo, este código funciona con la primera versión.

int k [2] = {1,4};

¿Hay alguna manera de prescindir de { }, por favor?

preguntado el 08 de marzo de 13 a las 21:03

¿Estás escribiendo una gramática C estándar? int k [2] = 1,4; no es C.-

Sí, pero esta será la única excepción. -

1 Respuestas

Para hacer esto, necesitaría introducir la sensibilidad al contexto (o algo por el estilo).

El problema es que 1,4 ya tiene un significado definido. Es una expresión que usa el operador coma que evalúa el 1, descarta el resultado, luego evalúa el 4, que es el valor de la expresión como un todo.

Como tal, para hacer que esto funcione, tendría que usar una sintaxis diferente para los inicializadores que para las expresiones normales (y en el proceso, alejarse bastante de C tal como está definido actualmente). Desde un punto de vista puramente gramatical, es casi seguro que no es necesario hacerlo teniendo en cuenta el contexto, pero implicará básicamente definir la sintaxis de los inicializadores por separado o en paralelo con la sintaxis de las expresiones normales, en lugar de utilizar una sintaxis común para ambos.

respondido 08 mar '13, 21:03

Gracias por su respuesta, pero realmente no intento apartarme de C, es solo que, como un caso especial, me gustaría que se aceptara la declaración de la tabla sin {} (solo para la tabla). Por supuesto, el que tiene { } también debe aceptarse. ¿Es posible hacer esto sin desviarse del estándar C? - Exia0890

No, por supuesto que no es posible porque la forma en cuestión ya tiene un significado definido. - R .. GitHub DEJA DE AYUDAR A ICE

Ya veo, gracias por sus respuestas. Creo que debería abstenerme de hacer eso entonces ^^. - Exia0890

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.