草庐IT

符号化

全部标签

c++ - LR(1) 语法的状态、符号和规则的数量的合理上限是多少?

我正在制作一个LR(1)解析器,我在很多地方遇到了性能瓶颈。我想尝试优化解析器的数据结构,但为了做到这一点,我需要大致了解有多少状态、规则和终端符号对于(可能是复杂的)计算机语言是合理的,像C++。我的猜测是,复杂语言的典型语法应该是:≤100个终端符号每次生产≤50个符号≤2,000条规则≤10,000个州但我真的不知道他们有多正确。请注意,我假设每个规则都是nonterminal→symbolsymbolsymbol...,因此,看起来像foo:(bar|baz)+的单个复合“规则”实际上可能包含5条规则,而不仅仅是1条规则。它们合理吗?如果不是,我在哪里可以找到这些数字?

c++ - error LNK2019 未解析的外部符号虚拟类

我知道这个问题被问过好几次了,但我找不到解决方法。我在尝试构建我的项目时遇到此错误:errorLNK2019:unresolvedexternalsymbol"public:virtual__thiscallIGameState::~IGameState(void)"(??1IGameState@@UAE@XZ)infunction"public:virtual__thiscallMenuState::~MenuState(void)"(??1MenuState@@UAE@XZ)这是我的代码:IGameState.hclassIGameState{public:virtual~IGam

c++ - 不明确的符号 - 无法从 ado::DataTypeEnum 转换为 DataTypeEnum

尝试编译包含SQL库的C++项目并出现以下错误:errorC2664:'CNCQuickADO::ConvertADOType':cannotconvertparameter1from'ado20::DataTypeEnum'to'DataTypeEnum'ConversiontoenumerationtyperequiresanexplicitcasterrorC2664:'CNCQuickADO::ConvertADOType':cannotconvertparameter1from'ado20::DataTypeEnum'to'DataTypeEnum'Conversiontoe

c++ - 此指针类型转换符号的含义

我已经多次看到这种类型的声明,但不知道它在做什么:*(type*)$var例如:*(char*)&myChar如果正在检索myChar的地址并将其转换为char指针,那么为什么额外的指针在外面,为什么地址可能是int或hex值被转换为指针?这对我来说毫无意义。我是初学者,所以请逐步解释这里发生了什么,以及为什么使用这种令人困惑的格式进行类型转换。谢谢。 最佳答案 *(char*)&myChar获取myChar的地址,然后转换为char*,最后访问它指向的对象。效果是,访问将根据类型转换指针类型。例如intx;charc=*(char

c++ - 如何评估 SymbolicC++ 中的符号变量?

我一直在尝试一些C++计算机代数库,以便与我正在学习的vector微积分类(class)一起使用。我在GiNaC和SymbolicC++中遇到非线性方程的问题它确实有效。这是一个简单的例子,但问题是我无法弄清楚如何计算一个数字并可能将其转换为double或float:#include#include"symbolicc++.h"usingnamespacestd;intmain(void){Symbolicx("x"),y("y");Equatione1=(x^2)+(y^2)==13;Equatione2=(x^2)-y==7;Equationseqs={e1,e2};listsym

c++ - 最快/最小的有符号整数类型

我正在阅读固定宽度整数类型(cppreference)并遇到int_fast8_t、int_fast16_t、int_fast32_t和int_least8_t类型,int_least16_t,int_least32_t等我的问题如下例如说int_fast32_t是最快有符号整数类型(至少32位)是什么意思?更常见的类型unsignedint是不是很慢?例如说int_least32_t是最小有符号整数类型是什么意思?int_fast32_t、int_least32_t和unsignedint之间有什么区别? 最佳答案 int_fas

c++ - Coverity 为使用 'cov-build' 的构建定义了哪些预处理器符号?

我们使用Coverity的ScanBuild为免费和开源项目提供服务。我正在研究关于受污染参数(TAINTED_SCALAR)的两个Coverity调查结果。污点是误报,因此我尝试使用Coverity的__coverity_tainted_data_sanitize__检测代码以清除问题。我想保护需要使用__coverity_tainted_data_sanitize__的代码,因为该函数仅用于使用Coverity的cov-build的分析构建。工具。也就是说,我想做类似的事情:voidFoo(std::istream&is,...){std::stringname;is>>name;

c++ - 命名空间 std 中所有符号的列表

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭6年前。Improvethisquestion我在哪里可以找到在命名空间std中声明的所有符号的列表?实在找不到,不知道去哪里找。

c++ - error LNK2019 未解析的外部符号

我对C++很陌生,所以我下载了一个示例C++程序。示例程序在编译时似乎遇到了以下错误:-Error22errorLNK2019:unresolvedexternalsymbol_acsEnumServerNames@12referencedinfunction"protected:virtualint__thiscallCOpenTsrv::OnInitDialog(void)"(?OnInitDialog@COpenTsrv@@MAEHXZ)Opentsrv.obj我将其追溯到所引用的函数,但我不知道它有什么问题吗?BOOLCOpenTsrv::OnInitDialog(){CDia

c++ - 在 C++ 中将十六进制字符串转换为无符号字符

我想将字符串中的十六进制表示形式转换为无符号字符变量,如下所示:std::stringstreamss;uint8_tx;ss>std::hex>>x;//result:x=0x31(=49indecimaland='1'aschar)显然,我假设转换会导致x=0x1f(十进制=31),因为0x1f小于0xff,这是可以存储在8位无符号字符中的最大值。相反发生的是在转换中只使用了我的字符串的前8位。有人可以向我解释为什么会发生这种情况以及如何解决吗? 最佳答案 std::uint8_t是(通常见下文)unsignedchar的别名,