New — Antlr4BuildTasks.Templates

For those interested in creating an Antlr4 program using C#, I wrote a dotnet package and uploaded it to Nuget. There is similar functionality in the VS2019 extension AntlrVSIX, but I am starting to move towards a Language Server Protocol client/server implementation for Antlr. This package capitalizes on the work I did with Antlr4BuildTasks supporting MSBUILD builds using the Java Antlr tool v4.7.2.

It’s finally pretty apparent that VS IDE will eventually go away once “complex workflows” are implemented in VS Code (e.g., attach to process). This is rather sad because VS Code’s UI is actually kind of lousy, just my opinion.* But, it is faster than VS IDE, which isn’t saying much because just about everything is faster than VS IDE. However, MS can’t put many resources into a product that’s free, isn’t open-source, and which isn’t being extended much by third parties anymore. Why should third parties write extensions for a tool in which the fundamental infrastructure is stagnant? After 20 or 30 years, it’s still a 32-bit app, still uses COM interfaces that are nearly impossible to figure out, and has only a few extensions for supporting any other languages beyond C#, Javascript, C++, VB, and F#. As of this post, there are 2955 extensions for VS2019, yet 14993 for VS Code, which only first released in 2015. Contrary to what others may try to convince themselves, the future of VS IDE isn’t so bright.

— Ken

* (The default colors for VSCode are optimized for “dark” mode. When viewing in “Light (Visual Studio)”, the text in “DEBUG CONSOLE” is a light yellow over white, which is basically impossible to read; When debugging in VSCode C# using the standard MS extension, right-click on a variable gives a pop-up menu that spontaneously disappears, requiring a second right-click before sticking around; Unlike in Visual Studio IDE, I can’t drag and move the “DEBUG AND RUN” panel to another position in the window to dock; Sometimes when I start VSCode, the top bar containing “File|Edit|Selection|…” is placed above the screen, and I cannot move, minimize, nor close the VSCode window; When debugging, a toolbox is placed in the source code window, or in the tab bar. I cannot remove the toolbox at all; There is no “Quick Watch box that I can move out of the way to display variables, or expressions that I type in. There just is no notion of a single-document interface!; The formatting of the value of a struct or object is JSON, not a nice grid box, so I can’t sort by column. The list goes on and on.)

1/2: Adding to #Antlrvsix an analysis tool of #Antlr grammars. This is how it works with cycle detection and useless lexer rules. There are some issues in the responsiveness of the MS LSP client for VS2019.

Adding to #Antlrvsix the refactoring to remove useless parentheses in an #Antlr grammar. This is how it works with the extra parentheses in the arrayAccess_lf_primary rule in Java9.g4 that nobody knew were there. Only yet starting to scratch the surface of grammar optimizations.

Implementing #Antlr grammar fold refactorings in #Antlrvsix. Two types: extract a selected sequence of symbols and make a rule (shown first); replace all occurrences in the grammar with a folded rule (shown second). Spacing and comments do not matter.