







Tree-sitter is a parser generator tool and an incremental parsing library. It can build a concrete syntax tree for a source file and efficiently update the syntax tree as the source file is edited. Tree-sitter aims to be:
Tree-sitter - a new parsing system for programming tools - Strange Loop
Strange Loop is a conference for software developers covering programming langs, databases, distributed systems, security, machine learning, creativity, and more!

Efficient and flexible incremental parsing | ACM Transactions on Programming Languages and Systems
Previously published algorithms for LR (k) incremental parsing are inefficient, unnecessarily restrictive, and in some cases incorrect. We present a simple algorithm based on parsing LR(k) sentential forms that can incrementally parse an arbitrary number ...

Combinators for bidirectional tree transformations: A linguistic approach to the view-update problem: ACM Transactions on Programming Languages and Systems: Vol 29, No 3
We propose a novel approach to the view-update problem for tree-structured data: a domain-specific programming language in which all expressions denote bidirectional transformations on trees. In one direction, these transformations---dubbed lenses---map ...

Engineering High-Performance Parsers with Data-Oriented Design
Notes from building Yuku: the AST is flat arrays of u32 indices instead of a pointer tree, and memory layout, allocation, strings, unicode, and serialization all follow from that one decision.
Packrat parsing: | Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
For decades we have been using Chomsky's generative system of grammars, particularly context-free grammars (CFGs) and regular expressions (REs), to express the syntax of programming languages and protocols. The power of generative grammars to express ...

Syntax Club
Share your syntax. Spread knowledge. A place to share, save, and discover code snippets on the AT Protocol.

mergiraf
A syntax-aware git merge driver for a growing collection of programming languages and file formats.
An 8 Year Algorithm Nemesis: Analyzing long string trends in a body of text with suffix trees
An Algorithm for Layout Preservation in Refactoring Transformations
Transformations and semantic analysis for source-to-source transformations such as refactorings are most effectively implemented using an abstract representation of the source code. An intrinsic limitation of transformation techniques based on abstract syntax trees is the loss of layout, i.e. comments and whitespace. This is especially relevant in the context of refactorings, which produce source code for human consumption. In this paper, we present an algorithm for fully automatic source code reconstruction for source-to-source transformations. The algorithm preserves the layout and comments of the unaffected parts and reconstructs the indentation of the affected parts, using a set of clearly defined heuristic rules to handle comments.

Generic deriving of generic traversals | Proceedings of the ACM on Programming Languages
Functional programmers have an established tradition of using traversals as a design pattern to work with recursive data structures. The technique is so prolific that a whole host of libraries have been designed to help in the task of automatically ...

Specification of graph translators with triple graph grammars
Data integration is a key issue for any integrated set of software tools. A typical CASE environment, for instance, offers tools for the manipulation of requirements and software design documents, and it provides more or less sophisticated assistance for keeping these documents in a consistent state. Up to now, almost all data consistency observing or preserving integration tools are hand-crafted due to the lack of generic implementation frameworks and the absence of adequate specification formalisms. Triple graph grammars are intended to fill this gap and to support the specification of interdependencies between graph-like data structures on a very high level. Furthermore, they are the fundamentals of a new machinery for the production of batch-oriented as well as incrementally working data integration tools.

The SQLite R*Tree Module
An R-Tree is a special index that is designed for doing range queries. R-Trees are most commonly used in geospatial systems where each entry is a rectangle with minimum and maximum X and Y coordinates. Given a query rectangle, an R-Tree is able to quickly find all entries that are contained within the query rectangle or which overlap the query rectangle. This idea is easily extended to three dimensions for use in CAD systems. R-Trees also find use in time-domain range look-ups. For example, suppose a database records the starting and ending times for a large number of events. A R-Tree is able to quickly find all events that were active at any time during a given time interval, or all events that started during a particular time interval, or all events that both started and ended within a given time interval. And so forth.
Learning to Simplify
Over the last few years the availability of comparable or parallel corpora of original and simplified or adapted textual material has made possible a set of approaches to learn various types of simplification operations from corpora. Notably, with the Simple English Wikipedia (SEW), in combination with the “ordinary” English Wikipedia (EW), simplification approaches which use primarily machine learning techniques have been proposed. Most of them learn lexical changes in the data although some approaches also are able to learn some syntactic transformations. The chapter starts by introducing methods which cast text simplification, in different languages, as monolingual machine translation. Then, we will overview simplification as a statistical syntactic-tree translation process with the aim of transforming complex sentences into simpler ones. We will also overview works which apply optimization techniques aimed at finding the best possible simplification by either optimizing the application of rules or by overgenerating simplification solutions. Finally, to end the chapter we will review recent work on incorporating semantic information into the simplification problem.

Harper | Privacy-First Offline Grammar Checker
Blazing-fast, open-source grammar & spell checking that never sends your words to the cloud.

Check out @treethought.xyz’s integration! bsky.app/profile/treethought.xyz/post/…
cam
added @standard.site support to obsidian-atmosphere - Publish notes to @leaflet.pub and @pckt.blog from within obsidian - Browse your subscribed publications and clip to your vault semble and margin interop is so good now that I need to update how I display the two 😄 github.com/treethought/obsidian-atmosphe…