# tree-sitter-idl
>)
&color=blue>)
&color=blue>)
OMG IDL 4.2(with XTypes extension) grammar for [tree-sitter](https://github.com/tree-sitter/tree-sitter).
- https://www.omg.org/spec/IDL/4.2/PDF
- https://www.omg.org/spec/DDS-XTypes/1.3/PDF
## current state
IDL v4.2:
- [x] 7.3 Preprocessing(partial)
- [x] 7.4.1 Building Block Core Data Types
- [x] 7.4.2 Building Block Any
- [x] 7.4.3 Building Block Interfaces – Basic
- [x] 7.4.4 Building Block Interfaces – Full
- [x] 7.4.5 Building Block Value Types
- [x] 7.4.6 Building Block CORBA-Specific – Interfaces
- [x] 7.4.7 Building Block CORBA-Specific – Value Types
- [x] 7.4.8 Building Block Components – Basic
- [x] 7.4.9 Building Block Components – Homes
- [x] 7.4.10 Building Block CCM-Specific
- [x] 7.4.11 Building Block Components – Ports and Connectors
- [x] 7.4.12 Building Block Template Modules
- [x] 7.4.13 Building Block Extended Data-Types
- [x] 7.4.14 Building Block Anonymous Types
- [x] 7.4.15 Building Block Annotations
- [x] 7.4.16 Relationships between the Building Blocks
- [x] 8 Standardized Annotations
DDS-XTypes v1.3:
- [x] 7.3.1.2.3 Alternative Annotation Syntax
- [x] 7.3.1.2.1 Built-in Annotations
DDS-RPC v1.0:
- [x] 7.3.1 Service Definition in IDL
- [x] 7.5.1.2.1 Annotations for the Enhanced Service Mapping
- [x] 7.4.2.2 Specifying Topic Names using Annotations
## extends
### allow merge case
```idl
union A switch(long) {
case 1:
case 2: //< allow
case 3:
u8 a;
};
```
### allow using simple_type_spec in template parameter
```idl
module MyTemplate <typename T, struct S, long m> {
// ^ allow
};
```
### allow `custom` prop appears in value_box_def
```idl
custom valuetype A a; // value_box_def
// ^ extend grammar
```
### allow omit param_attribute
```idl
interface A {
void f(uint8 b);
};
```
### allow rust style oct number
```idl
const u8 A = 0o3;
```
### allow binary number
```idl
const u8 A = 0b010101;
```
### allow octet in typedef_spec
```idl
union A switch(octet) {};
// ^ allow
```
### allow comma at last of enumator
```idl
enum A {
A,
// ^ allow
};
bitmask A {
@position(0) a,
// ^ allow
};
```
### allow ignore 'name='
```idl
@DDSRequestTopic("RobotRequestTopic")
// ^ allow ignore `name=`
interface RobotControl {
void command(Command com);
};
```
### allow ignore '=xx' in annotation
```idl
@derive(Debug, Clone)
// ^allow ignore "="
struct Hello {};
```
Raw data
{
"_id": null,
"home_page": null,
"name": "tree-sitter-idl",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "incremental, parsing, tree-sitter, idl",
"author": null,
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/3e/8c/e8fadc1ddba6b076a43789c29410072148af8a8b5d63df5417ce4ad1da2e/tree_sitter_idl-3.13.0.tar.gz",
"platform": null,
"description": "# tree-sitter-idl\n\n>)\n&color=blue>)\n&color=blue>)\n\nOMG IDL 4.2(with XTypes extension) grammar for [tree-sitter](https://github.com/tree-sitter/tree-sitter).\n\n- https://www.omg.org/spec/IDL/4.2/PDF\n- https://www.omg.org/spec/DDS-XTypes/1.3/PDF\n\n## current state\n\nIDL v4.2:\n\n- [x] 7.3 Preprocessing(partial)\n- [x] 7.4.1 Building Block Core Data Types\n- [x] 7.4.2 Building Block Any\n- [x] 7.4.3 Building Block Interfaces \u2013 Basic\n- [x] 7.4.4 Building Block Interfaces \u2013 Full\n- [x] 7.4.5 Building Block Value Types\n- [x] 7.4.6 Building Block CORBA-Specific \u2013 Interfaces\n- [x] 7.4.7 Building Block CORBA-Specific \u2013 Value Types\n- [x] 7.4.8 Building Block Components \u2013 Basic\n- [x] 7.4.9 Building Block Components \u2013 Homes\n- [x] 7.4.10 Building Block CCM-Specific\n- [x] 7.4.11 Building Block Components \u2013 Ports and Connectors\n- [x] 7.4.12 Building Block Template Modules\n- [x] 7.4.13 Building Block Extended Data-Types\n- [x] 7.4.14 Building Block Anonymous Types\n- [x] 7.4.15 Building Block Annotations\n- [x] 7.4.16 Relationships between the Building Blocks\n- [x] 8 Standardized Annotations\n\nDDS-XTypes v1.3:\n\n- [x] 7.3.1.2.3 Alternative Annotation Syntax\n- [x] 7.3.1.2.1 Built-in Annotations\n\nDDS-RPC v1.0:\n\n- [x] 7.3.1 Service Definition in IDL\n- [x] 7.5.1.2.1 Annotations for the Enhanced Service Mapping\n- [x] 7.4.2.2 Specifying Topic Names using Annotations\n\n## extends\n\n### allow merge case\n\n```idl\nunion A switch(long) {\n case 1:\n case 2: //< allow\n case 3:\n u8 a;\n};\n```\n\n### allow using simple_type_spec in template parameter\n\n```idl\nmodule MyTemplate <typename T, struct S, long m> {\n // ^ allow\n};\n```\n\n### allow `custom` prop appears in value_box_def\n\n```idl\ncustom valuetype A a; // value_box_def\n// ^ extend grammar\n```\n\n### allow omit param_attribute\n\n```idl\ninterface A {\n void f(uint8 b);\n};\n```\n\n### allow rust style oct number\n\n```idl\nconst u8 A = 0o3;\n```\n\n### allow binary number\n\n```idl\nconst u8 A = 0b010101;\n```\n\n### allow octet in typedef_spec\n\n```idl\nunion A switch(octet) {};\n// ^ allow\n```\n\n### allow comma at last of enumator\n\n```idl\nenum A {\n A,\n// ^ allow\n};\n\nbitmask A {\n @position(0) a,\n// ^ allow\n};\n```\n\n### allow ignore 'name='\n\n```idl\n@DDSRequestTopic(\"RobotRequestTopic\")\n// ^ allow ignore `name=`\ninterface RobotControl {\n void command(Command com);\n};\n```\n\n### allow ignore '=xx' in annotation\n\n```idl\n@derive(Debug, Clone)\n// ^allow ignore \"=\"\nstruct Hello {};\n```\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Idl grammar for tree-sitter",
"version": "3.13.0",
"project_urls": {
"Homepage": "https://github.com/cathaysia/tree-sitter-idl"
},
"split_keywords": [
"incremental",
" parsing",
" tree-sitter",
" idl"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "dac420e3132e2b5fb1acc04584d1d8680dc440ca4f176cf187be644b8de8deb5",
"md5": "9cee711e9bb8bbe58ede3fd5e4e7ba37",
"sha256": "aebd082c4f2fe087a48048365ccb3d3d5a15b08e6721c79590186cb954b81018"
},
"downloads": -1,
"filename": "tree_sitter_idl-3.13.0-cp38-abi3-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "9cee711e9bb8bbe58ede3fd5e4e7ba37",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 81202,
"upload_time": "2025-07-17T02:53:57",
"upload_time_iso_8601": "2025-07-17T02:53:57.090093Z",
"url": "https://files.pythonhosted.org/packages/da/c4/20e3132e2b5fb1acc04584d1d8680dc440ca4f176cf187be644b8de8deb5/tree_sitter_idl-3.13.0-cp38-abi3-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2c21f513a40b57f9238a5816086a7be4e9f0cb1bac2616e173e2516f2e1b2dc2",
"md5": "3d307188f901ff3766afecbb01f21baa",
"sha256": "5a862cb24fae637b71fc8fa16661b3a575e52043d2e882c89283457bf5d7b3df"
},
"downloads": -1,
"filename": "tree_sitter_idl-3.13.0-cp38-abi3-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "3d307188f901ff3766afecbb01f21baa",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 85815,
"upload_time": "2025-07-17T02:53:58",
"upload_time_iso_8601": "2025-07-17T02:53:58.520577Z",
"url": "https://files.pythonhosted.org/packages/2c/21/f513a40b57f9238a5816086a7be4e9f0cb1bac2616e173e2516f2e1b2dc2/tree_sitter_idl-3.13.0-cp38-abi3-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f48151fcf880b7e4486e523fa72f8dc3efcc8e880647002e95d2db0d6311c6a9",
"md5": "686aa9ffa6b2add3bee8d4c990a34c28",
"sha256": "13e652bf1178344df592fc9e59bdb2d22e40eb0b6f5a3c712b5634cce986c11f"
},
"downloads": -1,
"filename": "tree_sitter_idl-3.13.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "686aa9ffa6b2add3bee8d4c990a34c28",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 135552,
"upload_time": "2025-07-17T02:53:59",
"upload_time_iso_8601": "2025-07-17T02:53:59.268461Z",
"url": "https://files.pythonhosted.org/packages/f4/81/51fcf880b7e4486e523fa72f8dc3efcc8e880647002e95d2db0d6311c6a9/tree_sitter_idl-3.13.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8e1f1a0745ea680817b86691919a1f4c3838b67bb151f5e94aee5f56cf0a5340",
"md5": "f1473b03a86705daf69d3b3cc0f1d312",
"sha256": "2225285a26f60e95fcb1e6e2e90b24512fa7eca6564db9ece81520b5a9f20cc0"
},
"downloads": -1,
"filename": "tree_sitter_idl-3.13.0-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "f1473b03a86705daf69d3b3cc0f1d312",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 102432,
"upload_time": "2025-07-17T02:54:00",
"upload_time_iso_8601": "2025-07-17T02:54:00.098644Z",
"url": "https://files.pythonhosted.org/packages/8e/1f/1a0745ea680817b86691919a1f4c3838b67bb151f5e94aee5f56cf0a5340/tree_sitter_idl-3.13.0-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8ac0fa2da42608bc5093226b43b4f808e9620b870166d614f42c5d7f44ef47c2",
"md5": "36a24aee2fa906ecc5081e6f3d54a5ea",
"sha256": "e6f3ff46d6b5c11f175d8e79ec71e12ed154ac61686c493ff459d17e5c9887e1"
},
"downloads": -1,
"filename": "tree_sitter_idl-3.13.0-cp38-abi3-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "36a24aee2fa906ecc5081e6f3d54a5ea",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 94942,
"upload_time": "2025-07-17T02:54:00",
"upload_time_iso_8601": "2025-07-17T02:54:00.856771Z",
"url": "https://files.pythonhosted.org/packages/8a/c0/fa2da42608bc5093226b43b4f808e9620b870166d614f42c5d7f44ef47c2/tree_sitter_idl-3.13.0-cp38-abi3-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "814ee6e99347e7e6f17795ca38b98174d336954258cdcc98ebede9a81489508a",
"md5": "0dfafe69be4a2a7954331d69fddf050c",
"sha256": "f5a5b1c7f53e9c83da8f9bc77a21cf6fe785a652e2e587c17aa596976321280e"
},
"downloads": -1,
"filename": "tree_sitter_idl-3.13.0-cp38-abi3-win_amd64.whl",
"has_sig": false,
"md5_digest": "0dfafe69be4a2a7954331d69fddf050c",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 86028,
"upload_time": "2025-07-17T02:54:01",
"upload_time_iso_8601": "2025-07-17T02:54:01.898953Z",
"url": "https://files.pythonhosted.org/packages/81/4e/e6e99347e7e6f17795ca38b98174d336954258cdcc98ebede9a81489508a/tree_sitter_idl-3.13.0-cp38-abi3-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3e8ce8fadc1ddba6b076a43789c29410072148af8a8b5d63df5417ce4ad1da2e",
"md5": "d1ceb1daffd10bb0a896aff83477dabb",
"sha256": "89aeacc65d95ad02faf405ef495d0d07ba7fb2e950ccb66597304748fdbc82cf"
},
"downloads": -1,
"filename": "tree_sitter_idl-3.13.0.tar.gz",
"has_sig": false,
"md5_digest": "d1ceb1daffd10bb0a896aff83477dabb",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 124676,
"upload_time": "2025-07-17T02:54:02",
"upload_time_iso_8601": "2025-07-17T02:54:02.928261Z",
"url": "https://files.pythonhosted.org/packages/3e/8c/e8fadc1ddba6b076a43789c29410072148af8a8b5d63df5417ce4ad1da2e/tree_sitter_idl-3.13.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-17 02:54:02",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "cathaysia",
"github_project": "tree-sitter-idl",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "tree-sitter-idl"
}