 
 
 
 
 
 
 
 
 
 










 
 Sig: Diseño de Analizadores con
Sup: Análisis LR
 Ant: Recuperacion de Errores: Visión
 Err: Si hallas una errata ...
 
Descripción Eyapp del Lenguaje  SimpleC
En este capítulo usaremos  Parse::Eyapp  para desarrollar
un compilador para el siguiente lenguaje, al que denominaremos  Simple C :
program: definition+
definition: funcDef | basictype funcDef | declaration
basictype: INT | CHAR
funcDef: ID '('  params  ')' block
params: ( basictype ID arraySpec)<* ','>
block: '{' declaration* statement* '}'
declaration: basictype declList ';'
declList: (ID arraySpec) <+ ','>
arraySpec: ( '[' INUM ']')*
statement:
    expression ';'
  | ';'
  | BREAK ';'
  | CONTINUE ';'
  | RETURN ';'
  | RETURN expression ';'
  | block
  | ifPrefix statement %prec '+'
  | ifPrefix statement 'ELSE' statement
  | loopPrefix statement
ifPrefix: IF '(' expression ')'
loopPrefix: WHILE '(' expression ')'
expression: binary <+ ','>
Variable: ID ('[' binary ']') *
Primary:
    INUM
  | CHARCONSTANT
  | Variable
  | '(' expression ')'
  | function_call
function_call:  ID  '(' binary <* ','> ')'
Unary: '++' Variable | '--' Variable | Primary
binary:
    Unary
  | binary '+' binary
  | binary '-' binary
  | binary '*' binary
  | binary '/' binary
  | binary '%' binary
  | binary '<' binary
  | binary '>' binary
  | binary '>=' binary
  | binary '<=' binary
  | binary '==' binary
  | binary '!=' binary
  | binary '&' binary
  | binary '**' binary
  | binary '|' binary
  | Variable '=' binary
  | Variable '+=' binary
  | Variable '-=' binary
  | Variable '*=' binary
  | Variable '/=' binary
  | Variable '%=' binary
  | etc. etc.
 
 
 
 
 
 
 
 
 
 










 
 Sig: Diseño de Analizadores con
Sup: Análisis LR
 Ant: Recuperacion de Errores: Visión
 Err: Si hallas una errata ...
Casiano Rodríguez León 
2012-05-22