-
Notifications
You must be signed in to change notification settings - Fork 1
dolremi/CompilerProject
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
README file for Programming Assignment 2 (C++ edition)
=====================================================
Your directory should now contain the following files:
Makefile -> [course dir]/src/PA2/Makefile
README
cool.flex
test.cl
lextest.cc -> [course dir]/src/PA2/lextest.cc
mycoolc -> [course dir]/src/PA2/mycoolc
stringtab.cc -> [course dir]/src/PA2/stringtab.cc
utilities.cc -> [course dir]/src/PA2/utilities.cc
handle_flags.cc -> [course dir]/src/PA2/handle_flags.cc
*.d dependency files
*.* other generated files
The include (.h) files for this assignment can be found in
[course dir]/include/PA2
The Makefile contains targets for compiling and running your
program. DO NOT MODIFY.
cool.flex is a skeleton file for the specification of the
lexical analyzer. You should complete it with your regular
expressions, patterns and actions.
test.cl is a COOL program that you can test the lexical
analyzer on. It contains some errors, so it won't compile with
coolc. However, test.cl does not exercise all lexical
constructs of COOL and part of your assignment is to rewrite
test.cl with a complete set of tests for your lexical analyzer.
cool-parse.h contains definitions that are used by almost all parts
of the compiler. DO NOT MODIFY.
stringtab.{cc|h} and stringtab_functions.h contains functions
to manipulate the string tables. DO NOT MODIFY.
utilities.{cc|h} contains functions used by the main() part of
the lextest program. You may want to use the strdup() function
defined in here. Remember that you should not print anything
from inside cool.flex! DO NOT MODIFY.
lextest.cc contains the main function which will call your
lexer and print out the tokens that it returns. DO NOT MODIFY.
mycoolc is a shell script that glues together the phases of the
compiler using Unix pipes instead of statically linking code.
While inefficient, this architecture makes it easy to mix and match
the components you write with those of the course compiler.
DO NOT MODIFY.
cool-lexer.cc is the scanner generated by flex from cool.flex.
DO NOT MODIFY IT, as your changes will be overritten the next
time you run flex.
The *.d files are automatically generated Makefiles that capture
dependencies between source and header files in this directory.
These files are updated automatically by Makefile; see the make
documentation for a detailed explanation.
Instructions
------------
To compile your lextest program type:
% make lexer
Run your lexer by putting your test input in a file 'foo.cl' and
run the lextest program:
% ./lexer foo.cl
To run your lexer on the file test.cl type:
% make dotest
If you think your lexical analyzer is correct and behaves like
the one we wrote, you can actually try 'mycoolc' and see whether
it runs and produces correct code for any examples.
If your lexical analyzer behaves in an
unexpected manner, you may get errors anywhere, i.e. during
parsing, during semantic analysis, during code generation or
only when you run the produced code on spim. So beware.
Instructions for turning in the assignment will be posted on the
course web page.
GOOD LUCK!
About
The project for Stanford Compilers on the coursera
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published