compiler-construction相关内容

手工编写一个解析器

有关你编译大师,我想编写一个递归下降解析器和我想只用代码做到这一点。从其他一些没有语法词法分析器生成和分析器,不告诉我读龙书,我会围过来,最终。 我想进入有关实现词法分析器和解析器合理简单的langauge相关细节,说CSS。我想这样做的权利。 这可能最终会被一系列的问题,但现在我开始一个词法分析器。对CSS规则,断词都可以在这里找到 。 我觉得我自己写的代码是这样的(希望你可以 ..
发布时间:2016-09-07 13:12:54 C#/.NET

为什么我没有得到有关未初始化的只读域警告?

C#编译器是一种​​足以给你一个“场从未分配到”如果你忘了初始化一个只读成员是私有或内部,或者如果它被声明的类是内部警告。但是,如果类是公众和只读成员是公共的,受保护的或受保护的内部,那么对你没有警告! 有谁知道为什么吗? 样本代码,演示了在其下发出警告的条件,以及在何种条件下的警告没有发出: 命名空间的Test1 { 类测试1 { #如果TRY_IT 公共只读INT米 ..
发布时间:2016-09-06 14:56:45 C#/.NET

它是昂贵的做array.length或list.count在一个循环

我知道,在JavaScript中,像这样循环创建一个:的for(int i = 0; I< arr.length;我++)是昂贵的,因为它计算每次数组的长度。 是这种行为在C#中列表和数组,以及昂贵的。或在编译时是最优化?还什么其他语言如Java,这是怎么处理的? 解决方案 这是的不的昂贵在C#。一方面,没有“计算”:查询长度基本上是一个基本操作由于内联。其次,因为(根据其开发商 ..
发布时间:2016-09-06 14:07:17 C#/.NET

在.NET程序集Programmically嵌入资源

我有嵌入特定的资源文件(名为'Script.xml')编译的.NET程序集。我需要programmically改变了另一个。 在没有从源代码重新编译这个可能吗? 目前,我做搜索的文字,我知道是在文件的效果很好。但我需要做的另一个项目中,我不知道任何的资源文件的内容,我需要找到另一种方法。 的FileStream exe文件=新的FileStream(currentexe,File ..
发布时间:2016-09-06 13:47:12 C#/.NET

微软.NET调用单的C#代码?

我已经写在C#中的一些神经网络代码,将使用 SIMD受益支持。 单声道2.2 刚出来的时候,支持SIMD但微软的C#不支持此尚未。 。快乐与我的C#的设置我在想,如果我能在单写一个lib那块从.NET调用它 编辑: 我猜我真正想知道的是它可以通过编译单声道的向下像一个DLL,然后我可以从调用DOTNET。我听说米格尔奥德伊卡萨上的的“http://www.hanselminutes.com ..
发布时间:2016-09-06 13:41:54 C#/.NET

如何在C#中的静态字段初始化工作?

如果静态字段初始化时调用构造函数之前完成? 下面的程序提供了看起来不正确对我的输出。 新A() _A == NULL 静态A() 新A() _A一个== 中的代码: 大众A级 { 公共静态字符串_A =(新A())I()。 公开发行A() { Console.WriteLine(“新A()”); 如果(_A == NULL) Consol ..
发布时间:2016-09-06 12:49:09 C#/.NET

现场访问初始化`this`:无效在C#中,有效的在Java中?

首先,介绍一下: 此代码: C类 { INT I = 5; 字节[] S =新的字节[I] } 失败,出现以下错误编译: 一个字段初始不能引用非静态字段,方法或属性`C.I“ ReSharper的说,类似的事情:不能在静态情况下访问非静态字段 I 的 $。 b $ b 这是内嵌什么的 C#规范说 - 一个字段初始 ..
发布时间:2016-08-30 16:02:22 Java开发

既做C#编译器和JIT做什么优化?

我继续我的C#编译器编译我的班我的工作。此刻,我几乎在我的课本上的编译器优化的章节结束。 在大多数情况下,我的课本没有考虑到即时编译时,它被写,我很好奇的各种静态,预-jit优化的C#编译器执行与在JIT过程中它做什么? 当我跟人有关编译对CLR,我通常听到这样的话:“大多数该优化是由JIT“完成。 事情像循环展开,常量折叠/传播,指令交织完成预日新通过的C#编译器或抖动处理?如 ..
发布时间:2016-08-30 16:00:28 C#/.NET

为什么没有编译器,至少在这个== NULL警告

为什么C#编译器甚至没有对这些代码的警告抱怨吗? 如果(这种== NULL) { // ... } 显然病情会的从不满意.. 解决方案 因为你可以的覆盖运算符== 为这种情况下返回true。 公共类Foo { 公共无效测试() { Console.WriteLine(此== NULL); } 公共静态布尔运算符==(foo的,富B ..
发布时间:2016-08-30 15:57:06 C#/.NET

翻译的C#代码到AST?

这是目前可能的C#代码转换成抽象语法树 编辑:澄清;我并不指望编译器生成我AST - “官方”一个解析器就可以了,但我想使用的东西Lambda表达式是不幸的是不会是足够给他们不允许我用的语句机构,这正是我要找的。 解决方案 Syntax树,等等。 SyntaxTree树= SyntaxTree.ParseCompilationUnit( @“C#代码在这里”); VAR ..
发布时间:2016-08-30 14:58:26 C#/.NET

内联财产初始化和尾随逗号

无效的主要() { 测试T =新的测试 { A =“A”,$ B $条b B =“b”,//< - 错误后面的逗号 }; } 公共类测试 { 公共字符串A {搞定;组; } 公共字符串B {搞定;组; } } 我觉得在我的代码上面的错字不少。我总是惊讶,编译器似乎并不关心这个。为什么上面没有一个语法errror?是否有任何实际有效的使用? 解决方 ..
发布时间:2016-08-30 14:02:24 C#/.NET

儿童范围和放大器; CS0136

下面的代码无法编译,指出“名为'ST'的局部变量不能在此范围内声明,因为它会给予不同的意义,这已经​​是一个'孩子'范围用来表示别的东西'ST', “ 变种L =新的List<串GT;(); l.Find(ST = GT; st.EndsWith(“12”)); 串ST =“为什么失败?” 我明白为什么这是行不通的: 字符串preParent =“”; ..
发布时间:2016-08-30 13:31:41 C#/.NET

如何虚拟事件在C#中工作?

下面是我用于测试程序。 它打印(如预期): 提出一个 从A事件 抬起B. 从B事件 现在,如果我们改变主要的前两行是: A A =新的B(); B B =新的B(); 该程序将打印:提出一个 抬起B. 从B事件 这也是意料之中的,因为压倒一切的大事隐藏的私人支持字段在基类中,因此,在基类触发的事件是不可见的派生类的客户。 现在我改变了同样的话: B B =新的B() ..
发布时间:2016-08-29 14:25:19 C#/.NET

C# - 值类型的Equals方法 - 为什么编译器使用反射?

我刚刚碰到的东西pretty怪我:当您使用equals()方法的值类型(如果这种方法还没有被重写,当然),你得到的东西的非常非常的慢 - 字段使用反射相比,一对一!如: 公共结构MYSTRUCT { INT I; } (......) MYSTRUCT S,T; s.i = 0; t.i = 1; 如果(s.Equals(t))的/ * s.i将比较通过反射此处t ..
发布时间:2016-08-29 14:23:44 C#/.NET

为什么C#生成同样的源 - code不同的EXE文件?

每当我们编译我们的C#应用​​程序时,我们最终有不同的MD5签名EXE文件。我们除了重新编译在同一台机器上,分​​钟。为什么不一样的源 - code产生相同的输出?有没有办法来解决这个问题? 解决方案 “所以每个组件有: 时间戳,在两个位置 匹配的PDB一个GUID 什么似乎是完全随机的GUID生成的每个编译。 的计数器显示哪些组件的版本是 - 建立只产生在随后的Visual ..
发布时间:2016-08-29 13:39:12 C#/.NET

生成自定义编译时警告C#

我使用VS2008,想创建一个编译时警告/基于自定义属性上的属性错误(如果可能)。 有两种情况利息我现在: [MyAttribute(typeof运算(MyClass的)] 在哪里MyClass的必须实现的接口。目前我在属性的构造断言这一点,但是这并不能很容易地追查,由于堆栈跟踪的性质:公共MyAttribute(类型MyClassType) { System. ..
发布时间:2016-08-29 13:18:50 C#/.NET

CLR VS JIT

什么是JIT编译器和CLR之间的区别?如果您编译code到IL和CLR将运行code,那么什么是JIT在做什么?是如何JIT编译通过增加仿制药的CLR改变? 解决方案 的JIT是CLR的一个方面。 具体来说它负责改变由原始语言的编译器(CSC.EXE用于Microsoft C#例如)制作成机器code原产于当前处理器(和架构CIL / MSIL(以下称为IL)的一部分它暴露了当前进程,例 ..
发布时间:2016-08-29 12:47:17 C#/.NET