小编Sam*_*urn的帖子

从AST生成代码的最佳设计?

我正在开发一个非常复杂的DSL,我想将其编译成几种高级语言.整个过程一直是学习的经历.编译器是用java编写的.

我想知道是否有人知道代码生成器部分的设计的最佳实践.我目前已将所有内容解析为抽象语法树.

我正在考虑使用模板系统,但我还没有研究过这个方向,因为我希望首先从堆栈溢出中听到一些智慧.

谢谢!

java dsl code-generation abstract-syntax-tree

20
推荐指数
2
解决办法
5715
查看次数

Hashmap.keySet(),foreach和remove

我知道使用java的"foreach"从列表中删除通常是一个很大的禁忌,并且应该使用iterator.remove().但是如果我循环遍历HashMap的keySet(),那么remove()是否安全?像这样:

for(String key : map.keySet()) {
  Node n = map.get(key).optimize();
  if(n == null) {
   map.remove(key);
  } else {
   map.put(key, n);
  }
}
Run Code Online (Sandbox Code Playgroud)

java foreach iterator hashmap

14
推荐指数
2
解决办法
6万
查看次数

Lisp列表是否始终作为链接列表实现?

Lisp列表是否始终作为链接列表实现?

就处理器缓存而言,这是一个问题吗?如果是这样,是否有解决方案使用更多连续的结构来帮助缓存?

lisp linked-list cpu-cache

9
推荐指数
2
解决办法
1340
查看次数

在返回之前释放局部变量?

在objective-c中,我知道您需要释放您初始化/保留/复制的任何内容.在return声明之前我需要这样做吗?我想要理解release明确的呼叫,而不是使用autorelease.

-(void) someMethod
{
  AnotherClass* ac = [[AnotherClass alloc] init];
  if([ac somethingHappens]){
    // Do I need to release ac here?
    return;
  }
  [ac doSomethingElse];
  [ac release];
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

release objective-c local-variables

5
推荐指数
1
解决办法
2211
查看次数

计算整数范围的重叠

我已经被这个算法难住了一段时间。

假设有四个整数范围。每个范围都有一个开始值和一个结束值。

Range A: 0,5
Range B: 4,12
Range C: 2,10
Range D: 8,14
Run Code Online (Sandbox Code Playgroud)

从这些值中,我想得到一个新的集合,它计算落在特定整数范围内的范围的数量。每一个都有 Start、End 和 Count 值,产生如下内容:

(Start, End, Count)
0,1,1   (Only 1 range (A) falls between 0 and 1 inclusive)
2,3,2   (2 ranges (A,C))
4,5,3   (3 ranges (A,B,C))
6,7,2   (2 ranges (B,C))
8,10,3  (3 ranges (B,C,D))
11,12,2 (2 ranges (B,D))
13,14,1 (1 range (D))
Run Code Online (Sandbox Code Playgroud)

那有意义吗?接近算法的好方法是什么?

algorithm integer range counting

5
推荐指数
1
解决办法
3098
查看次数

Automake不在子目录中生成Makefile.in

首先,我只是想说,我是Autotools的新手.

我有一个具有以下结构的项目:

+-src
  +-commands
    Makefile.am
    +-copy
      Makefile.am
      copy.h
      copy.cpp
    +-delete
      Makefile.am
      delete.h
      delete.cpp
  main.cpp
  Makefile.am
Makefile.am
Run Code Online (Sandbox Code Playgroud)

Makefile.am有SUBDIRS = src

src/Makefile.am有SUBDIRS =命令.

src/commands/Makefile.am有SUBDIRS = $(AUTODIRS)

当我在root中运行automake时,它会生成Makefile.in和src/Makefile.in,但不会生成命令和副本.

我究竟做错了什么?

c++ automake makefile autotools

5
推荐指数
1
解决办法
1403
查看次数

GLFW3,如何判断窗口当前是否最大化?

有没有办法判断 GLFW3 中的窗口当前是否最大化?不是全屏,但在窗口模式下最大化。

opengl maximize-window glfw

5
推荐指数
1
解决办法
2195
查看次数

让自定义击键在Atom中插入Unicode字符

有没有办法让Atom编辑器在按快捷键时插入自定义Unicode字符?我正在尝试使Cmd- \插入一个lambda(λ).

atom-editor

5
推荐指数
1
解决办法
1597
查看次数

如何在Common Lisp中实现`tagbody`和`go`?

如何tagbodygoCommon Lisp中实现的?它是某种形式的setjmp/longjmp还是有更优雅的方式来处理它?

我正在编写一个用C实现的lispy语言,并希望有类似的东西.

compiler-construction common-lisp

5
推荐指数
2
解决办法
303
查看次数

将pugixml的result.offset转换为列/行

对于使用pugixml的应用程序,我需要用户友好的错误报告.
我目前正在使用result.offset.
有没有办法获得线和列?我可能正在处理大型XML文件,如果这有所不同.

c++ error-handling pugixml

4
推荐指数
1
解决办法
662
查看次数