Security News
RubyGems.org Adds New Maintainer Role
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
@lezer/common
Advanced tools
The @lezer/common package is part of the Lezer project, which provides a robust, performance-focused parsing system. This particular package includes common utilities and types that are used across different parts of the Lezer ecosystem. It's designed to support the creation and manipulation of syntax trees, offering tools for parsing, analyzing, and transforming text.
Syntax Tree Navigation
This feature allows for navigating through a syntax tree. The code sample demonstrates how to create a cursor from a syntax tree and iterate over its nodes, printing the name of each node's type. This is useful for analyzing or transforming the structure of parsed documents.
let cursor = tree.cursor();
while(cursor.next()) {
console.log(cursor.node.type.name);
}
Tree Fragment Reuse
Enables efficient parsing by reusing parts of an old syntax tree. The code shows how to apply changes to an array of tree fragments and then use these fragments to assist in parsing a new tree. This significantly improves performance when making incremental updates to a document.
let fragment = TreeFragment.applyChanges(fragments, changes);
let newTree = parser.parse({fragments: [fragment]});
Syntax Node Access
Facilitates direct access to specific nodes within a syntax tree based on position. The example code retrieves a node at a given position (5) and logs its name and the range it spans. This is particularly useful for pinpointing elements in a document for further inspection or modification.
let node = tree.resolve(5);
console.log(node.name, node.from, node.to);
Chevrotain is a fast and feature-rich parser building toolkit for JavaScript. Unlike @lezer/common, which is part of a specific parsing system, Chevrotain provides a more general toolkit for building parsers from scratch. It offers a higher level of customization but might require more setup for specific tasks.
Nearley is a simple, fast, and powerful parsing toolkit for JavaScript. It is designed to be flexible and easy to use, supporting a wide range of grammars. Compared to @lezer/common, Nearley focuses more on the grammar and less on the manipulation of syntax trees, making it a good choice for projects where grammar is a primary concern.
PEG.js is a parser generator for JavaScript based on the Parsing Expression Grammar (PEG) syntax. It generates parsers with a focus on performance and error reporting. While PEG.js emphasizes the generation of parsers from grammars, @lezer/common is part of a system that includes predefined parsers and utilities for working with syntax trees.
[ WEBSITE | ISSUES | FORUM | CHANGELOG ]
Lezer is an incremental parser system intended for use in an editor or similar system.
@lezer/common provides the syntax tree data structure and parser abstractions for Lezer parsers.
Its programming interface is documented on the website.
This code is licensed under an MIT license.
1.2.2 (2024-10-02)
Fix a bug in TreeCursor.matchContext
where, if the context fell partially in a buffer node and partially in tree nodes, it could return incorrect results.
FAQs
Syntax tree data structure and parser interfaces for the lezer parser
The npm package @lezer/common receives a total of 1,286,217 weekly downloads. As such, @lezer/common popularity was classified as popular.
We found that @lezer/common demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.
Security News
Research
Socket's threat research team has detected five malicious npm packages targeting Roblox developers, deploying malware to steal credentials and personal data.