如何让 C 语言中的 ANTLR3.5 生成的解析器在 MVS EBCDIC 环境中工作?
Posted
技术标签:
【中文标题】如何让 C 语言中的 ANTLR3.5 生成的解析器在 MVS EBCDIC 环境中工作?【英文标题】:How can I get a parser generated by ANTLR3.5 in C to work in an MVS EBCDIC environment? 【发布时间】:2015-02-25 19:42:38 【问题描述】:我们在 linux 上使用 ANTLR 3.5.2 在 C 中生成解析器。我们已经能够使用 LE C 编译器编译和链接生成的 C 解析器和 z/OS 上的 ANTLR C 运行时。当然,我们希望解析器能够在 EBCDIC 环境中工作。
我们需要设置或修改什么来实现这一点?在 MVS 上运行 ANTLR 以获得在 MVS 上运行的代码更容易,还是我们可以继续在 Linux 上生成代码并在 z/OS 上运行(稍加修改)? 非常感谢, 托尼
【问题讨论】:
谷歌搜索“antlr z/os”会得到这个链接groups.google.com/forum/#!topic/il-antlr-interest/U5P7berIQO8,这似乎是相关的。该原理似乎有一个 Stack Overflow ID,并且可能会显示一个更直接的答案。 这肯定是相关的。将尝试 Jim Idle 的建议。我理解这意味着,为 ascii 编译并为 i/o 使用 ebcdic/ascii 转换。在我们尝试后将对结果发表评论。谢谢! 【参考方案1】:您可以使用以下命令将生成文件的代码页切换为 EBCDIC Latin-1:
??=pragma filetag ("IBM-1047")
然后您的解析器将在正确的代码点搜索 EBCDIC 字符。您可能希望对生成的文件进行仔细观察,以查看 ANTLR 是否生成了明确的 ASCII 序数(例如,使用 0x13 而不是 CR 符号),您可能需要修复它们,但它不应该。
【讨论】:
谢谢,乔。那行得通。使用正确的代码页,一切似乎都很好。 很高兴我能帮上忙 :-) 冒着无耻提升我的声誉的风险,如果答案对你有帮助,那么投票会很好。 提示 提示以上是关于如何让 C 语言中的 ANTLR3.5 生成的解析器在 MVS EBCDIC 环境中工作?的主要内容,如果未能解决你的问题,请参考以下文章
使用C语言为python编写动态模块--解析python中的对象如何在C语言中传递并返回