用于构建结构化二进制数据解析器的框架?

2024-03-31

我在实用程序员类型代码生成方面有一些经验:以与平台无关的格式指定数据结构,并为代码生成器编写模板,该代码生成器使用这些数据结构文件并生成将原始字节拉入特定于语言的数据结构的代码,对数字数据进行缩放,打印出数据等。好的实用(TM)想法是(a)我可以通过修改我的规范文件并重新生成源(DRY 等)来更改数据结构和( b) 我可以添加额外的函数,只需修改我的模板即可为我的所有结构生成这些函数。

我使用的是一个 Perl 脚本,名为Jeeves http://cpansearch.perl.org/src/SRIRAM/Jeeves1.0/doc/jeeves.ps它有效,但它是通用目的,我想编写的任何函数来操作我从头开始编写的数据。

是否有任何框架非常适合为结构化二进制数据创建解析器?我所读到的有关 Antlr 的内容表明,这太过分了。我当前感兴趣的目标语言是 C#、C++ 和 Java(如果有的话)。

一如既往地感谢。

Edit:我将悬赏回答这个问题。如果有任何我应该关注的领域(要搜索的关键字)或您自己开发的解决此问题的其他方法,我很想听听。


您还可以考虑一个相对较新的项目 Kaitai Struct,它为此目的提供了一种语言,并且还有一个很好的 IDE:凯泰.io http://kaitai.io/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于构建结构化二进制数据解析器的框架? 的相关文章

  • 在Python中从feedparser解析不同的日期格式?

    我正在尝试通过以下方式获取两个不同 RSS 提要中的条目的日期feed解析器 http feedparser org 这是我正在做的事情 import feedparser as fp reddit fp parse http www re
  • 在 ANTLR4 中如何检查行的第一个字符是否为“*”?

    我正在尝试为一种相对简单但特殊的语言编写一个解析器 简单地说 规则之一是注释行用星号表示only如果该星号是该行的第一个字符 我如何在 ANTLR4 中正式化这样的规则 我考虑过使用 START LINE COMMENT n n gt sk
  • 正则表达式是否用于构建解析器?

    这只是出于好奇的一个问题 因为我最近需要越来越多地解析和使用正则表达式 似乎 对于我在搜索中遇到的有关某种解析的问题 有人总是最终说 当问一些与正则表达式相关的问题 正则表达式对此不好 请使用这样那样的解析器 因为我已经更好地理解了正则表达
  • 如何在Java中有效地读取由大量小项目组成的大型XML文件?

    我有一个很大的 XML 文件 其中包含相对固定大小的项目 即
  • 如何使用 SAX Java 解析器读取注释文本

    我只想使用 Java 中的 SAX 解析器读取 XML 文件中对象标记的注释 这是我的文件的摘要
  • java数据结构模拟数据树

    我需要帮助定义使用什么方法 我有一个 SOAP 响应 给我一个 xml 文件 我需要在屏幕上显示 3 个相关列表 当您在第一个列表中选择一个项目时 相应的选择将出现在第二个列表中 依此类推 我只对从 xml 流中提取数据后如何有效地组织数据
  • 预处理后解析 C++ 源文件

    我正在尝试分析c 使用我定制的解析器的文件 写在c 在开始解析之前 我想摆脱所有 define 我希望源文件在预处理后可以编译 所以最好的方法是运行C Preprocessor在文件上 cpp myfile cpp temp cpp or
  • 用 C++ 生成 AST

    我正在用 C 制作一个解释器 到目前为止我已经有了词法分析器来生成标记 问题是我不确定如何生成 行走 解析树 我正在考虑使用数组数组来制作解析树 但我不确定如何以正确的顺序将标记实际插入到解析树中 我不确定是自上而下 左右还是自下而上 左右
  • 将 Java 字符串转换为 sql.Timestamp

    收到以下格式的字符串 YYYY MM DD HH MM SS NNNNNN 时间戳来自 DB2 数据库 我需要将其解析为 java sql Timestamp 并且不丢失任何精度 到目前为止 我一直无法找到现有的代码来解析远至微秒的数据 S
  • 如何在 Azure 逻辑应用中解析 Excel 电子表格

    我需要使用 Azure 逻辑应用从 Excel 电子表格中解析和提取列信息 我已经为我的逻辑应用程序设置了从 Outlook 检索最新未读电子邮件的功能 此外 我的逻辑应用程序执行 FOR EACH 来读取所有附件 来自未读电子邮件 并确保
  • 有一种简单的方法可以忽略时间戳来区分日志文件吗?

    我需要比较两个日志文件 但忽略每行的时间戳部分 确切地说是前 12 个字符 有没有一个好的工具 或者一个聪明的 awk 命令 可以帮助我 根据您使用的 shell 您可以改变方法 Blair https stackoverflow com
  • 位图内存不足错误

    我对这个错误有疑问 我从 URL 制作网站图标解析器 我这样做是这样的 public class GrabIconsFromWebPage public static String replaceUrl String url StringB
  • 从对象定义生成数据库表

    我知道有几种 自动 方法可以创建数据访问层来操作现有数据库 LINQ to SQL Hibernate 等 但我有点厌倦了 我相信应该有更好的做事方式 比如 在 Visio 中创建 更改表 使用 Visio 的 更新数据库 创建 更改数据库
  • C# 是否有像 Java 那样的字符串分词器?

    我正在做简单的字符串输入解析 我需要一个字符串标记器 我是 C 新手 但已经编写过 Java 程序 因此 C 应该有一个字符串标记生成器似乎很自然 可以 它在哪里 我该如何使用它 你可以使用String Split 方法 http msdn
  • 有没有办法改变野牛的弹性启动状态?

    我在词法分析器中定义了不同的状态 这些状态的变化不取决于令牌 而是取决于令牌序列 类似于模板引擎的工作方式 我可以定义更长的标记 但我更喜欢这种方法 您可以将一个函数粘贴到使用 BEGIN 宏的 l 文件的第三部分中 然后从您的 bison
  • 自动将 JSON 对象映射到 Ruby 中的实例变量

    我希望能够自动将 JSON 对象解析为实例变量 例如 使用此 JSON require httparty json HTTParty get http api dribbble com players simplebits gt shots
  • 在Python中解析.xsd

    我需要在 Python 中解析文件 xsd 就像解析 XML 一样 我正在使用 libxml2 我必须解析如下所示的 xsd
  • 用 C/C++ 编写的通用代码补全框架

    有没有用 C C C 11 编写的框架用于编写代码补全工具 或者也许有一些库允许 Java 或 C 的代码完成 也是用 C 编写的 我正在用 C 编写我的自定义 IDE 用于 Java 而不仅仅是 Java 开发 我想以最好的方式为其添加代
  • 如何解决 FParsec 错误“组合器‘许多’已应用于解析器,该解析器在不消耗...的情况下成功”

    我有一个看起来足够简单的解析器 我将此子解析器添加到末尾以提供有关一般解析错误的信息 因为所有其他子解析器都失败了 Read the rest of a line as an error let readError parse let re
  • Java源代码生成框架[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一组 Java 5 源文件 其中包含旧式 Doclet 标签 注释和注释 基于此 我想为另一组 Java 类编写一个生成器 最好的方法

随机推荐

  • 字符串驻留和文字字符串声明的搜索成本

    两个问题 当我们声明文字字符串时 我们会在堆的字符串池中查找是否有相同的字符串 这也是实习吗 班级的方法实习生String 在我看来 每个文字字符串声明都需要进行二分搜索或其他操作 因此它至少需要花费log n when n是池中现有字符串
  • 从 sqlalchemy 关系中选择具有最大值的项目

    给定这对类 class Thing Base id Column Integer primary key True class ThingInfo Base id Column Integer primary key True thing
  • Angular 中的 window.onload

    Angular 中是否有相当于 window onload 事件的事件 我想淡出并删除预加载器 但前提是加载了所有资源 例如图像 由于 viewConteneLoaded 仅指示将 html 插入视图 我正在使用 ngRotue 因此监听它
  • Spark 中执行器和任务的内存分配

    我的集群配置如下 7 个节点 每个节点有 32 个核心和 252 GB 内存 纱线配置如下 yarn scheduler maximum allocation mb 10GB yarn scheduler minimum allocatio
  • 如何将 PHP preg_split 移植到 Java 以应对 ADODB 中反序列化值的特殊情况?

    我需要将此函数移植到 Java 以将 ADODB 中的值反序列化 variables array a preg split w serialized string 1 PREG SPLIT NO EMPTY PREG SPLIT DELIM
  • 从 C# 连接到 Windows 文件复制 API

    有没有办法从 C 连接到 Windows 文件复制 API 我知道这需要非托管代码 但代码示例或入门程序会很有帮助 我已经看过 C 代码 但都是希腊语 UPDATE 我很抱歉 我应该更清楚地表达我的意图 我实际上希望将 Windows 的复
  • 将 MKV 文件添加到文件输入时,为什么没有返回文件类型?

    我试图在将文件添加到基本 HTML 文件输入时获取文件 mime 类型 我的基本 HTML
  • PHP进程ID和唯一

    我想在后台运行一个 php 脚本并将其 PID 存储在数据库中 这样我就可以检查特定脚本是否正在运行 稍后 我们可以用getmypid获取当前PID 但根据 PHP 手册 进程 ID 不是唯一的 因此它们是弱熵源 我们 建议不要在依赖安全的
  • 如何将 RGB 或 CMYK 颜色转换为百分比 CMYK - javascript

    我使用此代码片段在 JavaScript 中将 RGB 颜色转换为 CMYK function RgbToCmyk R G B if R 0 G 0 B 0 return 0 0 0 1 else var calcR 1 R 255 cal
  • 如何在 PHPStorm 中调试 php artisan 服务?

    我正在使用 PHPStorm 来开发我的 PHP 网页 所有这些都可以与我的 Apache 服务器 XDebug 和一个简单的 Web PHP 项目配合良好 没问题 但是 当我尝试使用以下命令调试 Laravel 5 1 Web 项目时ph
  • 使用“堆栈上传”时出现 GPG 错误

    当我跑步时stack upload我收到错误 环境变量 GPG TTY 未设置 请参阅 man gpg agent 无法找到 gpg2 或 gpg 可执行文件 上传似乎成功 但该错误让我担心 这个错误会产生什么后果 有没有办法避免被压制呢
  • 在表单验证错误时清除 Django 表单字段?

    我有一个 Django 表单 允许用户更改密码 我发现字段中仍包含 的数据的表单错误令人困惑 我尝试了几种删除 form data 的方法 但我不断收到This QueryDict instance is immutable异常消息 是否有
  • SQL 注入保护 - 从字符串转换为 int

    我们都知道参数化 SQL 是处理用户输入和动态 SQL 时的最佳方法 但是如果您要查找的输入是数字 从字符串转换为 int 或 double long 或其他 是否有效 我想我要问的是 仅此技术在 SQL 注入方面是否万无一失 我不是专家
  • HTML5 中的 canvas/video/audio 元素下方有 4px 间隙

    使用 HTML5 时 如果您放置canvas video audio svg中的元素div 将会有一个4px这些元素下方的间隙 我在几乎所有支持 HTML5 的浏览器中测试了下面的代码 不幸的是它们都有同样的问题 div style bor
  • 将 Unicode 字符打印到 POS 打印机

    我正在尝试将我的语言字符打印到 POS 打印机 打印机打印效果很好 但结果很糟糕 这是我尝试过的 using MemoryStream ms new MemoryStream using BinaryWriter bw new Binary
  • 使用 matplotlib 绘制 pandas period_range - 设置轴频率

    我得到了一个 pandas DataFrame 其中包含可变长度的时间跨度值 我想为每个时间跨度的值与时间跨度的长度绘制一条水平线 因此 我将时间跨度转换为PeriodIndex ax0 fig add axes 16 2 0 8 7 ax
  • 为什么类型“Record”不接受具有已定义键的对象作为值

    我试图在类型中拥有一个可以接受任何对象作为输入的函数 我把它定义为 type Props onSubmit data Record
  • 在 Javascript 中,为什么 getBoundingClientRect() 有时会返回浮点值?

    我正在尝试使用 HTML5 画布元素 我想做的一件事是设置一个 mousemove 事件来跟踪画布上的鼠标以进行绘图和其他目的 我无法找到关于如何获取鼠标所在画布中像素的准确坐标的明确答案 我在网上找到了一个包含此 html 的教程 我将背
  • React-google-maps - MarkerWithLabel - 标签重叠

    我正在尝试构建一个反应项目反应谷歌地图 https github com tomchentw react google maps图书馆 基本上 它计算两点之间的最佳路线 并使用上面的库在地图上显示路线 对于绘图 我使用的是Polyline
  • 用于构建结构化二进制数据解析器的框架?

    我在实用程序员类型代码生成方面有一些经验 以与平台无关的格式指定数据结构 并为代码生成器编写模板 该代码生成器使用这些数据结构文件并生成将原始字节拉入特定于语言的数据结构的代码 对数字数据进行缩放 打印出数据等 好的实用 TM 想法是 a