Skip to content

SpeedyOrc-C/Cambridge-Pseudocode-to-Python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cambridge Pseudocode to Python

Intro

This is a translator written in Haskell that translate a pseudocode source file into a Python script.

The adopted pseudocode language is from GCSE and Advanced Level's computer science textbook and 9618 syllabus.

How to Use?

Compile

  1. Install Glasgow Haskell Compiler.
  2. Run compile.sh on UNIX or compile.cmd on Windows.
  3. An executable campseudo-to-py will be generated.

Translate Pseudocode

UNIX

./campseudo-to-py file_path

Windows

.\campseudo-to-py.exe file_path

e.g. If the source file is hello.whatever, then hello.whatever.py will be generated.

Run Pseudocode

UNIX

./run.sh file_path

Windows

.\run.cmd file_path

Language Feature Supported

Data Type

  • INTEGER (by value)
  • REAL (by value)
  • STRING (by value)
  • CHAR (by value)
  • BOOLEAN (by value)
  • ARRAY (by reference, multi-dimensional)
  • TYPE (by value, enumerated)
  • TYPE (by reference, composite)

Statement

  • Assignment
  • DECLARE
  • INPUT / READ
  • OUTPUT / PRINT
  • RETURN
  • CALL

Control Flow

  • IF THEN ENDIF
  • IF THEN ELSE ENDIF
  • WHILE DO ENDWHILE / WHILE ENDWHILE
  • REPEAT UNTIL
  • FOR TO NEXT / FOR TO ENDFOR
  • FOR TO STEP NEXT / FOR TO STEP ENDFOR
  • CASE OF OTHERWISE ENDCASE
  • Predicate TO in CASE

Subroutine

Due to the severe side effect caused by BYREF, BYREF will not be implemented. See Data Type for default passing method.

  • PROCEDURE ENDPROCEDURE
  • FUNCTION ENDFUNCTION

Pointer

Too many side effect! No pointers allowed!

File

  • OPEN FOR / OPENFILE FOR
  • READFILE
  • WRITEFILE
  • EOF
  • CLOSEFILE

Built-in Functions

  • INT
  • CHR
  • ASC
  • LCASE
  • UCASE
  • TO_UPPER
  • TO_LOWER
  • LENGTH
  • LEFT
  • RIGHT
  • MID
  • NUM_TO_STRING
  • RAND