小编tbl*_*dez的帖子

在C中用bash创建一个AST

我试图在没有任何花哨库(即从头开始)的帮助下在C中构建一个迷你Bash解释器.我必须管理简单的运算符,如'<','|','<<','>>','>'.
我被告知要构建输入的AST以便于执行过程.问题是,我不明白我应该如何构建一个.

到目前为止,我制作了一个链接列表,我的输入变成了令牌,但无法想出如何制作AST:

typedef struct       s_token
{
    enum e_TokenType type;
    char             *lexeme;
    struct s_token   *prev;
    struct s_token   *next;
}                    t_token;
Run Code Online (Sandbox Code Playgroud)

你能解释一下如何把它变成一个功能AST吗?例如,使用此输入:

cat << EOF > file | wc -c | tr -d " " > file2
Run Code Online (Sandbox Code Playgroud)

我想AST会是这样的:

我已经看到其他帖子描述了如何但他们在JS/Python(我不熟悉这些语言)和使用库感兴趣的部分.

c bash abstract-syntax-tree

9
推荐指数
1
解决办法
405
查看次数

如何使用正则表达式在 Visual Studio Code 的代码片段中“大写并替换”?

我想在 Visual Studio Code 1.33.1 上创建一个片段,使用文件名创建一个 C++ 类。
首先,我要设置“包含保护”,重点是使用文件名,替换每个“。” 通过 '_' 并将其全部设置为大写(规范):
#ifndef FILE_CLASS_HPP //filename: File.class.hpp

VSC 文档为文件名提供了一些变量,以及一些用于更改为全部大写并用另一个字符替换字符的正则表达式。
要点是:我从来没有成功地做到这两件事,因为我对正则表达式一无所知。

我尝试手动加入正则表达式,但它从未起作用:
#ifndef ${TM_FILENAME/(.*)/${1:/upcase}/[\\.-]/_/g}

预期结果:
#ifndef FILE_CLASS_HPP
实际结果:
#ifndef ${TM_FILENAME/(.*)//upcase/[\.-]/_/g}

regex code-snippets visual-studio-code

2
推荐指数
1
解决办法
3486
查看次数