shivtavker / coolc Goto Github PK
View Code? Open in Web Editor NEWThis project forked from tjdetwiler/coolc
Cool Compiler for https://www.coursera.org/course/compilers
This project forked from tjdetwiler/coolc
Cool Compiler for https://www.coursera.org/course/compilers
README file for Programming Assignment 3 (C++ edition) ====================================================== Your directory should now contain the following files: Makefile -> [course dir]/src/PA3/Makefile README cool.y bad.cl good.cl cool-tree.handcode.h cool-tree.cc -> [course dir]/src/PA3/cool-tree.cc cool-tree.aps -> [course dir]/src/PA3/cool-tree.aps dumptype.cc -> [course dir]/src/PA3/dumptype.cc handle_flags.c -> [course dir]/src/PA3/handle_flags.cc parser-phase.cc -> [course dir]/src/PA3/parser-phase.cc stringtab.cc -> [course dir]/src/PA3/stringtab.cc tokens-lex.cc -> [course dir]/src/PA3/tokens-lex.cc tree.cc -> [course dir]/src/PA3/tree.cc utilities.cc -> [course dir]/src/PA3/utilities.cc *.d dependency files *.* other generated files The include (.h) files for this assignment can be found in [course dir]/include/PA3 The Makefile contains targets for compiling and running your program. DO NOT MODIFY. cool.y is the skeleton for the parser specification that you are to write. It already contains productions for the program and the classes. Use them as an example to write the remaining productions. You should also read the bison documentation. This skeleton will compile and run as is, but it doesn't do much. good.cl, bad.cl test a few features of the grammar. You should add tests to ensure that good.cl exercises every legal construction of the grammar and that bad.cl exercises as many different parsing errors as you can squeeze into one file. cool-tree.aps contains the definitions for the tree language which you use to construct the abstract syntax tree (AST). From this file, cool-tree.h and cool-tree.cc are automatically generated by a utility that compiles the specification into C++ functions for producing and consuming the tree nodes. This file is provided for your reference. DO NOT MODIFY. tree.{cc|h} contain definitions used by the tree package. cool-tree.handcode.h is the handwritten extension to cool-tree.h. If you read cool-tree.h and cool-tree.cc, you will note that there are "hooks" for extending the classes declarations. Extending and modifying the tree package is discussed in the "Cool Tour", but you do not need to (and should not) modify the tree package for this assignment. tokens-lex.cc is a lexer capable of reading a token stream from console in the format produced by the lexer phase. DO NOT MODIFY. parser-phase.cc contains a driver to test the parser. DO NOT MODIFY. dumptype.cc prints the AST out in a form readable by the semant phase of the compiler. DO NOT MODIFY. handle_flags.cc implements routines for parsing command line flags. DO NOT MODIFY. The rest of the files are created as byproducts of `bison'. `cool-parse.cc' is the generated C++ file containing the parser. Files not discussed are covered in the README for PA2. Instructions ------------ To compile your parser program type: % make parser This produces an executable named "parser" which is standalone phase of the Cool compiler. It requires lexer, semant, and cgen to do anything useful. To test your parser on a file 'foo.cl' type % myparser foo.cl myparser is a shell script that "glues" together lexer and parser using pipes. To run your parser on the files good.cl and bad.cl type: % make dotest To run the (provided) lexer and your parser on a file called test.cl type: % ./lexer test.cl | ./parser If you think your parser is correct and behaves like the one we wrote, you may want to run a COOL compiler using your parser: % mycoolc foo.cl To overwrite the default lexical analyzer with yours, replace lexer (which is a symbolic link to the "official" lexer) with your lexer from PA2. Instructions for turning in the assignment will be posted on the course web page. GOOD LUCK!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.