8000 GitHub - jimbojw/jslex: A lexical analyzer in JavaScript. · GitHub
[go: up one dir, main page]

Skip to content
jimbojwPublic

About

A lexical analyzer in JavaScript.

Resources

Stars

24 stars

Watchers

1 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

jslex

Lexical analyzer JavaScript library. Similar to lex and flex.

Developed by

  • Jim R. Wilson (jimbojw)

GitHub repository

License

This project is released under The MIT License.

Usage

The best way to understand how to use jslex is via illustrative example.

First, create a lexer:

var lexer = new jslex( {
    "start": {
        "[0-9]+": function() {
            return parseInt(this.text, 10);
        },
        "[-+\n]": function() {
            return this.text;
        },
        "[ \t\r]": null,
        ".": function() {
            throw "Invalid character '" + this.text + "' (line:" + (1 + this.line) + ", column:" + this.column + ")";
        }
    }
} );

The above lexer has one state, called "start", which contains 4 patterns:

  • one for numbers,
  • one for plus, minus, or new lines,
  • one for uninteresting whitespace characters, and
  • one for anything else.

To use the lexer on an input string, you can use the lex() method:

function callback( token ) {
  // Do something with returned token
}

lexer.lex( "1 + 2", callback );

In the above example, the callback() function will be called three times:

  • first with the number 1,
  • then with the string "+", and
  • lastly with the number 2.

A very common use case for the lexer is to simply collect all the tokens in an input stream. For this, use the collect() function:

var tokens = lexer.collect( "1 + 2" );

After executing the above snippet, the tokens variable would have three elements: [1, "+", 2].

About

A lexical analyzer in JavaScript.

Resources

Stars

24 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

0