CISC 471 :: COMPILER DESIGN CLASS WIKI

Please add links and text to share information with others in the class. Add questions for others to help.

CISC 471 - Compiler Design
Smith 218
8-9:15AM TR
Class Link - http://www.cis.udel.edu/~pollock/471/index.html

Professor - Lori Pollock
436 Smith Hall
pollock@cis.udel.edu
302 831-1953
Office Hours - 12-1pm Tuesdays; 9:30-10:30AM Thursdays and by appointment.

TA - Christopher Thorpe thorpe@udel.edu
Office Hours - 11AM-12PM, Mondays and Wednesdays 102 Smith

Current Unanswered Questions

Place new questions here. When questions are answered they will be place under the appropriate heading.

Project 1

General Information

D0: Create an svn repository

Q&A

D1: Understanding a lex spec

Due:

Q&A

Q: I was wondering how you want us to write test cases. Are we suppose to write them like the turtle graphics program? If we are, PROCEDURE would be illegal.
A: The LEGAL test case should try to test many possible test scenarios for the current flex spec, with no concern for syntax because you don't know that yet.

D2: Extending a lex spec to augment the language lexeme set

Specifications

Due: Tuesday March 4, 2008 : Before class 8:00am

1. Please put your deliverable 2 in a separate directory from your deliverable 1 to make it easy to distinguish the 2 deliverables.

2. Deliverable 2 should include:

 new turtle.l spec
 test file that shows legal cases for your spec (the more thorough the better)
 new token.h file to include new tokens created
 readme that explains your intentions of what your language's lexemes/tokens should be.\\

Q&A

Q: I know this is kind of late notice, but I recently tried to read the turtle.l file and it says permission denied. So I tried to copy the project1 folder into my repository and the only files that copied were Makefile, symtab.c, and symtab.h. Is there a problem with my acad account? By: Doug Wise

Q: I was wondering (last minute I know), are we supposed to be using every token that is in the original turtle.l file? And if so, what are COPEN and CCLOSE supposed to do? -Shannon

D3: Understanding a yacc spec

Specifications

Due: Monday March 10, 2008

Q&A

D4: Extending a yacc spec to become a translator

D5: Create test cases to break another person’s translator

D6: Test and Refine cycle – demo and svn/cvs directory

General Questions & Answers

Q: I keep trying to checkout the repository and it keeps saying “cannot connect to host svn.acad.ece.udel.edu: Connection refused”. Do you have any ideas what the problem could be? I went back and added write permissions to authorized users. It still says the same error though. (Added by Joel Messer, based on email from Prof. Pollock)

A:
By logging in to svn.acad.ece.udel.edu and running ps -elf | grep svnserve, you can see what SVN processes are running and ready to get commands.

svn[31] [~/]> ps -elf | grep svnserve
0 S   messer 24632 24592   0  40 20        ?    253        ? 15:21:47 pts/9       0:00 grep svnserve
0 S   palmer 28778  6056   0  40 20        ?    785        ? 20:28:55 ?           0:00 svnserve -d --listen-port 12121
0 S dhanawad  7533  6056   0  40 22        ?    784        ?   Feb 29 ?           0:00 /usr/local/subversion/bin/svnserve 
0 S    chang  7507  6056   0  40 22        ?    784        ?   Feb 29 ?           0:00 /usr/local/subversion/bin/svnserve 
0 S   warner  7506  6056   0  40 22        ?    784        ?   Feb 29 ?           0:00 /usr/local/subversion/bin/svnserve 
0 S   poskus  7504  6056   0  40 22        ?    784        ?   Feb 29 ?           0:00 /usr/local/subversion/bin/svnserve 
0 S haozwang  7531  6056   0  40 22        ?    784        ?   Feb 29 ?           0:00 /usr/local/subversion/bin/svnserve 
0 S hennings  7505  6056   0  44 22        ?    784        ?   Feb 29 ?           0:00 /usr/local/subversion/bin/svnserve 
0 S  schmidt  7537  6056   0  40 22        ?    784        ?   Feb 29 ?           0:00 /usr/local/subversion/bin/svnserve 
0 S   messer  7538  6056   0  40 22        ?    784        ?   Feb 29 ?           0:00 /usr/local/subversion/bin/svnserve 
0 S     wise  4529  6056   0  40 20        ?    784        ?   Mar 03 ?           0:00 /usr/local/subversion/bin/svnserve 
0 S   raimer 18554  6056   0  40 20        ?    785        ?   Mar 02 ?           0:00 svnserve -d --listen-port=10101
0 S breinhar 17781  6056   0  40 20        ?    785        ? 10:45:56 ?           0:00 /usr/local/subversion/bin/svnserve 
0 S      fry 15133  6056   0  40 20        ?    785        ? 08:05:03 ?           0:00 /usr/local/subversion/bin/svnserve 
svn[32] [~/]> 

As you can see, there are approximately 13 students with SVN accounts running currently. Since the SVN server when down last week (sometime around the 29th) it is possible that your SVN server was taken down and never reinitialized. These are the steps to take.

1) Log into svn.acad.ece.udel.edu
2) Run ps -elf | grep svnserve to see if your svn server is running, if not, continue.
3) Type crontab -e to edit your crontab (NOTE: The default editor will be VI).
4) Copy and paste the following into your crontab,

 0,30 * * * * /repos/start-svn.sh <port> >/dev/null
  • Replace <port> with your port number.

5) Close your crontab and run

 /repos/start-svn.sh <port> &
  • Replace <port> with your port number.

6) Run ps -elf | grep svnserve again and check for your SVN server.
7) If this doesn't work, post a comment here and I'll see if I can help.

P.S. Running the same command “ps -elf | grep svnserve” on orioles gives this…

orioles[31] [~/]> ps -elf | grep svnserve
0 S     bart 16348   695   0  98 20        ?   1067        ?   Feb 25 ?           0:00 svnserve -d --listen-port=23118
0 S     biro 21476   695   0  40 20        ?   1061        ? 01:04:35 ?           0:00 svnserve -d --listen-port 14742

I'm guessing on of you guys wrote your crontab's on orioles which won't work!

~Joel Messer

Helpful Commands

  • If you don't like vi you can set the default editor to something else.

First type “which «editor»” to get the path of the editor you wish to use. Then type “setenv EDITOR «path of editor»”.

  • hint
  • hint

Project 2

Project 3