Lexer

Version, currently master branch1 version
  • master branchlatestJul 5, 2020

github.com/lwakefield/lexer.cr

A simple regex based lexer

4 stars
0 dependents
License: MIT

Installation

# Add this to your shard.yml
dependencies:
  Lexer:
    github: lwakefield/lexer.cr
    branch: master

master is a branch, not a release, so this tracks it rather than pinning a version.

Then run:

shards install

shard.yml

Crystal
0.35.0
License
MIT
Author
Lawrence Wakefield
Target
  • lexer from lexer.cr

Dependencies

This version declares no dependencies.

README

lexer.cr

A super simple regex based lexer written in Crystal.

# precedence defined by order in which keys are defined ie. def has a higher
# precedence than identifier.
token_map = {
  "def"        => /def/,
  "end"        => /end/,
  "identifier" => /\w+/,
  "number"     => /\d+/,
  "lparen"     => /\(/,
  "rparen"     => /\)/,
  "plus"       => /\+/,
  "whitespace" => /\s+/,
}
Lexer.lex(token_map, "def inc (a) a + 1 end")

Lex away!