Skip to content

Perl Interpreter for the Lox programming language

License

Notifications You must be signed in to change notification settings

dnmfarrell/Perl-Lox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NAME

Lox - A Perl implementation of the Lox programming language

DESCRIPTION

A Perl translation of the Java Lox interpreter from Crafting Interpreters.

INSTALL

As long as you have Perl 5.24.0 or greater, you should be able to run plox from the root project directory.

If you'd rather build and install it:

$ perl Makefile.PL
$ make
$ make test
$ make install

SYNOPSIS

If you have built and installed plox:

$ plox
Welcome to Perl-Lox version 0.02
>

$ plox hello.lox
Hello, World!

Otherwise from the root project directory:

$ perl -Ilib bin/plox
Welcome to Perl-Lox version 0.02
>

$ perl -Ilib bin/plox hello.lox
Hello, World!

Pass the --debug or -d option to plox to print the tokens it scanned and the parse tree.

TESTING

The test suite includes 238 test files from the Crafting Interpreters repo.

$ prove -l t/*

EXTENSIONS

Perl-Lox has these capabilities from the "challenges" sections of the book:

  • Anonymous functions fun () { ... }
  • Break statements in loops
  • Multi-line comments /* ... */
  • New Exceptions:
    • Evaluating an uninitialized variable

DIFFERENCES

Differences from the canonical "jlox" implementation:

  • repl is stateful

  • signed zero is unsupported

  • methods are equivalent

    Prints "true" in plox and "false" in jlox:

      class Foo  { bar () { } } print Foo().bar == Foo().bar;
    

AUTHOR

Copyright 2020 David Farrell

LICENSE

See LICENSE file.

Releases

No releases published

Packages

No packages published

Languages