将文件预处理代码从 C 移植到 C#

发布于 2024-08-01 15:54:36 字数 611 浏览 6 评论 0原文

我之前用C制作了一个基本的解释器,它带有一个预处理器,可以减轻解析等方面的大量负载。 我现在想移植这个预处理器以便在 C# 中使用,但我遇到了麻烦,因为我对 C# 还很陌生。

我的旧预处理器做了这样的事情,这样

var $mine=        this;
      //weird intendtation
var       $something        + $a=$b;

就会得到相当机器可读的东西

var\0$mine\0=this\0;\0var\0$something\0+$a\0=$b\0;\0

(\0 为 NULL,这样我就可以非常轻松地获取变量和标识符的名称)

好吧,用我的旧代码,我以一个字节读取它一次,根据其是否有空格以及最后一个字符是什么,然后它会插入该字符、插入 NULL 或忽略该字符。

好吧,我在将其转换为 C# 代码时遇到了麻烦。 我正在使用 StringBuilder 类并使用 Insert() 一次插入一个字符。 但我的问题是我不能使用 \0 作为字符值。 那么如何才能使标识符名称仍然非常容易阅读呢? 在这种情况下,拥有一个字符串数组或字符串生成器对象会更好吗?

I've made a basic interpreter before in C with a preprocessor that took a lot of load off of parsing and such. I would like to port this preprocessor for use in C# now and I'm having trouble, as I am still quite new to C#.

My old preprocessor made it so things like

var $mine=        this;
      //weird intendtation
var       $something        + $a=$b;

would come out to something fairly machine readable as

var\0$mine\0=this\0;\0var\0$something\0+$a\0=$b\0;\0

(with \0 being NULL so that I could get the names of variables and identifiers very very easily)

Well, with my old code I read it in one byte at a time and depending on if its whitespace and what the last character and such was, then it would either insert the character, insert NULL or ignore the character.

Well I'm having trouble turning this into C# code. I'm using the StringBuilder class and using Insert() to insert one character at a time. But my problem is I can't use \0 as a character value. How do I make it so that identifier names are still extremely easy to read then? would it be better to have an array of strings or string builder objects in this case?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梨涡少年 2024-08-08 15:54:36

我建议使用 List,并一次将一项添加到列表中。

这为您提供了字符串数组的所有可用性,但它会动态增长。 如果使用这种方法,用于解析文件的 C# 代码应该比 C 代码简单得多且更容易理解。

I would recommend using List<string>, and adding items to the list one at a time.

This gives you all of the usability of an array of strings, but it will grow dynamically. The C# code to parse your file should be much, much simpler and easier to understand than the C code, if you use this approach.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文