# tree-sitter-idl
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);
};
```
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": null,
"platform": null,
"description": "# tree-sitter-idl\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",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Idl grammar for tree-sitter",
"version": "3.9.2",
"project_urls": {
"Homepage": "https://github.com/cathaysia/tree-sitter-idl"
},
"split_keywords": [
"incremental",
" parsing",
" tree-sitter",
" idl"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d60411ab13dc5ed719314f80605707a2750073b01176588e8748ef6d669c9a68",
"md5": "41f39d8f0ba038e899abd93e15a2579d",
"sha256": "8d1034a63d3c6c686d1930936ce1298071d7820b829a330a67d0572c4d75a1e6"
},
"downloads": -1,
"filename": "tree_sitter_idl-3.9.2-cp38-abi3-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "41f39d8f0ba038e899abd93e15a2579d",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 80849,
"upload_time": "2024-08-16T09:09:28",
"upload_time_iso_8601": "2024-08-16T09:09:28.813912Z",
"url": "https://files.pythonhosted.org/packages/d6/04/11ab13dc5ed719314f80605707a2750073b01176588e8748ef6d669c9a68/tree_sitter_idl-3.9.2-cp38-abi3-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5ff2af0886e7cce6ba6d372cebede8c0b96b2348edd71d5ee2072334679b9c61",
"md5": "5e45896d4e7cd024a056d0568208e8e3",
"sha256": "902b378d9c2fd9b4d6d30576a04d637440df7b3bf02fc98a75cb9158b58970ed"
},
"downloads": -1,
"filename": "tree_sitter_idl-3.9.2-cp38-abi3-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "5e45896d4e7cd024a056d0568208e8e3",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 85436,
"upload_time": "2024-08-16T09:09:30",
"upload_time_iso_8601": "2024-08-16T09:09:30.687744Z",
"url": "https://files.pythonhosted.org/packages/5f/f2/af0886e7cce6ba6d372cebede8c0b96b2348edd71d5ee2072334679b9c61/tree_sitter_idl-3.9.2-cp38-abi3-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "75730f7d7c135d0b83da6349a40e840f8e3232bd16a20e3954dc691a0cf268ce",
"md5": "87d8f450b6e5418e583fee23c4487264",
"sha256": "20ac4b2b01565747d6f475259ea467ca1ad74f664774af027a76e4b115393d0c"
},
"downloads": -1,
"filename": "tree_sitter_idl-3.9.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "87d8f450b6e5418e583fee23c4487264",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 135320,
"upload_time": "2024-08-16T09:09:31",
"upload_time_iso_8601": "2024-08-16T09:09:31.821815Z",
"url": "https://files.pythonhosted.org/packages/75/73/0f7d7c135d0b83da6349a40e840f8e3232bd16a20e3954dc691a0cf268ce/tree_sitter_idl-3.9.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "40f010ba2e37048df686fb58285479e2045ee8beff2774c913cb1494371be516",
"md5": "e3cb2c99f2d43a8e82086d150a4b3227",
"sha256": "c19bcac8081e21975d64e94c1484dd2600bbb5fc52d97cc4730b85e031839e14"
},
"downloads": -1,
"filename": "tree_sitter_idl-3.9.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "e3cb2c99f2d43a8e82086d150a4b3227",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 102201,
"upload_time": "2024-08-16T09:09:32",
"upload_time_iso_8601": "2024-08-16T09:09:32.902711Z",
"url": "https://files.pythonhosted.org/packages/40/f0/10ba2e37048df686fb58285479e2045ee8beff2774c913cb1494371be516/tree_sitter_idl-3.9.2-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": "",
"digests": {
"blake2b_256": "81e88dcb93d5c994cc64d01fefa209fb5de278f2665d86f9badb317c50eedbcb",
"md5": "ca1f0fb66323c42bc864c1913ed03e74",
"sha256": "6ff06b796d2da1f5fd605e6b5688210f33d17044141027a3d4bed414d83fae9a"
},
"downloads": -1,
"filename": "tree_sitter_idl-3.9.2-cp38-abi3-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "ca1f0fb66323c42bc864c1913ed03e74",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 94891,
"upload_time": "2024-08-16T09:09:34",
"upload_time_iso_8601": "2024-08-16T09:09:34.379951Z",
"url": "https://files.pythonhosted.org/packages/81/e8/8dcb93d5c994cc64d01fefa209fb5de278f2665d86f9badb317c50eedbcb/tree_sitter_idl-3.9.2-cp38-abi3-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c8561c01b5c041a9be7b7967cbbd9f6a4dcc3d1dad2eba62178bd12314af03ee",
"md5": "76dac1266c9490cc23dff6bfbd9d2165",
"sha256": "cd9a620ff1db09a7f00a95539c3ec818ad8b30c4222c526ef468ad13a5128f2c"
},
"downloads": -1,
"filename": "tree_sitter_idl-3.9.2-cp38-abi3-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "76dac1266c9490cc23dff6bfbd9d2165",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 94710,
"upload_time": "2024-08-16T09:09:35",
"upload_time_iso_8601": "2024-08-16T09:09:35.785274Z",
"url": "https://files.pythonhosted.org/packages/c8/56/1c01b5c041a9be7b7967cbbd9f6a4dcc3d1dad2eba62178bd12314af03ee/tree_sitter_idl-3.9.2-cp38-abi3-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bdc9adc9e7c0e8ca038a9328982fbf04ebcf58c209be170055bed8a8f899937c",
"md5": "81b280e2d235f09aa0cfc7c2c05dfbd5",
"sha256": "ca4f63b23aa7f00afb39502d6539d9c9e891e11b1df894a90f9dff0f63e70415"
},
"downloads": -1,
"filename": "tree_sitter_idl-3.9.2-cp38-abi3-win_amd64.whl",
"has_sig": false,
"md5_digest": "81b280e2d235f09aa0cfc7c2c05dfbd5",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 85848,
"upload_time": "2024-08-16T09:09:37",
"upload_time_iso_8601": "2024-08-16T09:09:37.111644Z",
"url": "https://files.pythonhosted.org/packages/bd/c9/adc9e7c0e8ca038a9328982fbf04ebcf58c209be170055bed8a8f899937c/tree_sitter_idl-3.9.2-cp38-abi3-win_amd64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-16 09:09:28",
"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"
}