feat: establish first-class lexical language parity #2
3 changed files with 24 additions and 15 deletions
commit
e56ea81f9d
11
README.md
11
README.md
|
|
@ -6,10 +6,11 @@ elements, and dependency edges show calls, imports, and inheritance. The same
|
|||
model is emitted as versioned JSON for other tools, including a future Fold
|
||||
integration.
|
||||
|
||||
The initial extractor recognizes Rust, Dart, Python, C/C++,
|
||||
JavaScript/TypeScript, and Swift source extensions. Symbol extraction is intentionally conservative and
|
||||
lexical in v0.1; every relationship records its backend, confidence, and source
|
||||
location so consumers can distinguish it from imported symbolic evidence.
|
||||
The initial extractor provides first-class lexical profiles for Rust, Dart,
|
||||
C/C++, and JavaScript/TypeScript, with explicitly secondary Python and Swift
|
||||
coverage. Symbol extraction is intentionally conservative and lexical in v0.1;
|
||||
every relationship records its backend, confidence, and all contributing source
|
||||
locations so consumers can distinguish it from imported symbolic evidence.
|
||||
See [language support and parity](docs/architecture/language-support.md) for the
|
||||
construct-level coverage matrix and first-class promotion contract.
|
||||
|
||||
|
|
@ -56,6 +57,8 @@ default; an internal or vendored URL can be supplied with --cytoscape-url.
|
|||
confidence.
|
||||
- A focused Rust test suite, quality gate, bounded auto-loop, and artifact-based
|
||||
benchmark runner.
|
||||
- A labeled language-parity corpus with independent gates for every advertised
|
||||
language; Python and Swift remain characterization-only secondary profiles.
|
||||
|
||||
## Important limits
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,9 @@
|
|||
|
||||
- Versioned graph JSON.
|
||||
- Fast lexical multi-language preview.
|
||||
- Dart classes, functions/methods, imports, inheritance, and local calls.
|
||||
- First-class lexical profiles for Dart, Rust, C/C++, and
|
||||
JavaScript/TypeScript, with labeled parity fixtures and per-language gates.
|
||||
- Characterized secondary Python and Swift coverage.
|
||||
- Fold SARIF/native finding overlay.
|
||||
- Interactive Cytoscape building.
|
||||
- Transparent structural indicators and deterministic tests.
|
||||
|
|
|
|||
|
|
@ -5,9 +5,13 @@ JavaScript/TypeScript, and Swift. Recognition does not imply compiler-level
|
|||
coverage: the current backend is deliberately lexical, line-oriented, and
|
||||
evidence-labeled.
|
||||
|
||||
The first-class parity targets are Dart, Rust, C/C++, and
|
||||
JavaScript/TypeScript. Python and Swift remain secondary until their extraction
|
||||
contracts and fixtures reach the same standard.
|
||||
The first-class lexical profiles are Dart, Rust, C/C++, and
|
||||
JavaScript/TypeScript. Here, parity means each profile has dedicated construct
|
||||
patterns, relationship evidence, positive and clean-negative fixtures, stable
|
||||
regression assertions, and an independent benchmark gate. It does not mean the
|
||||
languages have identical grammar features or compiler-grade resolution. Python
|
||||
and Swift remain secondary until their extraction contracts and fixtures reach
|
||||
the same standard.
|
||||
|
||||
Plain `.h` files remain classified as C++ because their language cannot be
|
||||
determined from the extension alone. C projects that require header symbol
|
||||
|
|
@ -18,12 +22,12 @@ frontend; Brick does not guess that ownership.
|
|||
|
||||
| Language | Useful current coverage | Important gaps | Tier |
|
||||
| --- | --- | --- | --- |
|
||||
| Dart | Classes, mixins, enums, extensions, methods, named constructors, accessors, import/export/part directives, `extends`/`with`/`implements`/`on`, and ordinary calls | operators, generic relationship targets, conditional directives, and multiline declarations | first-class target |
|
||||
| Rust | Structs, enums, traits, ordinary/async/const/unsafe/extern functions, simple inherent/trait impl ownership, ordinary/turbofish/macro calls, braced `use` resolution, and raw-string masking | module ownership, unions/type aliases, nested generic impl headers, glob imports, and macro definitions | first-class target |
|
||||
| C | Distinct `.c` identity, includes, structs/unions/enums, narrow function forms, and ordinary calls | anonymous typedef aggregates, function pointers, C23 attributes, macros, and multiline declarations | first-class target |
|
||||
| C++ | Classes/structs/unions/enums, `final`, constructors/destructors/operators, override-qualified methods, multiple inheritance, ordinary calls, and local include resolution | namespaces, overload disambiguation, lambdas, concepts/requires, complex template bases, and multiline declarations | first-class target |
|
||||
| JavaScript | Default/exported classes, inheritance, owned methods/constructors, named functions, arrows, ES imports/re-exports, CommonJS `require`, dynamic imports, ordinary calls, and multiline template masking | function expressions, computed methods, decorators, JSX structure, package exports, and type-aware member calls | first-class target |
|
||||
| TypeScript | JavaScript forms plus interfaces/enums/namespaces, generic and abstract classes/functions/methods, `implements`, type imports/re-exports, and typed arrows | type aliases, overload declarations, decorators, declaration merging, TSX structure, and path mappings | first-class target |
|
||||
| Dart | Classes, mixins, enums, extensions, methods, named constructors, accessors, import/export/part directives, `extends`/`with`/`implements`/`on`, and ordinary calls | operators, generic relationship targets, conditional directives, and multiline declarations | first-class lexical |
|
||||
| Rust | Structs, enums, traits, ordinary/async/const/unsafe/extern functions, simple inherent/trait impl ownership, ordinary/turbofish/macro calls, braced `use` resolution, and raw-string masking | module ownership, unions/type aliases, nested generic impl headers, glob imports, and macro definitions | first-class lexical |
|
||||
| C | Distinct `.c` identity, includes, structs/unions/enums, narrow function forms, and ordinary calls | anonymous typedef aggregates, function pointers, C23 attributes, macros, and multiline declarations | first-class lexical |
|
||||
| C++ | Classes/structs/unions/enums, `final`, constructors/destructors/operators, override-qualified methods, multiple inheritance, ordinary calls, and local include resolution | namespaces, overload disambiguation, lambdas, concepts/requires, complex template bases, and multiline declarations | first-class lexical |
|
||||
| JavaScript | Default/exported classes, inheritance, owned methods/constructors, named functions, arrows, ES imports/re-exports, CommonJS `require`, dynamic imports, ordinary calls, and multiline template masking | function expressions, computed methods, decorators, JSX structure, package exports, and type-aware member calls | first-class lexical |
|
||||
| TypeScript | JavaScript forms plus interfaces/enums/namespaces, generic and abstract classes/functions/methods, `implements`, type imports/re-exports, and typed arrows | type aliases, overload declarations, decorators, declaration merging, TSX structure, and path mappings | first-class lexical |
|
||||
| Python | Characterized fixture coverage for basic classes, functions/async functions, imports, calls, inheritance, and indentation scopes | multiple bases, qualified ownership, decorators, multiline strings, relative/dynamic imports, and complete multi-import handling | secondary |
|
||||
| Swift | Characterized extension recognition plus incidental simple `class`, `func`, inheritance, ownership, and call matching | no dedicated profile; imports, protocols, actors, enums, extensions, async/generic forms, and Swift-specific signatures are incomplete | secondary |
|
||||
|
||||
|
|
@ -69,7 +73,7 @@ the same corpus. Their assertions are characterization tests, not evidence of
|
|||
first-class parity. In particular, the Swift fixture preserves the visible gap
|
||||
between file/type recognition and Swift-specific relationship extraction.
|
||||
|
||||
## Delivery order
|
||||
## Delivered foundation order
|
||||
|
||||
1. Shared resolver and scope foundation.
|
||||
2. A golden fixture harness and mixed-language collision corpus.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue