Releases: theodevelop/bison-flex-lang
v.1.5.3
🩹 Bison/Flex Language Support v1.5.3
Patch release — bug fixes and improvements to
#line-based navigation.
🐛 Bug Fixes
- Show in Source —
#linedirectives without quoted filenames (e.g.#line 42 parser.y) are now handled correctly, and the editor opens at the exact grammar line. (#44) - Show in Generated File —
${workspaceFolder}inbisonFlex.buildDirectorynow resolves to the workspace folder that contains the source file. In multi-root workspaces, each source file resolves independently — one setting works across all roots. (#27)
🔧 Improvements
- Show in Generated File — a dedicated Bison/Flex Navigation output channel now logs every directory and file path searched. It opens automatically when a search starts, making
buildDirectorymisconfigurations easy to diagnose. (#27) - Show in Generated File — automake-style generated file names (
parser_tab.c,lex._.c,.cc/.cppvariants) are now recognized. Contributed by @GitMensch. (#45)
📖 Documentation
bisonFlex.buildDirectoryis now documented in the README with supported formats (${workspaceFolder}, relative paths, absolute paths) and multi-root workspace behaviour. (#27)
⬆️ How to Update
The extension updates automatically via VS Code.
Manual install: search "Bison/Flex Language Support" in the Extensions panel (Ctrl+Shift+X).
📦 Assets
| File | Description |
|---|---|
bison-flex-lang-1.5.3.vsix |
Manual install package |
Full changelog: CHANGELOG.md
What's Changed
- fix: correct Show in Source navigation (#line offset + unquoted filenames) by @theodevelop in #44
- chore: consolidate CI workflows and add full test suite by @theodevelop in #47
- lookup for generated files: support file names used by automake by @GitMensch in #45
- feat: add Bison/Flex Navigation output channel for Show in Generated by @theodevelop in #48
- Release v1.5.3 by @theodevelop in #49
New Contributors
- @GitMensch made their first contribution in #45
Full Changelog: v1.5.2...v1.5.3
v1.5.2
What's new in v1.5.2
✨ New
- Code Lens for Flex abbreviations (#39) — abbreviation definitions now show a clickable "N references" lens, consistent with start conditions and Bison rules.
🐛 Fixed
- SC refs in multi-line block headers (#38) —
<SC_A,\nSC_B,\nSC_C>{syntax now correctly counts references for all listed SCs, not just the last one. - Abbreviation refs on indented rule lines (#38) —
{ABBR}inside indented<SC>{ }blocks is now properly counted as an abbreviation reference. - Transitive abbreviation references (#38) — abbreviations used only inside another abbreviation's definition (e.g.
ALNUM {ALNUM_Q}|{ALNUM_A}) are no longer flagged as unused. - False
flex/unreachable-rulefor complex patterns (#38) — patterns like[A-Z]+(\.[A-Z]+)+(which require a literal dot) no longer trigger shadowing warnings for keyword rules that follow them.
Full Changelog: v1.5.1...v1.5.2
What's Changed
- fix: SC refs in multi-line headers, abbrev refs on indented lines, transitive refs, isWordPattern (#38) by @theodevelop in #41
- feat: add Code Lens "N references" for Flex abbreviations (closes #39) by @theodevelop in #42
- chore: release v1.5.2 by @theodevelop in #43
Full Changelog: v1.5.1...v1.5.2
v1.5.1
What's Changed
- feat: #line-based navigation between source and generated files (closes #27) by @theodevelop in #28
- feat: #line-based navigation between source and generated files #27 by @theodevelop in #29
- fix: handle escaped quotes inside Flex quoted string patterns (#30) by @theodevelop in #32
- fix: record abbreviation refs on rule lines with no inline action (#31) by @theodevelop in #33
- audit: flex review and fixes by @theodevelop in #35
- audit: bison review & fixes by @theodevelop in #36
- release: v1.5.1 by @theodevelop in #37
Full Changelog: v1.4.1...v1.5.1
What's Changed
- feat: #line-based navigation between source and generated files (closes #27) by @theodevelop in #28
- feat: #line-based navigation between source and generated files #27 by @theodevelop in #29
- fix: handle escaped quotes inside Flex quoted string patterns (#30) by @theodevelop in #32
- fix: record abbreviation refs on rule lines with no inline action (#31) by @theodevelop in #33
- audit: flex review and fixes by @theodevelop in #35
- audit: bison review & fixes by @theodevelop in #36
- release: v1.5.1 by @theodevelop in #37
Full Changelog: v1.4.1...v1.5.1
v1.5.0
What's Changed
- chore: new version 1.4.0 by @theodevelop in #20
- fix/issues-21-22-23 by @theodevelop in #24
- chore: github files by @theodevelop in #25
- fix: resolve issues #21 #22 #23 — mid-rule actions, %token alias, flex SC blocks by @theodevelop in #26
Full Changelog: v1.4.0...v1.5.0
What's Changed
- chore: new version 1.4.0 by @theodevelop in #20
- fix/issues-21-22-23 by @theodevelop in #24
- chore: github files by @theodevelop in #25
- fix: resolve issues #21 #22 #23 — mid-rule actions, %token alias, flex SC blocks by @theodevelop in #26
Full Changelog: v1.4.0...v1.5.0
v1.4.1
Bug fixes
#21 — Mid-rule action blocks counted as $N symbols (Bison)
Action blocks { } embedded in the middle of a production are now counted as grammar symbols in Bison's $N numbering. Previously they were silently stripped, causing false-positive bison/out-of-bounds errors and missed real out-of-bounds accesses.
#22 — %token NAME NUMBER "alias" parsing (Bison)
%token declarations with both a numeric value and a string alias are now parsed in the correct order. Previously, words inside the alias string were misidentified as token names, generating spurious bison/undeclared-token and bison/unused-token diagnostics.
#23 — <SC>{ } block syntax (Flex)
Rules grouped inside a <SC1,SC2>{ ... } block now correctly inherit their start conditions. Previously the block header was misidentified as a rule pattern, generating false flex/unreachable-rule and flex/unused-sc diagnostics.
Assets
bison-flex-language-support-1.4.1.vsix— install manually viaExtensions: Install from VSIX…- Available on VS Code Marketplace and Open VSX
What's Changed
- chore: new version 1.4.0 by @theodevelop in #20
- fix/issues-21-22-23 by @theodevelop in #24
- chore: github files by @theodevelop in #25
- fix: resolve issues #21 #22 #23 — mid-rule actions, %token alias, flex SC blocks by @theodevelop in #26
Full Changelog: v1.4.0...v1.4.1
v1.4.0
What's new in 1.4.0
✨ Fix-it hints (22 quick fixes)
Lightbulb / Ctrl+. on any diagnostic now offers an automatic correction for the majority of Bison and Flex errors and warnings:
- Bison: insert
%%, declare%token, insert%empty, remove unused token/rule/directive, add rule stub, add%type <todo>, remove invalid%start, add%start, close%{block, and 4 yacc-compat replacements (%error-verbose,%name-prefix,%pure-parser,%binary) - Flex: insert
%%, define abbreviation stub, remove unused abbreviation/start condition/directive, declare%x SC_NAME, remove unused%option, remove duplicate<<EOF>>, add%option noyywrap, close%{block, remove inaccessible rule
✨ Version-gated diagnostics
Three new settings to match your target toolchain:
bisonFlex.minVersionBison— e.g."2.3"suppresses checks requiring Bison 3.xbisonFlex.minVersionFlex— same for FlexbisonFlex.disabledChecks— e.g.["bison/shift-reduce", "flex/missing-yywrap"]
✨ Diagnostic codes & links
Every diagnostic now shows a clickable code (e.g. bison/unused-token) that opens the relevant GNU documentation page directly in your browser.
✨ Greyed-out unused symbols
Unused tokens, rules, start conditions, and abbreviations are now visually faded in the editor (DiagnosticTag.Unnecessary).
🐛 Fixed
- Unused token grey underline started mid-token instead of at the first character (column offset bug in
parseTokenNames)
⚙️ CI
- Pipeline now runs on
devbranch as well asmain - VSIX artifact uploaded on every CI run (30-day retention)
Full changelog: CHANGELOG.md
v1.1.3
What's changed
Fixed
- Bison — comments in rules: Tokens inside
/* */block comments (including multi-line) and//line comments are no longer falsely reported as undeclared - Bison — token names: Token names containing lowercase letters or digits (e.g.
STANDARD_202x) are now correctly parsed — previously the regex stopped at the first non-uppercase character, producing false positives - Bison — identifiers in action blocks: Identifiers inside
{ }action blocks are no longer scanned for undeclared tokens
Full changelog: v1.1.2...v1.1.3
What's Changed
- fix: support lowercase and digits in token names by @theodevelop in #12
- fix: ignore comments and action blocks when parsing rule symbols by @theodevelop in #13
- fix: token parsing robustness — lowercase names and comment stripping by @theodevelop in #14
Full Changelog: v1.1.2...v1.1.3
v1.1.2
What's Changed
- fix: count literals when checking $n bounds (closes #4) by @theodevelop in #11
Full Changelog: v1.1.1...v1.1.2
v1.1.1
v1.1.0
[1.1.0] - 2026-03-18
Added
- Document Symbols — Outline view (
Ctrl+Shift+O) with collapsible sections for declarations, rules, and epilogue (Bison) or definitions, rules, and user code (Flex) - Workspace Symbols — Fuzzy symbol search (
Ctrl+T) across all open Bison and Flex files (up to 200 results) - Code Lens — "N reference(s)" above each Bison rule and Flex start condition; "⬪ entry point" badge above the start symbol
- Inlay Hints — Inline type annotations for
$$,$1,$2, etc. derived from%type/%tokendeclarations - CMake Integration
- Diagnostic warning when a
.y/.lfile is not referenced in a nearbyBISON_TARGET/FLEX_TARGET - New command Bison/Flex: Add CMake Target — appends the correct
BISON_TARGETorFLEX_TARGETsnippet toCMakeLists.txt
- Diagnostic warning when a
- Compile Commands
- Bison: Compile — runs
bison -don the current file and surfaces errors as VS Code diagnostics - Flex: Compile — runs
flexon the current file and surfaces errors as VS Code diagnostics
- Bison: Compile — runs
- Grammar Tools
- Bison: Show Parse Table — renders the
.outputparse table in a side panel - Bison: Show Grammar Graph — interactive D3.js force-directed graph; click a node to navigate to the rule; detects left/right recursion
- Bison: Explain Conflict — detailed shift/reduce conflict analysis with fix suggestions and precedence recommendations
- Bison: Generate AST Skeleton — generates a complete C++ AST with visitor pattern, forward declarations, and node classes
- Flex: Test Rule — interactive regex tester for the pattern on the current line
- Bison: Show Parse Table — renders the
- Initialize tasks.json — auto-generates
.vscode/tasks.jsonwith Bison/Flex problem matchers; auto-detects CMake and Makefile projects - Yacc Legacy Hints — inlay hints for legacy
%pure_parser,%union, andYYSTYPEpatterns pointing to modern Bison equivalents - Smart Indent —
onEnterRulesfor Bison and Flex that indent correctly after rule openers and%{/%}
Changed
- README updated with all new features, configuration settings, and screenshots
- Status bar shows a "Grammar Graph" shortcut button when a Bison file is active
Configuration
Three new settings:
| Setting | Default | Description |
|---|---|---|
bisonFlex.showInlayHints |
true |
Show inlay hints for $$/$1/@$ semantic values |
bisonFlex.enableCodeLens |
true |
Show Code Lens reference counts and entry-point badges |
bisonFlex.enableCmakeDiagnostics |
true |
Warn when a .y/.l file is missing from CMakeLists.txt |
What's Changed
- Add grammar tools, CMake integration & UI enhancements by @theodevelop in #2
Full Changelog: v1.0.0...v1.1.0