我一直在阅读有关解释器/编译器如何工作的一些内容,而我感到困惑的一个领域是AST和CST之间的区别.我的理解是解析器生成一个CST,将它交给语义分析器,将其转换为AST.但是,我的理解是语义分析器只是确保遵循规则.我真的不明白为什么它会实际做出任何改变,使其变得抽象而不是具体.
有没有关于语义分析器的东西,或者AST和CST之间的差异有点人为?
parsing terminology abstract-syntax-tree semantic-analysis concrete-syntax-tree
据我所知,将Java源代码解析为AST(抽象语法树)的唯一方法是使用Java编译器树API:com.sun.source.tree
我有两个问题:
为了更好地理解C++语言和语法的一些细节,我希望能够编写一个小的C++程序,并查看编译器从中生成的AST.
看起来clang过去有这个功能(-emit-asm),但它已经删除了.
今天有一个简单的方法吗?
嗨,我是编译器开发的新手,我想知道AST是怎样的.我有一小段代码,我使用Clang生成AST.我没有得到太多的信息.从它的外观来看,语法树与源完全相同,除了一个结构添加到我测试的几乎任何样本中.
资源:
class A {
public:
int *a, *b, *c;
int i;
void sum() {
a = new int[5];
b = new int[5];
c = new int[5];
for (i = 0; i < 5; i++) {
a[i] = i;
b[i] = i;
}
for (i = 0; i < 5; i++) {
c[i] = a[i] + b[i];
}
delete[] a; delete[] b; delete[] c;
}
};
class B : public A {
};
int main() {
B bclass;
bclass.sum();
return …Run Code Online (Sandbox Code Playgroud) 我目前正在寻找一个Java 6/7解析器,它生成一些(可能是标准化的)表单抽象语法树.
我已经发现ANTLR有一个Java 6语法,但似乎它只生成解析树,而不是语法树.我还读过有关Java编译器API的文章 - 但是所有提到的资源都是过度设计并且记录不完整(如果它确实生成了AST,我还没发现).
你知道任何好的解析器库,可能作为标准化输出吗?
谢谢
我想获得java和c代码的xml表示.3个月前,我问过这个问题,但解决方案对我来说并不舒服
问题:有可用的软件支持将ast转换为xml,它支持行号(和列)[特别是对于java和c/c ++]?是否有javaml和srcml的替代品?
ps:我不喜欢解析器生成器.我希望找到一个可以在控制台上输入的工具:./ my-xml-generator Test.java [或类似的东西] ......或者java实现也会很棒.
我正在寻找一种方法将抽象语法树"转储"到文件中,以便可以使用编译器解析代码,然后以独立于语言和编译器的方式存储.然而,我无法找到任何被广泛认可的方式来做到这一点.这样的方式存在吗?
我正在寻找将C#转换为XML并再次反序列化回C#的选项.有人知道任何现有的解决方案吗?我假设Roslyn SyntaxTree不是Xml可序列化的.我还假设为一个syntaxtree制作一个xml-serializer是一项相当大的工作.但也许不是吗?
我为什么需要这个?我想通过xsl到syntaxtree-xml从xml模型生成代码,然后生成c#(或者可能是vb).
我不想直接从XSL生成C#(可以做但我觉得它不是理想的).我需要XSL,因为我还要从XML模型生成XAML和HTML,我也希望能够生成任何需要的代码等等.
我知道T4模板,但现在我正在寻找其他选项,原因有很多.
我需要一个独立的Java解析器(程序"读取".java源文件并生成AST [即表示源内容的对象]).
有帮助吗?也许你的某些人也试过做一些独立的Java解析?