compiler-construction

    0热度

    1回答

    我试图用flex和野牛,使一个小的编译器,但我没有得到如何给行动为每个规则 我的语法是这样的: %union{ std::string *s; }; %start program %type <s> expr %token <s> KEYWORD %token <s> VARIABLE %% program : KEYWORD {std::cout <

    0热度

    1回答

    我试图在从flex发送的野牛中打印令牌值,但由于某些原因,在某些情况下打印的值是垃圾。 法代码: \".*\" { std::string* s1 = new std::string(yytext); std::string s2 = *s1; std::string s3 = s2.substr(1,s2.size() - 2); yylval.s = &s3;

    0热度

    1回答

    我想明白为什么野牛以下规则 stmt: declaration { ... } | assignment { ... } | exp { ... } | ID ';' <-- this rule { ... fprintf(stderr, "\n my id is '%s'", $1);

    2热度

    1回答

    我想做一个java程序,我自己的格式解析到java文件。例如,当我写与 show("Hello World"); 一个文件,这个文件保存为hello。[my_own_extension]从我的程序和出口类似的东西阅读, class Hello { public static void main(String[] args) { System.out.println("Hello W

    0热度

    1回答

    就我而言,每个处理字节码的虚拟机,让我们以JVM为例,实现自己的垃圾收集器,以某种方式分析虚拟机(正在执行字节码)的当前状态,并就收集对象从堆。现在,在提前编译时,我感到非常困惑。这意味着在首次启动应用程序之前,整个字节码会被编译为本机代码。所以......当应用程序启动时,处理器执行本地代码,就是这样。现在,如果我们将整个字节码编译为本地代码,那么虚拟机会进入哪里? GC进来的地方,它分析的是什

    0热度

    1回答

    我正在寻找c语法,发现这个链接https://www.lysator.liu.se/c/ANSI-C-grammar-y.html#cast-expression问题是有语法的c和lex代码,但我没有看到任何语义像加法,乘法实现我知道yacc只用于语法检查,但我们也可以在其中写入语义,其中实现的语义是在其他工具中实现的。 我想实现一个小型编译器,我在哪里写语义,是否好在yacc中使用函数编写它们。

    0热度

    1回答

    我知道这个问题可能不属于这里,但我现在正在阅读龙书,学习编写编译器,我想知道是否有人知道是否有可能获得编译器的源代码SML?我想使用它,因为它是一个功能范例,如果我们忘记了小缓冲区,它在优化功能代码时是一个很好的编译器。 我也喜欢看它,因为它是第一个语言,我学会了编程。

    -1热度

    1回答

    我正在尝试为我自己的迷你语言构建一个解析器,然后由YACC自己将它翻译成C++。 问题是,YACC正在读取输入的第一行以及输入的第二行中的第一个标记,并将其与相应的规则进行匹配,而它应该只读取第一行输入中的标记以及与相应的规则匹配它 我的输入文件是: print "hello" a = 10 print a 莱克斯文件: %{ #include <stdio.h> #i

    0热度

    1回答

    只是问一个相当简单的问题,但我在谷歌的搜索是不成功的。我正在寻找一个编程元语言谁是完整的。简而言之,是否有任何其他编程语言(java,c,其他)可以表达的语言?包括所有可以在其他语言中找到的词汇和所有概念。如班级,功能,方法,线程等。 在此先感谢!

    0热度

    1回答

    我正在阅读编译过程的不同阶段。当我到达Linking阶段时,我发现它将库和用户定义的目标文件链接到一个exe文件中。但是预处理已经替换了语句#include及其内容(即printf等函数的定义)。 我知道我错了,但是我错误地理解了什么?