Tokens C - norman-ipn/Errores GitHub Wiki

Condiciones

Un símbolo atómico sintácticamente de un programa fuente

Formulario

token

→ identifier | keyword | literal-constant | operator | punctuation

c-character

→ letter | digit | c-symbol | escape-sequence

character-literal

→ ' c-character '

decimal-literal

→ nonzero-digit digit *

digit

→ 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

escape-sequence

→ simple-escape-sequence

| octal-escape-sequence

| hexadecimal-escape-sequence

hexadecimal-digit

→ 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9

| A | B | C | D | E | F | a | b | c | d | e | f

hexadecimal-escape-sequence

→ ( \x | \X ) hexadecimal-digit hexadecimal-digit *

hexadecimal-literal

→ ( 0x | 0X ) hexadecimal-digit hexadecimal-digit *

identifier

→ ( letter | _ ) ( letter | digit | _ ) *

integer-literal

→ decimal-literal

| octal-literal

| hexadecimal-literal

integer-suffix

→ unsigned-suffix

| long-suffix

| long-suffix unsigned-suffix

| unsigned-suffix long-suffix

keyword

→ auto | else | register | union | break | enum | return | unsigned | case | extern | short | void | char | float | signed | volatile | const | for | sizeof | while | continue | goto | static | default | if | struct | do | int | switch | double | long | typ

l-character

→ letter | digit | space | escape-sequence

| ! | # | $ | % | & | ( | ) | * | + | , | - | . | /

| : | ; | < | = | > | ?

| @ | [ | ] | ^ | _

| ` | { | | | } | ~

letter

→ a | b | c | d | e | f | g | h | i | j | k | l | m

| n | o | p | q | r | s | t | u | v | w | x | y | z

| A | B | C | D | E | F | G | H | I | J | K | L | M

| N | O | P | Q | R | S | T | U | V | W | X | Y | Z

literal-constant

→ integer-literal

| real-literal

| character-literal

| string-literal

long-suffix

→ l | L

nonzero-digit

→ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

octal-escape-sequence

→ \ octal-digit

| \ octal-digit octal-digit

| \ octal-digit octal-digit octal-digit

octal-literal

→ 0 octal-digit *

s-character

→ letter | digit | s-symbol | escape-sequence

simple-escape-sequence

string-literal

→ ( character-size-prefix | ε ) ( " s-character * " ) *

unsigned-suffix

→ u | U

Observaciones

  • Los Tokens pueden ser separados por espacios en blanco.
  • Tokens también se separan cuando el siguiente carácter no puede ser parte de la corriente de símbolos: por ejemplo, la cadena de a + b tiene tres fichas: a, +, y b. El primer símbolo, a, es un identificador, y el + siguiente no puede ser parte de un identificador. El segundo símbolo, +, es un operador, y el siguiente no puede ser parte del operador.
  • Algunos símbolos son los operadores y los signos de puntuación al mismo tiempo.

Bibliografía

C Etymology Token: http://c.comsci.us/etymology/token/token.html

⚠️ **GitHub.com Fallback** ⚠️