pylexer
A python implementation of a lexical analyzer which supports full scan, state based lexing and lookahead
Warning This is not a GENERATOR like classical lexer is. It does not produce any python code. It's a simple plain scanner of the given input string and tokenizer into given set of tokens by matching regular expressions. Thus, at runtime you can change the token definition and use one same code for any token set
Installation
Install in your project with pip:
pip install pylexer
Usage
An example use:
from pylexer import PyLexer
config = {
'\\s' :'',
'\\d+' :'number',
'\\+' : 'plus',
'-': 'minus',
'\\*' : 'mul',
'/' : 'div',
}
#Static Scan method that returns list of tokens
tokens = PyLexer.scan(config, '2 + 3')
map(lambda x:x.get_name(), tokens)
#PyLexer Config is a dict, so you can also use it like
lexer = PyLexer()
lexer.set_input('2 + 3')
lexer.move_next()
while lexer.get_look_ahead():
print(lexer.get_look_ahead().get_name())
lexer.move_next()
Token Definition
Tokens are defined with TokenDefinition class that holds token name and regular expression. Token name can be empty, and in that case lexer will ignore/skip such tokens
Lexer Configuration
The lexer configuration holds a list of all token definitions. With LexerDictConfig it can be easily created from an array where keys are regular expressions and values are names of tokens
Full scan
Pylexer's static scan method can be used to scan given input string and returns a list of tokens, Pylexer can also be used to walk through scanned tokens with single look ahead
License
MIT license. See LICENSE.md for more information.
Contributors
Pylexer is inspired from PHP's Lexer(https://github.com/tmilos/lexer) and takes code heavily from doctrine API, all credits due with Milos Tomic
Metadata
Release files for pylexer 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pylexer-1.0.0.tar.gz | 5.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pylexer-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 13.7 kB
Release files / pylexer-1.0.0.tar.gz
| Download URL | pylexer-1.0.0.tar.gz |
|---|---|
| Size | 5.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7173e1d730cca0a03870da8bfaf7ddd1085d1aba21f25cd78cfff4e8c892beff
|
|
BLAKE2b-256 checksum How to use checksums |
aa93785cc297351c762bcaf0e43001e3e924581216ed03c2fe28334fe8beccea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/2.7.10
|
Release files / pylexer-1.0.0-py3-none-any.whl
| Download URL | pylexer-1.0.0-py3-none-any.whl |
|---|---|
| Size | 7.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6bab41f2469361d6b9c1d96b9c6332a8fb734fe4bcf3e2c9055e18562ecd7e27
|
|
BLAKE2b-256 checksum How to use checksums |
605d0455a5dfc1fe2438ea88277c47396320d7962761feb7d15b176467bf1ecd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/2.7.10
|