compiler-construction

    1热度

    1回答

    我正在构建一个Django Web应用程序,以编译和运行用户提交的不同语言的不可信代码。 背后编译步骤如下: 从使用bash脚本一个文件名 运行提供了运行动作 店在数据库编辑器以代码。 由于有直接运行在终端代码的安全性的问题,我已经想使用多克尔作为解决方案。我创建了一个码头工人文件,如下所示: FROM chug/ubuntu14.04x64 # Update the repository s

    0热度

    1回答

    我正在构建语法分析器。单反(1)很好,但我相信有一些减少/移位冲突或某种冲突会使解析器过早拒绝字符串。这里是语法: 注意:我确实留下了语法因素来看看这是否是问题,但这并没有消除歧义。然而,这是没有左保 P'' -> P'$ P' -> P P -> C | C;D D -> R | RD R -> pu{P} C -> I | I;C I -> h | O | A | R

    -1热度

    1回答

    我正在通过O'Leilly Flex & Bison作者:John Levine,在尝试编译和运行一个简单的BNF计算器的示例时遇到以下问题 > ./fb1-5 2 + 3 * 4 = 0 2 * 3 + 4 = 0 c Mystery Character c error: syntax error 程序似乎相应确认非数值输入和退出,但是任何整数输入与MULT/DIV /添加/子

    0热度

    1回答

    我想实现一个简单的if语句在Flex和野牛以下形式: (表情)(表情) 如果左边表达式是非零?值,那么正确的表达式将被执行。 使用Bison语法规则,任何人都可以告诉我一个如何做到这一点的例子吗? 这里是我的野牛代码PIEC这显示了我到目前为止有: %union{ int d; char *s; } %token <d>INTEGER %token <s>VARIABLE %nona

    0热度

    1回答

    我给出了对lisp-like语言的递归闭包建模的两种方法的描述。假设我有以下代码: (letrec ((f (fun (l) … (map f l) …)))) …) 对于与f关闭我能: 款待f作为自由变量,并把它放在自己的环境,这导致环闭合。 平坦的封闭,环境是封闭的,可以直接重复使用。 我正在使用扁平关闭的概念,它在其第一个单元格中存储一个指向函数的指针,其余的自由变量。但我对第二种选择感

    4热度

    2回答

    我一直在学习汇编,我已经读过四个主要的x86通用寄存器(eax,ebx,ecx和edx),每个寄存器都有一个预期的或建议的目的。例如,eax是累加器寄存器,ecx用作循环的计数器,依此类推。大多数编译器是否尝试使用寄存器来达到建议的目的,或者他们是否忽略寄存器“应该”设置的值,并将值分配给下一个可用的寄存器?如果你忽略了rbp,rsp,rsi和rdi(因为它们没有),所以我们注意到增加了8个通用寄

    0热度

    4回答

    有谁知道Flang或PGI/LLNL/Nvidia的Fortran for LLVM(不是dragonegg)去了哪里?我发现一些github页面的文档不再存在。

    1热度

    1回答

    我新的弯曲和野牛,在我的Mac,我使用这些安装flex和野牛在我的Mac: brew install flex && brew link flex --force brew install bison && brew link bison --force 这是我test1ll.l文件 %{ #include <iostream> using namespace std;

    1热度

    2回答

    所以,我正在为我正在制作的语言做一个类似于Python的解释器。现在我明白这不是一个小任务,我不期望它工作得很好或者做得很多,但我希望它具有一些基本功能(变量,函数,循环,if语句等)。 因此,目前我处于解释器获取文件并将其分割为令牌列表的阶段,现在我准备将这些令牌转换为AST。我打算用递归下降解析器来做到这一点,我相信我明白,但这是问题所在。比方说,我有以下输入 1 + 2 * 3 这将输出

    1热度

    1回答

    我很久以前在编写C++程序时使用了OpenMP。突然,一个问题出现在我的脑海里。 “OpenMP如何知道有多少个循环实例被嵌套? 是否由编译器明确计算?