Tag: 解析

X.509v3 ASN.1到C数据结构

我正在尝试在C(OpenSSL)中创建X509代理证书请求(ProxyCertInfo扩展RFC3820 ),但我无法弄清楚应该如何定义ProxyCertInfo的数据结构。 RFC定义ASN.1语言如下: PKIXproxy88 { iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) proxy-cert-extns(25) } DEFINITIONS EXPLICIT TAGS ::= BEGIN — EXPORTS ALL — — IMPORTS NONE — — PKIX specific OIDs id-pkix OBJECT IDENTIFIER ::= { iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) } — private certificate extensions id-pe OBJECT IDENTIFIER ::= { id-pkix […]

解析4个单字节的ip地址字符串

我在使用C编程的MCU上进行编程,我需要解析一个以空字符结尾的字符串,该字符串包含4个单字节的IP地址。 我用C ++做了一个例子: #include int main() { char *str = “192.168.0.1\0”; while (*str != ‘\0’) { if (*str == ‘.’) { *str++; std::cout << std::endl; } std::cout << *str; *str++; } std::cout << std::endl; return 0; } 此代码在新行中打印192,168,0和1每个字节。 现在我需要一个char中的每个字节,比如char byte1,byte2,byte3和byte4,其中byte1包含1,byte4包含192 …或者在结构IP_ADDR中然后返回该结构,但我不知道如何在C。 :(

C / C ++解析器如何工作?

我花了很多时间研究PHP的解析器是如何工作的: 它将PHP代码转换为最终的c代码。 但是如何将c代码翻译成可执行文件? 顺便说一句,如何判断语言A是否可以从数学方面转换为语言B?

为Erlang提取C函数签名

我想知道从源代码中提取c(最终是c ++)函数名,参数及其类型最合适的工具是什么。 我想使用可以尽可能自动化的工具。 我想提取签名类型,然后让另一个用Erlang编写的程序读取输出。 我的目标是使用此信息在Erlang中构建等效的C类型/签名(使用ei)。 我希望这个过程适用于任何C文件,所以我不能使用任何硬编码的东西。 我发现很多工具看起来像CLang,CScope和ANTLR等等,但我不知道它们中是否有任何工作或者有更好的方法。 谢谢。

用C标记字符串?

我正在研究用C编写的计算器的终端解析器。我无法弄清楚如何连接运算符之间的所有数字以将它们放入数组中。 例如,如果输入(命令行参数)是“ 4+342 ”,则理想情况下input[] = {“4”, “+”, “342”} 。 到目前为止,这是我的代码。 我包括 , 和 。 typedef char * string; int main(int argc, char *argv[]) { string inputS = argv[1]; string input[10]; string temp; printf(“%s\n”, inputS); int i; int len = strlen(inputS); printf(“parsed:\n”); for(i = 0; i < len; inputS++, i++) { if(isdigit(*inputS)) { printf("%c",*inputS); } else […]

使用Python检测C文件中的递归

我需要在一个相当大的(5-15,000)C(不是C ++)文件集中检测直接和间接递归。 这些文件已经过预处理。 出于安全原因,代码非常“老派”,因此没有像函数指针那样的花哨的东西,只有传递变量的函数和一些执行相同操作的函数宏。 检测递归的最自然的方法是制作一个有向调用图,考虑每个函数一个边缘的节点将转到它调用的所有其他函数。 如果图形有任何周期,那么我们有递归。 查找函数调用的正则表达式是微不足道的,但我还需要知道调用哪个函数。 PyCParser很不错,但它抱怨很多东西,比如未定义的变量或者typedef,其中源类型没有在不同的文件中定义或定义,这在我的用例中完全不相关。 该项目使用自定义依赖管理系统,因此有些包含,并且这些是自动添加的,所以我需要PyCParser不关心FuncCall和FuncDef节点以外的任何东西 ,我认为没有办法将解析过程本身限制为只是。 我宁愿不实现解析器,因为我没有时间学习如何在python中执行此操作然后实现解决方案。 回到问题,我将如何解析C文件中的函数? 基本上使用字符串(文件中定义的函数名称)作为键,以及字符串列表(每个函数调用的函数)作为值? 正则表达式似乎是最自然的解决方案。 使用python并不是可选的。

在C中解析字符串最简单的方法是什么?

我必须在C中解析这个字符串: XFR 3 NS 207.46.106.118:1863 0 207.46.104.20:1863\r\n 并且能够获得207.46.106.118部分和1863部分(第一个IP地址)。 我知道我可以通过char查找char并最终通过它查找,但是获取此信息的最简单方法是什么,因为字符串中的IP地址可能会更改为不同的格式(数字更少)?

二进制流解析C的库

你能为Ccertificate一个经过validation的二进制流解析库吗? 如果它像C允许的那样具有声明性,那将是很好的。 我需要它用于二进制协议解析并通过它的正式规范描述相当复杂的协议,这就是为什么我希望它尽可能多的声明。 像Haskell的Data.Binary.Get之类的东西会很棒。 我找到了binpac,但它看起来很重量级并且面向C ++,但该项目是纯粹的C. 描述我的意思的例子: parser_t parsers[] = { { get_bit, out_field1, &pkt.field1 } ,{ get_bit7, 0, 0 } // skip 7 bits ,{ get_word16be, out_field2, &pkt.field2 } ,{ 0, 0, 0 } // end }; // skip // char *data, char *data_end, map_parsers(data, data_end, parsers); // parse stream UPD。 只有一个快速库可以从内存中顺序读取位,字,对齐,未对齐等,这很好。 我可以自己编写声明性前端甚至DSL。

解析一个字符串

我有一个格式为“ABCDEFG,12:34:56:78:90:11”的字符串。 我想将这两个用逗号分隔的值分成两个不同的字符串。 我如何使用c语言在gcc中这样做。

使用Sethi-Ullman算法的表达式代码生成器

给一个AST树 ,我想生成一个类似汇编的语言。 我正在尝试使用Sethi-Ullman算法,但我在算法实现中有一些问题。 我用完寄存器后该怎么办? 目前我做以下事情: 发出一个push REG ,其中REG是右子树的寄存器,评估左子树,得到一个自由寄存器指定为右子树的寄存器,然后发出POP REG操作,其中REG也是右子树的寄存器。 我该如何实现该function以获得免费注册? 目前我正在使用这样的实现而不是基于堆栈: enum Reg { Reg_r0, Reg_r1 }; Reg regs[] = { Reg_r0, Reg_r1 }; Reg getreg() { static int c; if(c == sizeof(regs) / sizeof(int)) c = 0; return regs[c++]; } 这是一个伪代码(来自C语言)如何从我unsertood(包括label()函数)实现它 // K is the number of registers available int K = 2; void […]