Skip to content

Latest commit

 

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

Lexerjs is simple lexical analyzer.

var tokens = lexer("5+5", [
  {
    name: "number",
    tester: function(tested) {
      var regResult = tested.match(/\d/);
      if (regResult && regResult[0] == tested) {
        return lexerResults.possible;
      } else {
        return lexerResults.none;
      }
    }
  },
  {
    name: "sign",
    tester: function(tested) {
      if (tested == "+") {
        return lexerResults.exact;
      } else {
        return lexerResults.none;
      }
    }
  }
]);

returns:

[
  { type: "number", value: "5" },
  { type: "sign", value: "+" },
  { type: "number", value: "5" }
]

It have only one function lexer what receive string and array of rules, and returns array of tokens.

Each rule must have name, what will be used as token type, and tester. Tester is a function what receive string what must be tested and return one of 'lexerResults'. lexerResults.none - if tested string doesn't fit to this rule. lexerResults.start - if token can start as tested string, but it must contains some more characters. lexerResults.exact - if tested string is exact a token and can't be expanded with extra character. lexerResults.possible - if tested string is a token and it can contain more character as well. lexerResults.skip - if tested string is a token but it should not be in the result list.

Lexer returns array of tokens, each token have a type, and a value what is a part of original string what fit to the rule.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages