c - 帕斯卡到 C 转换器

标签 c pascal flex-lexer code-translation

<分区>

我正在编写将 Pascal 翻译成 C 的程序,需要一些帮助。我从扫描仪生成器 Flex 开始。我定义了一些规则并创建了或多或少工作正常的扫描仪。它将 Pascal 语法分解为标记,现在它只打印它找到的内容。但我不知道下一步该怎么做。有没有关于这个主题的文章或书籍?下一步是什么?

最佳答案

为什么要做这样一个 Pascal 到 C 的转换器?

如果您只想运行一些 Pascal 程序,使用(或改进)现有的编译器(如 gpc)会更简单。 ,或 Pascal 到 C 的翻译器,例如p2c

如果您想将手写的 Pascal 代码转换为人类可读(且可改进)的 C 代码,则任务要困难得多;特别是,您可能想要转换缩进、注释、尽可能保持相同的名称 - 但避免与系统名称冲突 - 等等!

你总是想解析一些抽象的语法树,但这些树的精确性质是不同的。也许 flex + bison 甚至 ANTLR可能足够也可能不够(你总是可以编写一个手写的解析器)。此外,错误恢复对您来说可能重要也可能不重要(在出现第一个语法错误时中止非常容易;试图理解一个写得不好、语法不正确的 Pascal 源代码非常困难)。

如果你想构建一个玩具 Pascal 编译器,请考虑使用 LLVM (或者甚至可能是 GCC 中端和后端)

关于c - 帕斯卡到 C 转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10373935/

相关文章:

c - 声明/寻址微芯片上的输出端口

c - c中的分配存储和二进制fwrite短裤

c - 运行一段时间后出现段错误(核心已转储)

delphi - Delphi/Pascal 有静态代码分析工具吗?

c - Lex/flex 程序,用于计算 id、语句、关键字、运算符等

c - 如何从 lex/yacc 生成不同的 yyparse 函数以用于同一程序?

c - mprotect有多快

c - 将 C for 循环转换为 Pascal

pass-by-reference - 按引用调用和按值调用结果

c - Flex - 检测 EOF 之前的单词