我正在寻找"tokenizer","parser"和"lexer"是什么以及它们如何相互关联的明确定义(例如,解析器是否使用了tokenizer,反之亦然)?我需要创建一个程序,将通过c/h源文件来提取数据声明和定义.
我一直在寻找示例,可以找到一些信息,但我真的很难掌握语法规则,解析树和抽象语法树等基础概念以及它们如何相互关联.最终这些概念需要存储在实际程序中,但1)它们看起来像什么,2)是否有共同的实现.
我一直在关注这些主题和程序,如Lex和Yacc维基百科,但从未经历过编译器类(EE专业),我发现很难完全理解正在发生的事情.
我正在寻找一种在PHP中获得Flex/Bison(或Lex/Yacc等人)支持的方法.具体来说,我正在Web UI中实现一个布尔查询解析器,而宁愿将所有操作保留在PHP中(而不是调用C解析器,或者将事物传递给Python等).