Skip to content

zhesha/lexerjs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

Watchers

Forks

Releases

No releases published

Packages

No packages published