parsing - 在执行时定义数据类型?
问题描述
我正在编写一个 PLY 文件解析器和序列化库,作为点云压缩研究项目的一部分。PLY 文件在包含所有数据的有效负载部分之前的标头中指定数据格式。数据通过elements
包含来描述properties
。例如:
element vertex 12
property float x
property float y
property float z
通知负载将有一个包含 12 个元素的列表,称为“顶点”,具有三个浮点属性,称为 x、y 和 z,它们都是浮点数。对于任意文件,我事先不知道它包含哪些元素,也不知道每个文件的名称、类型或属性数量。我通过解析标题来创建元素列表来解决这个问题
data Element = Element Name Qty [Property]
data Property = Property PropType Name
它告诉我有效负载的整体结构以及一些功能来搜索给定元素是否存在并定位/解析有效负载部分中的数据。
我有一个工作版本,但我正在考虑一种新的可能性(现在只是为了好玩)。如果我想构建一个表示类型级别数据的数据结构怎么办?就像是
data Vertex = Vertex { elX :: Float
, elY :: Float
, elY :: Float }
但是通过详细信息,我只能发现我的数据类型(或在文件中描述了多种元素的情况下的类型)在解析文件头后的执行时间内将具有哪些字段(属性),以便我以后可以构建一个函数parseVertex :: Parser [Vertex]
然后获取有效负载数据并解析它?
有人可以给我一些关于如何开始寻找解决此类问题的建议吗?
解决方案
推荐阅读
- python - 如何从pyspark模型中的概率列预测中获取元素
- dynamic - labview daq-mx 动态缓冲区大小
- python - 在python中对数据进行分组并从excel中进行比较
- tkinter - 无法使用对象标签(字符串)从数组中删除画布项
- python-3.x - 计算机处理速度的差异
- c# - MongoDb.Driver 上的 System.Reflection.AmbiguousMatchException
- python - 尝试为类创建参数时崩溃
- ios - 解压错误 操作无法完成。(Zip.ZipError 错误 1.) ViewControllers 之间
- java - com.google.firebase.database.DatabaseException:无法将 java.lang.String 类型的对象转换为 com.example.pro.mychatapp.Friends 类型
- regex - 正则表达式匹配除两个字符串之外的所有内容?