使用 C# 将类 C 或类 Lisp 代码解析为数组的好方法是什么?
例如,对于像下面这样的小片段:
if (number > 50) {
alert('Hello, World!');
}
我希望能够将每个单词和符号存储到一个数组中。
但到目前为止,我设法输出了如下数组:
[0] if
[1] (number
[2] >
[3] 50)
[4] {
[5] alert('Hello,
[6] World!');
[7] }
你在数组位置 1
看到它说 (number
?那不是我真正想要的。我什至想把那个小括号放在它自己的数组中位置。
我最初想做的是读取代码的每个字符,然后开始将它们相应地存储到数组中。但这似乎是我在解析字符串时重新发明轮子。有没有更简单的方法来做到这一点?
附注我这样做是因为我想学习正确的字符串操作。
最佳答案
C语言的解析规则很多,不能简单的把代码用空白字符分词。
您需要了解符号的概念。代币 . , - + / * -> ( ) = == != < > <= >= << >> ; ? : " ' & && | || ~
(等等)都是符号。如果在解析过程中您偶然发现其中一个,则将其视为单独的标记,而不管下一个字符是什么。在 "和 ' 之后忽略此规则,直到你遇到另一个 "/',除非它在转义字符 \
之后.还有注释处理、三字母组合和宏处理,以及更多需要注意的事情。
关于c# - 使用 C# 将代码(以类 C 或类 Lisp(或任何)语言编写)解析为数组的好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6316847/