textmate-grammar-python
A lexer and tokenizer for grammar files as defined by TextMate and used in VSCode, implemented in Python.
Textmate grammars are made for vscode-texmate, allowing for syntax highlighting in VSCode after tokenization. This presents textmate-grammar-python with a large list of potentially supported languages.
Usage
Install the module with:
pip install textmate-grammar-python
Before tokenization is possible, a LanguageParser needs to be initialized using a loaded grammar.
from textmate_grammar.parsers.matlab import MatlabParser
parser = MatlabParser()
After this, one can either choose to call parser.parsing_string to parse a input string directly, or call parser.parse_file with the path to the appropiate source file as the first argument, such as in the example example.py.
The parsed element object can be displayed directly by calling the print method. By default the element is printed as an element tree in a dictionary format.
>>> element = parser.parse_string("value = num2str(10);")
>>> element.print()
{'token': 'source.matlab',
'children': [{'token': 'meta.assignment.variable.single.matlab',
'children': [{'token': 'variable.other.readwrite.matlab', 'content': 'value'}]},
{'token': 'keyword.operator.assignment.matlab', 'content': '='},
{'token': 'meta.function-call.parens.matlab',
'begin': [{'token': 'entity.name.function.matlab', 'content': 'num2str'},
{'token': 'punctuation.section.parens.begin.matlab', 'content': '('}],
'end': [{'token': 'punctuation.section.parens.end.matlab', 'content': ')'}],
'children': [{'token': 'constant.numeric.decimal.matlab', 'content': '10'}]},
{'token': 'punctuation.terminator.semicolon.matlab', 'content': ';'}]}
Alternatively, with the keyword argument flatten the element is displayed as a list per unique token. Here the first item in the list is the starting position (line, column) of the unique tokenized element.
>>> element.print(flatten=True)
[[(0, 0), 'value', ['source.matlab', 'meta.assignment.variable.single.matlab', 'variable.other.readwrite.matlab']],
[(0, 5), ' ', ['source.matlab']],
[(0, 6), '=', ['source.matlab', 'keyword.operator.assignment.matlab']],
[(0, 7), ' ', ['source.matlab']],
[(0, 8), 'num2str', ['source.matlab', 'meta.function-call.parens.matlab', 'entity.name.function.matlab']],
[(0, 15), '(', ['source.matlab', 'meta.function-call.parens.matlab', 'punctuation.section.parens.begin.matlab']],
[(0, 16), '10', ['source.matlab', 'meta.function-call.parens.matlab', 'constant.numeric.decimal.matlab']],
[(0, 18), ')', ['source.matlab', 'meta.function-call.parens.matlab', 'punctuation.section.parens.end.matlab']],
[(0, 19), ';', ['source.matlab', 'punctuation.terminator.semicolon.matlab']]]
Information
- For further information, please checkout the documentation.
- To setup an environment for development, see CONTRIBUTING.md
Metadata
Release files for textmate-grammar-python 0.6.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| textmate_grammar_python-0.6.1.tar.gz | 34.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| textmate_grammar_python-0.6.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 71.5 kB
Release files / textmate_grammar_python-0.6.1.tar.gz
| Download URL | textmate_grammar_python-0.6.1.tar.gz |
|---|---|
| Size | 34.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b1cd0e5a8eb59d003080367409b2c2b4bdeca0d2abec39425bf9e528d8299f92
|
|
BLAKE2b-256 checksum How to use checksums |
7873a188ceb10f89bf6fdc1100a3372f619e2eed779bce5df8d35b6751705138
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.8.3 CPython/3.12.4 Linux/6.5.0-1024-azure
|
Release files / textmate_grammar_python-0.6.1-py3-none-any.whl
| Download URL | textmate_grammar_python-0.6.1-py3-none-any.whl |
|---|---|
| Size | 37.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f88ccb0e8d6de3279b9dacff6486639b823e87e5102f460371c4525bf02fcb0c
|
|
BLAKE2b-256 checksum How to use checksums |
92b0b181687b29a014634ffcebbf978906c1927a294558d555c8da322abd5cb4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.8.3 CPython/3.12.4 Linux/6.5.0-1024-azure
|