Ron*_*100 6 c parsing bison pycparser
我有一组用"A"语言编写的文件,需要翻译成语言"B"的相应文件.我想创建一个可以自动执行此任务的程序/解析器(可能是工具链而不是单个程序).但是,我正在努力为我的工具链的程序找到合适的选择.

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