我搜索了很多主题并遇到了很多主题,比如'易用的几何库'.
我正在寻找除此之外的东西.我打算编写用于处理3D数据的复杂应用程序(比如说像blender,3ds max,maya或houdini).我正在寻找可用于我的项目的最佳可用几何库(它可以是免费的或商业的).我不在乎它是否易于使用或者它是否复杂.
在这个库的顶部,我想构建这个应用程序的基本功能(如建模,布尔操作,triangulaton,纹理,retopologing工具等).
关键是:
当然,这可能不是一个单独的图书馆.但是,如果这些库能够无缝地协同工作,那将会很棒.
我知道有增强:几何,CGAL,OpenMesh和PCL.还有其他选择吗?
在LLVM教程中,有如何编写简单JIT编译器的说明.不幸的是,本教程中的词法分析器和解析器是手动编写的.我在想,这样的解决方案有利于学习目的,但它不适合编写复杂的,生产就绪的编译器.看起来GCC和其他一些"大编译器"都是手写的.但我认为,所有这些解析器生成器在编写自己的编译器时都会有很大的提升(特别是当你独自完成它时,没有团队成员).
是否可以将任何现有的解析器生成器(如Bison/Antlr/Packrat/Elkhound等)与LLVM一起使用来创建JIT编译器?我希望能够使用表达式不断地(不是一次开始)"解析"解析器并在运行时编译它们.
另外我发现了很多关于"最好的,现代的"解析器生成器的问题(比如这个:https://stackoverflow.com/questions/428892/what-parser-generator-do-you-recommend).如果可以使用这些工具来创建LLVM JIT编译器,我会感谢任何额外的提示和推荐,在这种特定情况下哪个工具在性能和灵活性方面是最好的.
如何添加wscript的包含路径?
我知道我可以根据任何cpp文件声明我想要包含哪些文件夹的文件,例如:
def build(bld):
bld(features='c cxx cxxprogram',
includes='include',
source='main.cpp',
target='app',
use=['M','mylib'],
lib=['dl'])
Run Code Online (Sandbox Code Playgroud)
但我不想为每个文件设置它.我想添加一个"全局包含"的路径,因此每次编译任何文件时都会包含它.
我们如何可以转换u32string
到int
在C++ 11?
另外,我应该使用什么方法将部分字符串转换为int
- 让我们说开始和结束迭代器可用?
我试过了:
u32string test=U"14";
cout << atoi(test.c_str());
Run Code Online (Sandbox Code Playgroud)
但它抛出:
candidate function not viable: no known conversion from 'const char32_t *' to 'const char *' for 1st argument
extern int atoi (__const char *__nptr)
Run Code Online (Sandbox Code Playgroud) 让我们看看以下代码:
class A{
protected:
int _val;
public:
A(){printf("calling A empty constructor\n");}
A(int val):_val(val){printf("calling A constructor (%d)\n", val);}
};
class B: virtual public A{
public:
B(){printf("calling B empty constructor\n");}
B(int val):A(val){printf("calling B constructor (%d)\n", val);}
};
class C: public B{
public:
C(){printf("calling C empty constructor\n");}
C(int val):B(val){printf("calling C constructor (%d)\n", val);}
};
int main(void) {
C test(2);
}
Run Code Online (Sandbox Code Playgroud)
输出是:
calling A empty constructor
calling B constructor (2)
calling C constructor (2)
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释为什么没有任何参数调用A类构造函数?如果我希望B类从A虚拟继承,我还能如何"修复"这种行为?(如果继承不是虚拟的 - 样本工作正常)
题
我知道Parsec
,uu-parsinglib
而且我在两者中都编写过解析器.最近我发现,存在一个问题uu-parsinglib
,可能会对其性能产生重大影响,我看不到解决问题的方法.
让我们考虑遵循Parsec解析器:
pa = char 'a'
pb = char 'b'
pTest = many $ try(pa <* pb)
Run Code Online (Sandbox Code Playgroud)
相当于uu-parsinglib
什么?它不会是以下内容:
pa = pSym 'a'
pb = pSym 'b'
pTest = pList_ng (pa <* pb)
Run Code Online (Sandbox Code Playgroud)
所不同的是,在Parsec
,many
会吃(pa <* pb)
(对"ab"
)贪婪,直到它不再匹配,而在uu-parsinglib
,pList_ng
不贪心,所以每次分析后,将保留在内存中可能原路返回的方式(pa <* pb)
.
有没有办法写出类似pList(try(pa <* pb))
的内容uu-parsinglib
?
例
一个很好的例子
pExample = pTest <* (pa <* pb)
Run Code Online (Sandbox Code Playgroud)
和一个样本输入"ababab" …
我不熟悉用c ++(或c ++ 0x)处理3D数据,我正在尝试编写简单的应用程序,这将允许处理这些数据(模型,细分等).我正在寻找类似'3d几何引擎'的东西 - 在内存中处理有效3d几何的引擎,并提供API来修改其组件(顶点,点,多边形(不仅是三角形),顶点属性等).我正在寻找类似的东西,但没有运气.如果有任何引擎可以免费使用,你能推荐任何(最好的开源)3D几何引擎,它会有这样的api吗?
谢谢.
Simmilar问题(与Python2相关:Python:检查方法是否为静态)
让concider遵循类定义:
class A:
def f(self):
return 'this is f'
@staticmethod
def g():
return 'this is g'
Run Code Online (Sandbox Code Playgroud)
在Python 3中已经没有instancemethod
了,一切都是函数,因此与Python 2相关的答案将不再适用.
正如我所说,一切都是功能,所以我们可以打电话A.f(0)
,但我们当然不能打电话A.f()
(参数不匹配).但是,如果我们做一个实例a=A()
,我们叫a.f()
Python的传递给函数A.f
的self
作为第一个参数.调用a.g()
阻止发送或捕获self
- 所以必须有一种方法来测试这是否是静态方法.
那么我们可以检查Python3是否声明了方法static
?
问题
我今天遇到了一个问题,我不知道如何解决它.这对我来说很奇怪,因为我写的代码应该(根据我目前的知识)是正确的.
所以下面你可以找到一个示例解析器组合器.最重要的是pOperator
,它以非常简单的方式(仅用于演示目的)构建运算符AST.它消耗"x"并且可以消耗由空格分隔的多个"x".
我也有pParens
combinator,定义如下:
pPacked pParenL (pWSpaces *> pParenR)
Run Code Online (Sandbox Code Playgroud)
所以它在关闭括号之前消耗空格.
样本输入/输出
正确的输入/输出应该是:
in: "(x)"
out: Single "x"
in: "(x )"
out: Single "x"
Run Code Online (Sandbox Code Playgroud)
但我得到了:
in: "(x)"
out: Single "x"
in: "(x )"
out: Multi (Single "x") (Single "x")
-- Correcting steps:
-- Inserted 'x' at position LineColPos 0 3 3 expecting one of ['\t', ' ', 'x']
Run Code Online (Sandbox Code Playgroud)
但是在第二个例子中我得到了错误 - 解析器的行为就像它贪婪地吃了一些令牌(而且没有贪婪的操作).
我会感谢任何帮助.
示例代码
import Prelude hiding(lex)
import Data.Char hiding (Space)
import qualified Text.ParserCombinators.UU as UU
import Text.ParserCombinators.UU …
Run Code Online (Sandbox Code Playgroud) 我正在使用Trifecta解析器组合库,我的解析器输出AST数据类型的实例.我希望每个实例都有唯一的ID(简单的Int).
在Parsec中,我会创建自定义状态并在neccesery时递增ID.我们怎样才能在Trifecta中做到这一点?
c++ ×6
parsing ×4
haskell ×3
3d ×2
c++11 ×2
geometry ×2
parsec ×2
python ×2
algorithm ×1
base-class ×1
bison ×1
c ×1
class ×1
compilation ×1
include ×1
inheritance ×1
llvm ×1
localization ×1
monads ×1
performance ×1
python-3.x ×1
static ×1
string ×1
trifecta ×1
waf ×1