On this page:
INTERCAL in Racket
9.1

INTERCAL in Racket🔗ℹ

Ethan Hawk and Eva Augur

This documentation describes the intercal language entrypoint exported by the package.

This package implements a substantial subset of C-INTERCAL in Racket. The frontend accepts INTERCAL source text, normalizes it to a strict S-expression intermediate representation, and macro-expands that IR into explicit Racket code that simulates INTERCAL state and control flow.

    1 Using the language

    2 Using the Backend Directly

      2.1 Main Entry Points

      2.2 A Minimal Backend Example

      2.3 Backend Helpers

      2.4 Useful Runtime Parameters

      2.5 When to Use the Backend

    3 The INTERCAL Model

      3.1 Data model

      3.2 Expressions

      3.3 Control flow

        3.3.1 NEXT and RESUME

        3.3.2 FORGET

        3.3.3 COME FROM

        3.3.4 TRY AGAIN and GIVE UP

      3.4 Statement state and self-modification

        3.4.1 ABSTAIN and REINSTATE

        3.4.2 NOT, DON’T, ONCE, and AGAIN

        3.4.3 IGNORE and REMEMBER

        3.4.4 STASH and RETRIEVE

      3.5 Runtime I/O support

    4 Concrete Grammar

    5 What is implemented

      5.1 Reader and frontend

      5.2 Statements and modifiers

      5.3 Expressions and data

      5.4 I/O

      5.5 Libraries

    6 What is missing or incomplete

    7 Compilation pipeline

      7.1 Cleaning and reading

      7.2 Parse tree normalization

      7.3 Macro compilation

      7.4 Runtime support

      7.5 Conservative optimization

    8 Testing

    9 Installed Usage