Cps translator for python, Python Programming

Your task is to construct a translator from the subset of Python in Project 3 intocontinuation-passing style (CPS).

Of course, the expected way of accomplishing this is to translate HIR into CPS.

It is tedious to translate HIR directly to CPS. It is strongly recommended that you push HIR into a desugaring phase--dropping it down to LIR first.

1. You can use any language you want for this project, but you must be able to run your program under Linux or Mac OS X. Once again, non-functional languages are at a steep expressiveness disadvantage, and will require substantially more time and code invested. Please plan and request help accordingly.

2. If the TA or I can't get your code to run, we'll ask you to help us get it running.

1. You must translate the same simplified subset of Python from the Project 2 less the additional restrictions from Project 3.

2. You should assume that Python source is coming in, not pre-lexed, pre-parsed input or pre-translated input.

3. If you need to use a working lexer, you can assume that the programpylex is in the current PATH, and that it matches the behavior of the web app by consuming a file on STDIN and printing its tokens as S-Expressions line-by-line on STDOUT.

4. If you need to use a working parser, you can assume that the programpyparse is in the current PATH, and that it matches the behavior of the web app by consuming a tokenized input on STDIN and printing the AST on stdout.

5. If you need to use a working HIR translator, you can assume that the program pytrans is in the current PATH, and that it matches the behavior of the bytecode app by a Python AST on STDIN and printing the HIR AST on stdout.

6. The output should fit within the grammar for CPS.

7. Include a README.txt file that contains:

1. your name;

2. a list of software dependencies necessary to run your assignment;

3. a description of what you got working, what's partially working and what's completely broken; and

4. a manifest briefly (a few words) describing each file you've turned.

8. Every source code file you turn in needs to have your name and student number at the top and the bottom in comments.

9. The program should use a Makefile:

1. make should compile the program (if compilation is necessary).

2. make run should accept Python code on STDIN and send CPS code toSTDOUT.

3. make test should run any test cases you used.

10. The program should output one S-expression containing the CPS code. The output for invalid input is undefined, but it is recommended that you print an error message containing the word error on failure.

11. Your output need not match the reference implementation exactly. It should be semantically equivalent (unless the reference implementation has a bug).

12. When CPS-converting, the continuation argument always comes last, even for primitive operations.

13. You can also test your output against a Python 3.x interpreter.

Posted Date: 3/12/2013 1:16:12 AM | Location : United States







Related Discussions:- Cps translator for python, Assignment Help, Ask Question on Cps translator for python, Get Answer, Expert's Help, Cps translator for python Discussions

Write discussion on Cps translator for python
Your posts are moderated
Related Questions
You should use for whenever you can, because  it creates  the structure of your  loops clear. Sometimes, however, you require to do an operation various times, but you don't want t

given number isprime number or not

Procedure calls When you compute an expression of the form ( ,  ..., )   the Python interpreter treats  this as a procedure call. It will be simpler to talk about

Booleans   Before we talk about  conditionals, we require  to clarify the Boolean  data  type.  It has two values False and True. Typical statement that have Boolean values

Tuples  and strings Python has two different more list-like data  types  that are very important to understand.A tuple  is a structure that  is like a list, but  is not  mutab

Variables We cannot  go very far without variables. A variable is a value related to a name that we can bind  to have a particular value  and  then  later use in an expression.

In Python, the fundamental abstraction of a computation is as a procedure (other  books call them "functions" instead; we will end  up  using  both  values).   A function that  tak

1 Low Level Exploits 1.1 Savegames Jimmy is becoming increasingly frustrated at the computer game hes playing. He has a save right before the levels boss but he needs either more

Structured data We will often  want  to work  with  large  groups of data.   Rather  than  providing  each  number its own  value,  we need  to manage the data  into natural s

python program of motion of a particle in viscus medium