github / github/code-navigation

Code navigation for new language: AL

Đang mở
#17 0 bình luận 3 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Không có dữ liệu ngôn ngữ
Star
12
Fork
7
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

## Language

**AL** (Microsoft Dynamics 365 Business Central) — https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-programming-in-al

AL is the programming language used to build extensions for Microsoft Dynamics 365 Business Central, Microsoft's flagship ERP platform. It has a large partner/developer ecosystem with significant usage on GitHub — [`path:*.al language:AL`](https://github.com/search?q=path%3A*.al+language%3AAL&type=code).

## Why now

AL has been recognized in Linguist since 2018 but has never had code navigation: no mature tree-sitter parser existed until now. `tree-sitter-al` (MIT, on crates.io) is the first, with 100% parse success on Microsoft's 15,358-file Base Application and 1,404 passing tests — filling a long-standing gap for the Business Central / AppSource developer community.

## Linguist entry

- [x] Linguist language name: AL
- [x] Linguist language ID: 658971832
- [x] Permalink: https://github.com/github-linguist/linguist/blob/537297cdae3ab05f8d5dd1c03627a5bd73707b19/lib/linguist/languages.yml#L109-L116

## Tree-sitter parser

Parser URL: https://github.com/SShadowS/tree-sitter-al

- [x] Parser is open source: MIT license
- [x] Repository includes tags queries (`queries/tags.scm`, 226 lines)
- [x] Tags queries include `@scope` for fully-qualified names (if applicable) — N/A: AL definitions are always lexically nested inside object declarations (procedures inside codeunits, fields inside tables, etc.), so FQNs are inferred from tree structure — same as Java/C#. No `@scope` captures needed.
- [x] Rust crate: https://crates.io/crates/tree-sitter-al

### Maturity

- 100% parse success rate on 15,358 production AL files (Microsoft's Base Application)
- 1,404 test cases passing
- Version 2.3.0, actively maintained

### Tags query coverage

**Definitions:**
- Objects: `table`, `page`, `codeunit`, `report`, `query`, `xmlport`, `enum`, `interface`, `controladdin` + all extension types → `@definition.class` / `@definition.interface`
- Procedures & triggers → `@definition.method`
- Parameters → `@definition.parameter`
- Fields, keys, columns → `@definition.field`
- Variables → `@definition.variable`
- Enum values, labels → `@definition.constant`
- Actions, triggers, views → `@definition.function`
- Namespaces → `@definition.module`

**References:**
- Method/function calls → `@reference.call`
- Table/enum type references → `@reference.class` / `@reference.type`
- Interface implementations → `@reference.implementation`
- Property value references → `@reference.constant`

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu bằng việc xem xét repository tree-sitter-al được liên kết, đặc biệt là queries/tags.scm và phạm vi hỗ trợ parser và tag được ghi lại của nó. So sánh các định nghĩa và tham chiếu AL được liệt kê với các yêu cầu tích hợp của code-navigation, sau đó xác minh rằng tính năng điều hướng AL hỗ trợ các danh mục đó cũng như phạm vi hỗ trợ parser và query đã nêu.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
rust
Lĩnh vực
developer-experience, tooling
Loại issue
Tính năng
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Ít trao đổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
52/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.