我有一组用一种语言编写的文件' A'需要翻译成语言的相应文件' B' 我想创建一个可以自动执行此任务的程序/解析器(可能是工具链而不是单个程序)。然而, 我正在努力为我的工具链的程序找到合适的选择。
语言A 是嵌入式软件代码,即低级语言。它是90%的标准C-Code和10%" custom"代码,即 这些文件还包含标准C编译器无法理解的小段。 90%的C代码不 C中可能的任何随机C构造(这对于语义很难解析),但遵循某些重复的表达式,动作和模式。并且它总是以(或多或少)相同的方式遵循这些模式。它主要对内存执行写操作,并且不包含复杂的结构,如C-struct或enum等。
语言A中的常规低级C代码示例:
#define MYMACRO 0x123
uint32_t regAddr;
regAddr = MYMACRO;
*(uint32_t*)(regAddr) = 0xdeadbeef;
"自定义代码"的示例用语言A:
custom_printf("hello world! Cpu number: %d \n", cpu_nr);
语言B 是100%自定义语言。此转换是必要的,以便在另一个工具中使用该文件进行调试。上面例子的翻译看起来大致如下:
definemacro MYMACRO 0x123
define_local_int regAddr
localint.set regAddr = MYMACRO
data.write regAddr 0xdeadbeef
注意:我很清楚Stackoverflow并不是一个关于&#34的公开讨论的网站;您更喜欢哪种工具?"。但我想这个问题 更像是"我需要至少一个有意义的工具集才能完成工作",无论如何,可能没有那么多明智的讨论选择。
到目前为止,这些是我的考虑和方法:
有人可以给我一些关于这项任务的一套有意义的工具的建议吗?
编辑: 如果这看起来像一个模糊的问题我道歉,我试着尽可能准确地说出来。 我为语言A和B添加了一个示例,以使语言的组成更加清晰,并且为了表明语言A遵循某些可以轻松理解语义的重复模式。
如果此编辑没有提高清晰度和宽度,我将按照建议重新发布给程序员。
EDIT2 : 好吧,由于这个主题似乎在这里似乎已被取代,我在此撤回了这个问题。我已经从前几张海报中收到了一些有价值的信息,这些信息鼓励我使用通用解析器生成器进行进一步的实验。