2 个版本
0.1.1 | 2022年11月7日 |
---|---|
0.1.0 | 2022年11月7日 |
#2171 in 解析器实现
每月116次下载
用于 safe_drive_msg
140KB
3K SLoC
T4 IDL 解析器
Object Management Group (OMG) 指定的接口定义语言 (IDL) 的解析器,用 Rust 编写。此版本支持 IDL 4.2。
示例
use t4_idl_parser::{parse, Span};
use nom_greedyerror::convert_error;
let input = r#"
// generated from rosidl_adapter/resource/msg.idl.em
// with input from example_msg/bar/Buz.msg
// generated code does not contain a copyright notice
module example_msg {
module msg {
struct Buz {
string c;
@verbatim (language="comment", text="http://wiki.ros.org/std_msgs")
sequence<int32> o;
};
};
};"#;
match parse(input) {
Ok(result) => {
println!("{:#?}", result);
}
Err(e) => {
eprintln!("{e}");
panic!();
}
}
这将输出以下结果。
[
Module(
Module {
id: "example_msg",
definitions: [
Module(
Module {
id: "msg",
definitions: [
Type(
ConstrType(
Struct(
Def(
StructDef {
id: "Buz",
members: [
Member {
type_spec: Template(
String(
UnlimitedSize,
),
),
declarators: [
Simple(
"c",
),
],
},
Member {
type_spec: Template(
Sequence(
Unlimited(
PrimitiveType(
Int32,
),
),
),
),
declarators: [
Simple(
"o",
),
],
},
],
inheritance: None,
},
),
),
),
),
],
},
),
],
},
),
]
限制
不支持类似 C/C++ 的预处理器。
依赖项
~1.5MB
~32K SLoC