Bob Nystrom 96d893a637 feat: ignore shebang lines starting with #! on first line of source
Add special handling in the lexer's nextToken function to detect a '#' character followed by '!' on the first line (currentLine == 1) and skip the entire line as a comment. If the shebang appears on any other line, or if a '#' is not followed by '!', emit a lex error for invalid character. Include test cases for valid shebang execution, shebang at EOF, shebang on a non-first line (expected error), and an invalid shebang pattern (expected error).
2015-01-04 21:02:42 +00:00

Wren is a small, clean, fast, class-based scripting language. Think Smalltalk in a Lua-sized package.

IO.print("Hello, world!")

class Wren {
  adjectives { ["small", "clean", "fast"] }
  languageType { "scripting" }
}
  • Wren is small. The codebase is under 4,000 semicolons which keeps the language and libraries small enough to fit in your head. You can skim the whole thing in one sitting.

  • Wren is clean. The codebase is small, but not dense. It is readable and lovingly-commented. It's written in warning-free standard C99.

  • Wren is fast. A fast single-pass compiler to tight bytecode, and a compact object representation help Wren compete with other dynamic languages.

  • Wren is class-based. There are lots of scripting languages out there, but many have unusual or non-existent object models. Wren places classes front and center.

  • Wren is a scripting language. Wren is intended for embedding in applications. It has no dependencies, a small standard library, and an easy-to-use C API.

S
Description
Highly customized version of the wren programming language. It has all the modules that you would expect in a std library including http, websockets, sqlite3 and jinja-like templating engine. The idea is to make it suitable for web development.
Readme
22 MiB
Languages
HTML 50%
C 22.2%
PHP 13.4%
C++ 6%
Makefile 2.9%
Other 5.5%