@agarimo/lexer

1.0.0 • Public • Published

@agarimo/lexer

Introduction

This package provides the class Lexer that is the basic class to build parsers.

Installation

You can install it using NPM

  npm i @agarimo/lexer

Token Types

  • Identifier: 1
  • Number: 2
  • String: 3
  • Operator: 4
  • Separator: 5
  • EndOfLine: 6
  • Assignment: 7
  • EndOfFile: 8

Example of use

const { Lexer } = require('@agarimo/lexer');

const script = `
n = 0
while n < 10:
  n += 1
print("hola")
`

const lexer = new Lexer();
lexer.init(script);
let token;
while (!token || token.type !== Lexer.TokenType.EndOfFile) {
  token = lexer.nextToken();
  console.log(token);
}

This will show in console:

Token { value: 'n', type: 1 }
Token { value: '=', type: 7 }
Token { value: '0', type: 2 }
Token { value: '\n', type: 6 }
Token { value: 'while', type: 1 }
Token { value: 'n', type: 1 }
Token { value: '<', type: 4 }
Token { value: '10', type: 2 }
Token { value: ':', type: 5 }
Token { value: '\n', type: 6 }
Token { value: 'n', type: 1 }
Token { value: '+=', type: 7 }
Token { value: '1', type: 2 }
Token { value: '\n', type: 6 }
Token { value: 'print', type: 1 }
Token { value: '(', type: 5 }
Token { value: 'hola', type: 3 }
Token { value: ')', type: 5 }
Token { value: '', type: 8 }

Readme

Keywords

none

Package Sidebar

Install

npm i @agarimo/lexer

Weekly Downloads

3

Version

1.0.0

License

MIT

Unpacked Size

15.4 kB

Total Files

8

Last publish

Collaborators

  • jesus-seijas