JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2
  • Score
    100M100P100Q41270F
  • License MIT

A lightweight interpreter for Pascal written in JavaScript

Package Exports

  • pascal-interpreter

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (pascal-interpreter) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

JS Pascal Interpreter

Lightweight interpreter for Pascal written in JavaScript

WIP: Currently processes simple programs according to the grammar defined in CFG.md

This Interpreter was built as a learning exercise following Ruslan Spivak's Let's Build a Simple Interpreter series.

repl.js runs a basic REPL that can take simple programs on a single line, and parse and interpret them.

main.js takes the relative path of the program input file as a command-line argument, and parses and interprets it.

Upon a successful parsing, the constructed AST of the program is printed out, followed by the end contents of the Symbol Table, and the GLOBAL_SCOPE of the interpreter.

Most errors are caught by the lexer and the parser. Feel free to open up an issue if you find some errors that I do not report accurately.

Installation

  • Install using npm: npm install --global pascal-interpreter
  • Alias the interpreter: alias pascaljs="node /path/to/global/node_modules/pascal-interpreter/main.js"
  • Alias the REPL: alias pascaljs-repl="node /path/to/global/node_modules/pascal-interpreter/repl.js"

    Note: the path to the global node modules will be printed to the console after running the install

Usage:

If in the source directory:

  • Run the REPL with node repl.js
  • Ask the REPL what it can do with help.
  • Exit the REPL with quit

Or

  • Interpret a .pas program file with node main.js <filename.pas>

If aliased:

  • Run the REPL with pascaljs-repl
  • Interpret a .pas program file with pascaljs <filename.pas>