Giter Site home page Giter Site logo

unam_compiladores's Introduction

unam_compiladores

Proyecto de compilador C-- para la clase de compiladores con Ulises Mercado

Hola,

En este proyecto intentamos elaborar un compilador para el lenguaje C −− (definido más adelante), que realizará una traducción a codigo objeto a una máquina hipotética para esto usamos las herramientas flex y yacc.

Gramática.

  1. programa → lista declaraciones

  2. lista declaraciones → lista declaraciones declaracion | declaracion

  3. declaracion → declaracion variables | declaracion funcion | tipo struct

  4. declaracion variables → tipo lista variables;

  5. lista variables → lista variables , lista | lista

  6. lista → id arreglo

  7. arreglo → [numero] arreglo | ε

  8. tipo → int | float | double | char | void | tipo struct

  9. tipo struct → struct id { cuerpo struct } | struct { cuerpo struct } | struct id

  10. cuerpo struct → cuerpo struct declaracion variables | declaracion variables

  11. declaracion funcion → tipo id( parametros ) bloque

  12. parametros → lista parametros | void

  13. lista parametros → lista parametros , parametro | parametro

  14. parametro → tipo id arrparam

  15. arrparam → [ ] arrparam | ε

  16. bloque → { delcaraciones locales lista sentencias }

  17. declaraciones locales → declaraciones locales declaracion variables | ε

  18. lista sentencias → lista sentencias sentencia | ε

  19. sentencia → sentencia exp | sentencia if | sentencia while | sentencia do | sentencia switch |

sentencia for | sentencia break | sentencia return | bloque | sentencia imprime | sentencia lee

  1. sentencia exp → expresion; | ;

  2. sentencia if → if( expresion ) sentencia sentencia else

  3. sentencia else → else sentencia | ε

  4. sentencia while→ while( expresion ) sentencia

  5. sentencia do → do sentencia while(expresion );

  6. sentencia switch → switch(id){ lista casos case default }

  7. lista casos → lista casos sentencia case | sentencia case

  8. sentecia case → case entero: sentencia sentencia break

4

  1. case defualt → default: sentencia sentencia break | ε

  2. sentencia for → for( expresion ; expresion ; sentencia incremento ) sentencia

  3. sentencia break → break;

  4. sentencia incremento → id++ | id- -

  5. sentencia imprime → print( expresion );

  6. sentencia lee → scan(id);

  7. sentencia return → return; | return expresion ;

  8. expresion → variable operador asignacion expresion | expresion simple

  9. operador asignacion → = | += | -= | *= | /= | %=

  10. variable → id vararrg | id.id

  11. vararrg → [ expresion ] vararrg | ε

  12. expresion simple → expresion simple operador relacional operando | expresion simple oper- ador logico operando | operando

  13. operado logico → && | ||

  14. operador relacional → <= | >= | < | > | == | ! =

  15. operando → operando operador adicion termino | termino

  16. oprador adicion → + | -

  17. termino → termino operador mul factor | factor

  18. operador mul → * | / | %

  19. factor → variable | llamada | ( expresion ) | entero | flotante | caracter | cadena |

dobleprecision | !expresion | -expresion

  1. llamada → id( argumentos )

  2. argumentos → lista argumentos | ε

  3. lista argumentos → lista argumentos , expresion | expresion

unam_compiladores's People

Contributors

alayanth avatar fernandoarreolaf avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

yardielbonilla

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.