Skip to content

Latest commit

 

History

History
93 lines (73 loc) · 2.74 KB

README.md

File metadata and controls

93 lines (73 loc) · 2.74 KB

Soodocode

Soodocode: a runtime for Cambridge CS (9618) pseudocode syntax, written in Typescript.

Image of sample program

Website

Click here to view the site

CLI

Installation: npm i -g soodocode-cli

Usage: soodocode file.sc

More demos

Features

Statements

  • DECLARE, DEFINE, CONSTANT, Assignment, OUTPUT, INPUT, RETURN, CALL, TYPE
  • IF, ELSE, FOR, FOR STEP, WHILE, REPEAT
  • CASE OF statements
  • Case branch with range
  • FUNCTION, PROCEDURE
  • CLASS, CLASS INHERITS, Class property, Class procedure, Class function

Operators

  • or and equal_to not_equal_to less_than less_than_equal greater_than greater_than_equal not
  • add subtract negate multiply divide integer_divide mod
  • string_concatenate
  • pointer_reference pointer_dereference access

Builtin functions

  • LEFT, RIGHT, MID/SUBSTRING, TO_UPPER, TO_LOWER, UCASE, LCASE
  • NUM_TO_STR, STR_TO_NUM, IS_NUM, ASC, CHR, INT
  • DAY, MONTH, YEAR, DAYINDEX, SETDATE, TODAY/NOW
  • LENGTH() on arrays and strings
  • RAND

Arrays

  • n-dimensional arrays
  • Arrays with size determined by runtime-evaluated expressions
  • Arrays with generic size
    • in function arguments
    • in function return types
    • in class fields
    • behind pointers

Types

  • Enums
  • Records
  • Pointers
    • Infinite pointer types
  • Recursive types
    • Sets
  • Set operations
  • Integer range type (1..10, 200..250)
  • Sound type system
    • Type checking is partly done at compile time (class inheritance, type size check) and partly at runtime (everything else).

Classes

  • Classes
  • Public/private class members
  • Inheritance
  • SUPER in classes

Files

  • OPENFILE READFILE WRITEFILE CLOSEFILE statements
  • READ WRITE APPEND file modes
  • SEEK GETRECORD PUTRECORD statements, RANDOM file mode
  • File GUI
  • EOF() function

Misc

  • Passing by value/reference for all variable types
  • Shortened forms (for variable declaration and function arguments)
  • Robust, hundreds of error messages
  • Typo checking
  • Error ranges (underline the exact cause of the error, highlight the area around it)
  • Configurable
  • Allows any words as identifiers (except pseudocode keywords), including for, __proto__, and hasOwnProperty

User interface

  • Minimalistic
  • Create, view, edit, delete, upload, and download files
  • All features accessible with only the keyboard

More information

For a full list of features, see features.md

For some discussion of advanced language features, see notes.md