Como de C++14, gracias a n3781 (que en sí no contestar a esta pregunta) podemos escribir un código como el siguiente:

const int x = 1'234; //one thousand two hundred and thirty four

El objetivo es mejorar en el código como este:

const int y = 100000000;

y hacerla más legible.

El carácter de subrayado (_) personaje ya estaba tomada en C++11 por el usuario definido literales, y la coma (,) ha de localización de problemas — muchos países Europeos bafflingly el uso de este como separador decimal y los conflictos con el operador coma (, aunque me preguntan cuál es el mundo real de código que podría haber sido roto permitiendo por ejemplo,1,234,567.

De todos modos, la mejor solución parece ser el carácter de espacio:

const int z = 1 000 000;

Estas adyacentes literal numérico tokens podría ser concatenados por el preprocesador como se los literales de cadena:

const char x[5] = "a" "bc" "d";

Lugar, tenemos el apóstrofo ('), no utilizada por cualquier sistema de escritura soy consciente de como un separador de dígitos.

Hay una razón por la que el apóstrofo fue elegido en lugar de un simple espacio?


Es desconcertante porque todos esos idiomas, dentro del texto, mantener la noción de una coma «separación» de otra manera atómica frase, con un período de funcionamiento para «terminar» la frase — para mí, al menos, este es bastante análoga a la de una coma «rompa» la parte integral de un número y un período de «terminación» listo para la fracción de la entrada.

  • Con respecto a la coma, no es el problema el operador coma (,) en lugar de problemas de localización?
  • Como sugiero en la pregunta, aunque esto puede ser cierto, no puedo pensar en cualquier mundo real código que en realidad hubieran sido roto por un conflicto. Quien escribe 1,000,000 y podría esperar otra cosa que la concatenación de los literales, en realidad? El más cercano que puedo llegar es foo()*3, 4, 5 pero creo que requiere paréntesis alrededor de la primera expresión es razonable. Porque es tonto código en el primer lugar.
  • Ah, me olvidé un par de palabras. Yo quería decir para que la mitad de la frase abordar brevemente el operador coma.
  • Yo por lo que a menudo escuchamos que «el espacio en blanco no importa!» o «es ignorado!» – sería bueno si que se hicieron un poco más de verdad!
  • Supongo que nadie la intención de cambiar el significado de int a[] = {123,000,000}. Como la coma versus período de distinción, tenga en cuenta que estos son bastante estandarizado recientemente, tanto en el texto y los números.
  • Ouch, eso es un buen ejemplo. re «recientemente estandarizado» ¿a qué te refieres? No estoy al tanto de cualquier idioma que ha cambiado en la memoria reciente, y ciertamente no desde 1998.
  • Yo en realidad el objetivo de su uso en el lenguaje escrito, lo que sucedió en el siglo 19.
  • A la derecha, que es la razón por la que estoy confundido en cuanto a la relevancia de ese hecho, porque el siglo 19, un poco anterior a la de C++.
  • El comentario fue en relación a su nota de pie de página y no en inglés. El período ya estaba en uso como separador de grupo en las fechas, por ejemplo, IV.I.MMXV es hoy en día.
  • Yo interpreto que de manera diferente de usted. Los períodos son la delimitación de tres diferentes campos (como el período en inglés 123.45 delimita fraccionarios y enteros); esta es una función diferente de la que se sirve por un separador de miles, que es puramente estética, en lugar de semántica en el uso. Como tal, tu contraejemplo es sólo otro ejemplo de por qué el inglés moderno coma-como-miles-separador tiene sentido (sobre el uso de un período para la misma cosa) y lo ha hecho desde antes del siglo 19. 🙂
  • No hay un «sentido» al respecto. Un separador de decimales es, ciertamente, no se detenga por completo; mediante una coma, probablemente sería el más «razonable». Pero estas son puramente convenciones de tipografía, desarrollado a lo largo del tiempo, diferentes en diferentes «locales», y como MSalters, solo estandarizada muy recientemente.
  • 1800 no es «muy reciente», aunque reconozco que este tipo de cosas son relativas.
  • Además de la técnica de puntos, dice que el apóstrofo (‘), [es] no utilizada por cualquier sistema de escritura soy consciente de como un separador de dígitos. Hay un país en el uso del apóstrofo como separador de dígitos: Suiza. También he visto en los casos en los que el autor le gusta más o un punto/coma podría causar confusión, ya que se utilizan de manera diferente a nivel internacional.
  • Si eso te hace sentir mejor, yo soy europea y gracias a la cantidad de productos que se hizo en los estados unidos (calculadoras, etc) el uso de comas para los decimales de los valores es – afortunadamente – muy lentamente, la caída de sabor. Yo diría 0.99 ahora es más ampliamente utilizado de 0,99; usando la coma como separador de miles de desconocidos, aunque, como es el uso de puntos, simplemente no nos separan (probablemente porque 1,234 y 1.234 ambos significan decimales en la actualidad)
  • Con respecto al uso de la coma como separador, usted podría considerar la posibilidad de lo que (1,200) significa, podría significar 1200 o 200, dependiendo de lo que usted quiere leer como, si se utiliza la coma como separador de miles. De nuevo, como @AndreasBonini escribe, es que no se utilizan con frecuencia en Europa.
  • Se hace un poco 😉
  • Yo había pensado que el problema con coma sería la ambigüedad en el caso de int foo(int);int foo(int,int); foo(1,000);
  • Bien, sólo necesitamos un carácter Unicode que significa específicamente de agrupación de dígitos.
  • Y una Alternativa adecuada Token de representación (dígrafo)! 😀
  • Para el registro, el apóstrofo es estándar dígitos separador de la notación en la adición de las máquinas. (Referencia)
  • No todos ellos. No existe un «estándar».
  • Esa es la primera que he visto, sin comillas, y la Búsqueda de Imágenes de Google parece mostrar la gran mayoría de usarlo. Al menos, es responsable como de uso común en este tipo de máquinas, si queremos evitar exigente palabras como «estándar».
  • Desde un cursor de búsqueda en adding machine se parece más a la mitad/mitad, no «la gran mayoría».
  • Letonia también utiliza un apóstrofo como separador de miles – o, al menos, que cuando yo todavía estaba en la escuela. 😛 no Es algo que uso a menudo.
  • Hay un gran post en la experiencia de usuario del sitio, tomado de Wikipedia, que muestra el uso de separadores para diferentes países. Como es a menudo el caso con la internacionalización, hay más variantes de lo que cabría esperar, y es casi un desastre! 🙂
  • Comas puede ser menor separadores en el inglés escrito, pero las expresiones algebraicas puntos son a menudo de forma opcional se coloca en exclusiva para aclarar los límites entre fichas, mientras que la coma se utiliza para separar dos elementos distintos en un par. Considere la posibilidad de a·sin(A) que es el mismo que a(sin(A)), mientras que v = (2,3) es muy diferente de v = (2(3)). De todos modos, lógico recursos a los precedentes para elegir entre las localizaciones en realidad nunca nos dan la respuesta correcta.
  • Lo cierto es que.
  • Respecto del mundo real código mediante el operador coma entre los números: Eigen::Matrix3f m; m << 1,2,3,4,5,6,7,8,9;. Ver Eigen de la coma inicializador.
  • Pero que en realidad es un encadenado montón de llamadas de función (cada uno con un Eigen tipo en el LHS) y podría definirse a tomar precedencia sobre un «único» literal se encuentra en una subexpresión por su propia cuenta. Lógicamente los dos se podía distinguir, pero hay que reconocer que, de cualquier modo, es ambiguo y el análisis de la etapa no quiero tener que trabajar en eso.

7 Comentarios

  1. 35

    Hay un artículo anterior, n3499, que nos dicen que a pesar de Bjarne mismo sugirió espacios como separadores:

    Mientras que este enfoque es consistente con un común typeographic estilo, sufre de algunos problemas de compatibilidad.

    • No coincide con la sintaxis de un pp-número, y mínimamente requieren la ampliación de la sintaxis.
    • Lo que es más importante, habrá algún tipo de ambigüedad sintáctica cuando un dígito hexadecimal en el intervalo [a-f] sigue a un espacio. El preprocesador de no saber si al realizar el símbolo de sustitución a partir del espacio.
    • Tiene herramientas de edición que agarrar «palabras» menos fiables.

    Supongo que el siguiente ejemplo es el principal problema que se indica:

    const int x = 0x123 a;

    aunque, en mi opinión, este razonamiento es bastante débil. Todavía no puedo pensar en un ejemplo real para romper.

    Las «herramientas de edición de» justificación es aún peor, ya que 1'234 rompe, básicamente, cada resaltador de sintaxis que ha conocido la humanidad (por ejemplo, la utilizada por la Rebaja en la pregunta anterior, sí!) y hace versiones actualizadas de dichos marcadores mucho más difícil de implementar.

    Todavía, para mejor o peor, esta es la razón que llevó a la adopción de los apóstrofes en su lugar.

    • Creo que el ejemplo sería mejor con const int x = 0x123 a45;. Tenga en cuenta que a diferencia de la cadena caso, a45 no es otro literal.
    • Si yo fuera el Presidente de la Tierra, sería el caso de que un «literal» incluiría un espacio en su producción, haciendo 0x123 a45 una sola, aunque-multi-token literal. Puede usted pensar en un escenario en el que a45 ser interpretado como parte de un literal entero aquí no sería deseado? No hay ningún operador o cualquier cosa antes de que sea así ¿qué otra cosa podría ser?
    • #define abc + 1, const int x = 0x123 abc;
    • Las Macros se amplían en la fase 4, y los literales de cadena se concatenan en la fase 6. Yo esperaría que el «número literal de la concatenación de» a llevarse a cabo en la fase 6, manteniendo así el comportamiento de su código de ejemplo y no romper nada.
    • No estoy seguro de si es así de fácil. Para permitir la macro sustitución tendrías que analizar abc como un identificador, pero luego tendrías que especificar algún tipo de concatenación de una pp-número de y identificador, que es…raro. Además, hay al parecer también las preocupaciones importantes con rotura de Objective-C.
    • Yo he utilizado a veces cosas como x y q como temporal «metaprogramación» macros (undef ed inmediatamente después de su uso), cuando es necesario para definir las tablas de datos que combina varios de los bits cambiado los valores. Creo que no he usado la a a la f en este tipo de moda, pero no creo que evitó deliberadamente ellos, por lo que es plausible que un programador puede utilizar la metaprogramación macros que comienzan con los caracteres, creando así la ambigüedad.
    • No sería ambiguo, y su macros todavía funciona, debido a que las macros se amplían temprano.
    • Yo estaba pensando en situaciones donde las macros ampliar a cosas como <<6) | (uint64)(, y uno podría producir algunas tablas con cosas como V(12 x 12 y 5 z). Macros como podría ser ambiguo si contenían letras de la a a la f, o si un espacio en blanco que podrían aparecer entre los personajes de la 0x prefijo.
    • Que terrible código y yo preferiría que no se optimizan para ello ;p
    • Todavía veo sentido a T. C. del argumento. Se podría crear extrema la confusión con las macros existentes. Consideran que la nueva macro regla que tendríamos que añadir: «no escribir macros cuyo nombre sólo contiene [0-9A-Fa-f], debido a que puede romper arbitraria de números hexadecimales que los espacios utilizados.» Si bien es técnicamente hacia atrás comparables, porque el viejo código no utilice este número de la notación, hay algo muy unplesant acerca de eso. Especialmente desde DEADBEEF probablemente no es irrazonable nombre de la macro de hoy. En el sistema actual, al menos DEADBEEF nunca puede ser un número sin 0x
    • Puede usted explicar exactamente cómo se llega a funcionar correctamente si hay #define‘d cosas como GOOD (como algo arbitrario), BAD (como algo arbitrario), y en algún lugar allá abajo es un número 0xBAD BAD? (por favor, no cuenta el uso de mayúsculas – que podría ser cualquiera)
    • La construcción no se utiliza para el «código» como tal, sino más bien para las tablas de datos que deben residir en la ROM. Dada la opción entre la escritura (y mantener) una utilidad independiente para convertir algún otro formato de tabla de datos en C de las declaraciones de constantes, o (ab)usando el preprocesador, puede haber ventajas para mantener todo dentro de una cadena de herramientas. En cualquier caso, dicho código existe, y por lo tanto la norma no debe cambiar en forma tal que alterar su significado.
    • LOL lado, Alisdair Meredith en una de sus charlas en CppCon 2014 dijo que el espacio en blanco como separador de lo que fue rechazado por esa razón.
    • De nuevo, las macros se expanden primero. Nada iba a cambiar. Nada podría ser más confuso de lo que ya es por tener una macro. Si usted sabe que la macro que existe y lo que se expande, entonces se entiende que el programa; si no, entonces usted ya está confundido hoy mismo! Supongo que toda mi argumento en contra de las bisagras en este. Yo shan no afirman que es un suficiente contra-argumento, pero es uno, sin embargo! Yo sólo espero que yo he puesto de manifiesto de manera adecuada. La gente sigue hablando alteración de significado, pero no veo una (cont.)
    • (cont.) excepto en la matriz de inicialización / función args casos, que son muy convincentes.
    • no es broma; me hace ver el atractivo de LISP, especialmente para la investigación del lenguaje.

  2. 16

    La obvia razón para no usar el espacio en blanco es que una nueva línea también
    espacio en blanco, y que C++ trata a todo el espacio en blanco de forma idéntica. Y fuera de
    mano, yo no sé de ningún lenguaje que acepta espacio en blanco arbitrario
    como un separador.

    Presumiblemente, Unicode 0xA0 (non-breaking space) puede ser utilizado—es
    el más ampliamente utilizado de la solución cuando la composición tipográfica. Veo dos problemas con
    que, sin embargo: en primer lugar, no es en el conjunto de caracteres, y en segundo lugar,
    no es visualmente distintivo; usted no puede ver que no es un espacio de
    solo busca en el texto en el editor.

    Más allá de eso, no hay muchas opciones. Usted no puede usar la coma, ya que
    que ya es legal token (y algo así como 1,234 es actualmente
    legal C++, con el significado de 234). Y en un contexto en el que podría ocurrir
    en el código legal, por ejemplo,a[1,234]. Mientras que yo no puedo imaginar un real
    código utilizando realmente esto, hay una regla básica que ningún programa jurídico,
    independientemente de lo absurdo, debe cambiar la semántica.

    Consideraciones similares significa que _ no puede ser utilizado ya sea; si no hay un
    #define _234 * 2, entonces a[1_234] iba a cambiar el significado de
    el código.

    No puedo decir que estoy particularmente satisfecho con la elección de ', pero
    tiene la ventaja de ser utilizado en la Europa continental, al menos en
    algunos tipos de textos. (Me parece recordar haber visto en alemán, para
    ejemplo, aunque en el típico texto, el alemán, como la mayoría de los otros
    idiomas, el uso de un punto o de un non breaking space. Pero tal vez fue
    El Suizo.) El problema con ' es analizar; la secuencia '1' es
    ya legal, como es '123'. Algo así como 1'234 podría ser un 1,
    seguido por el inicio de una constante de caracteres; no estoy seguro de qué tan lejos
    tiene que ver-por delante para tomar la decisión. No hay ninguna secuencia de legal
    C++ en el que una integral constante que puede ser seguido por un carácter
    constante, así que no hay problema con romper el código legal, pero que significa
    que la exploración léxica de repente se vuelve muy dependiente del contexto.

    Con respecto a tu comentario: no hay ninguna lógica en la elección de un
    decimal o un separador de miles. Un separador de decimales, por ejemplo, es
    ciertamente no se detenga por completo. Sólo son convenciones arbitrarias.)

    • «una nueva línea es también el espacio en blanco». Lo siento si estoy siendo tonta oye, pero ¿por qué? 🙂
    • C define el «espacio en blanco» a ser «… el espacio, tabulador horizontal, nueva línea, tabulador vertical, y la forma de alimentación», y esto es totalmente convencional.
    • Yo no compro la coma problema de ejemplo en todo. Por qué iba alguien a escribir 1,234? Que su vigencia en la actualidad no significa que su utilidad. MSalters’ ejemplo de matriz de inicialización fue bastante bueno, aunque. Como en silencio para cambiar la semántica de manera más general, sin embargo, no hay precedente para hacerlo donde la utilidad inmensamente mayor que el real casos de uso (auto siendo el ejemplo más obvio).
    • O incluso void f(int); void f(int, int); f(12,345);
    • Que bueno demasiado -.-
    • Re a[1_234] silenciosamente van a cambiar, otra vez no, porque las macros están ya procesados dos etapas de la traducción antes de la etapa en la que realiza la concatenación de cadenas (donde yo esperaría que este literal «concatenación» de tener lugar).
    • Finalmente, se presentan algunos lógica de por qué un separador decimal tiene más sentido como un período.
    • ¿Cómo se '123' legal?
    • Es un multi-carácter literal. No es muy útil, porque es de aplicación definidos por la naturaleza.
    • Debido a que C++ no es la línea de orientación. Una nueva línea desempeña exactamente el mismo papel como en cualquier otro espacio en blanco en el lenguaje.
    • Volver a la definición de espacio en blanco que ser convencional, esto es parcialmente cierto. Pero hay ciertas unificador características: ninguno de los caracteres de espacio en blanco requieren ningún tipo de tinta. Lo que es más importante, pueden ser usados indistintamente, y puede ser repetido sin efecto.
    • No sólo es legal con la implementación semántica definida, pero incluso si no fuera entonces esto sería más que probable que sea una restricción semántica, y todavía válido la sintaxis de, que es la clave, especialmente cuando se habla de resaltado de sintaxis problemas.
    • Re razones por las que un período de sentido como separador decimal: el único comentario que puedo encontrar con que se refiere es a los efectos de que el separador de decimales es verdaderamente un separador. El que argumenta en contra de que se detenga por completo, ya que se detenga por completo (o período) es un terminator, no de un separador. (Pero es completamente irrelevante, de cualquier manera, ya que estamos tratando con matemática convenciones, no textual de puntuación.)

  3. 10

    De wiki, tenemos un buen ejemplo:

    auto floating_point_literal = 0.000'015'3;

    Aquí, tenemos la . operador y, a continuación, si otro operador tendría que ser cumplido, mis ojos se espere algo visible, como una coma o algo, no es un espacio en blanco.

    Así un apóstrofo hace mucho mejor aquí que un espacio en blanco haría.

    Con espacios en blanco sería

    auto floating_point_literal = 0.000 015 3;

    que no se siente tan a la derecha como en el caso de los apóstrofos.


    En el mismo espíritu de Albert Renshaw la respuesta, creo que el apóstrofo es más claro que el espacio de la Ligereza Carreras en Órbita propone.

    type a = 1'000'000'000'000'000'544'445'555;
    type a = 1 000 000 000 000 000 544 445 555;

    Espacio se utiliza para muchas cosas, como las cuerdas de la concatenación de la OP menciona, a diferencia de la apóstrofo, que en este caso deja en claro, para alguien que se utiliza la separación de los dígitos.

    Cuando las líneas de código convertido en muchos, creo que esto va a mejorar la legibilidad, pero dudo que esa es la razón por la que elegir.


    Acerca de los espacios, es posible que vale la pena echar un vistazo a este C pregunta, que dice:

    El lenguaje no permite int i = 10 000; (un literal entero es un token, la intervención de espacios en blanco se divide en dos fichas) pero no suele ser de poco o ningún gasto incurrido por expresar el inicializador como una expresión de que es un cálculo de los literales:

    int i = 10 * 1000; /* ten thousand */

    • A menudo el número largo que usted está expresando no termina en ceros, en cuyo caso su 10*1000 ejemplo no funciona.
    • este es un ejemplo que se pegan de la respuesta que he enlazado. Crees que debo modificar?
    • Usted, supongo, consciente de la fecha de publicación (en concreto, el mes y el día, no tanto el año) de que el papel en blanco sobrecarga, derecho?
    • Sí no tan moderno, voy a editar @BenjaminLindley.
    • La modernidad de que no era la preocupación. Investigar un poco más cuidado. Si la fecha no tiene ningún significado en su parte del mundo, google.
    • Sus opiniones sobre la legibilidad no son universales; el apóstrofo se ve francamente extraño para la mayoría de la población mundial. Y, ciertamente, todos los documentos científicos utilice el espacio en blanco como separador en las fracciones de lado, y la mayoría lo utiliza como separador en el entero demasiado cara.

  4. 9

    Es cierto veo que no hay un significado práctico a:

    if (a == 1 1 1 1 1) ...

    así dígitos pueden ser combinados sin ambigüedad real
    pero, ¿qué acerca de un número hexadecimal?

    0 x 1 a B 2 3

    No hay manera de eliminar la ambigüedad de un error tipográfico hacerlo (normalmente deberíamos ver un error)

    • Así, simple. Sería válido el código de ahora, en lugar de un error. Un error puede resultar en un código válido, y no hay absolutamente ninguna manera de evitar que esto si su ‘lenguaje’ se compone de más de una palabra.
  5. 5

    Supongo que es porque, mientras que la escritura de código, si se llega al final de una «línea» (el ancho de la pantalla) un sistema automático de salto de línea (o «word wrap») se produce. Esto haría que su int para conseguir dividir por la mitad, una mitad estaría en la primera línea, la segunda mitad en el segundo… de esta manera todo se queda en el caso de un word-wrap.

    • Yo no estoy en el C++ comité de diseño, pero por lo que deduzco de las preocupaciones como estas por lo general no es un factor en la toma de decisiones.
    • No creo que esto es el la razón, pero lo interesante de la que yo no había considerado. Abrir para más ideas con más respuestas de la gente 🙂
    • También, es probable que también impide que los compiladores de código de omitir numérico-breaks. Espacios obtener despojado, estos podrían ser de izquierda. Pero eso es sólo un tonto posibilidad de que a nadie le importa esto jaja.
    • No sigo?
  6. 1
    float floating_point_literal = 0.0000153;   /* C, C++*/
    
    auto floating_point_literal = 0.0000153;    //C++11
    
    auto floating_point_literal = 0.000'015'3;  //C++14

    Comentar no hace daño:

    /*  0. 0000 1530 */ 
    float floating_point_literal = 0.00001530; 

    Cadenas binarias puede ser difícil de analizar:

    long bytecode = 0b1111011010011001; /* gcc , clang */  
    
    long bytecode = 0b1111'0110'1001'1001;  //C++14
    //0b 1111 0110 1001 1001  would be better, really.
    //It is how humans think.

    Una macro para su consideración:

    #define B(W,X,Y,Z)    (0b##W##X##Y##Z)
    #define HEX(W,X,Y,Z)  (0x##W##X##Y##Z)
    #define OCT(O)        (0##O)
    
    
    
    long z = B(1001, 1001, 1020, 1032 ); 
    
    //result :  long z = (0b1001100110201032);
    
     long h = OCT( 35); 
    
    //result :  long h  = (035); //35_oct => 29_dec
    
     long h = HEX( FF, A6, 3B, D0 ); 
    
    //result :  long h  = (0xFFA6BD0);
    • Esto no contesta la pregunta.
    • Oh, sí, comentando hace daño. Uno de los problemas es que el comentario podría estar equivocado, ahora o en el futuro. La otra es que repetititititititition dificulta la legibilidad y es propenso a errores.
    • En este caso, un mal comentario es bastante trivial para el lugar (el comentario no aporta significado, que acaba de volver a los formatos de la información por debajo de ella).
    • Seguro que en este caso es fácil de detectar. Si usted desviar su atención un poco para tratar de hacerlo.
  7. -1

    Tiene que ver con cómo el lenguaje se analiza. Habría sido difícil para el compilador autores reescribir sus productos a aceptar espacio delimitado literales.

    También, no creo que sea dígitos con espacios es muy común. Lo que yo he visto, es siempre no-caracteres de espacios en blanco, incluso en diferentes países.

    • Tuvieron que cambiar sus analizadores de todos modos.
    • Me temo que usted no entiende. Los espacios en blanco ya tiene un significado en el lenguaje. Uno que es fundamental. El cambio de 12'345'678 (dígito separadores) en la forma binaria es acerca de la misma, ya que sin el dígito de los separadores. Se requiere la misma cantidad de esfuerzo para el compilador de autor. Mientras que para redefinir el encadenamiento del sistema mismo no hubiera sido difícil. Además, separada por espacios de los números se ven feos.
    • Te puedo asegurar que yo no entiendo. El «encadenamiento sistema» no sería necesario «redefinir». Considere, por ejemplo, el literal de cadena de concatenación, que ya funciona bien.
    • El espacio en blanco sólo tiene un «fundamentales», que significa en la medida en que impide que dos caracteres consecutivos de ser parte de la misma razón. Como el OP se ha mencionado, este podría ser trivialmente ranurada en el «join adyacentes literales de cadena» preprocesador pasar. El (principal) analizador nunca lo vea.
    • Me temo que overmystify la tokenizer. Usted podría hacer como se hace para los literales de cadena, para que la concatenación sucede en la traducción de la fase 6, es decir, en la fase 6, ["foobar"] ["frob"] se convierte en ["foobarfrob]. O el tokenizer podría extenderse a absorber espacios: decimal_literal ::= [1-9][0-9]+[uU]?(l|L|ll|LL)? se convierte en decimal_literal ::= [1-9][ 0-9]+[uU]?(l|L|ll|LL)?, en cuyo caso el literal tiene que ser normalizada más tarde. Es básicamente el mismo modo de operación como para '. No sabes lo que queremos decir en realidad 😐

Dejar respuesta

Please enter your comment!
Please enter your name here