精华内容
下载资源
问答
  • Scaffold-DbContext -Connection "Data Source=localhost;Initial Catalog=GFWX;User ID=sa;Password=1" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Force
  • FIRST

    千次阅读 2019-10-23 00:51:52
    FIRST集 1.什么是FIRST集? 一个符号的FIRST集表示这个符号可以推导出的句子的首符号的集合。 举个例子:A→aa|bb|cc。a,b,c是终结符,则FIRST(A)={a,b,c} 通过上面的定义解释一下,符号A可以推导出三个句子{aa,bb,...

    FIRST集

    1.什么是FIRST集?

    一个符号的FIRST集表示一个符号或句型可以推导出的句子的首符号的集合。

    举个例子:A→aa|bb|cc。a,b,c是终结符,则FIRST(A)={a,b,c}

    通过上面的定义解释一下,符号A可以推导出三个句子{aa,bb,cc},那么,这三个句子的首符号集合FIRST(A)={a,b,c}。

    2.FIRST集求法

    再给出最终结论之前,首先看以下的几种情况

    求一个终结符号的FIRST集

    终结符号经过推导(0步推导)后,推导出自己本身,所以如果a是一个终结符号,则FIRST(a)={a}

    可以推导出空串的非终结符号的FIRST集

    如果一个非终结符号可以推导出空串,则有以下两种情况:

    在这里插入图片描述

    在这里插入图片描述

    对于经过若干步可以推导出空串的非终结符号,有以下结论

    在这里插入图片描述

    不能推导出空串的非终结符号的FIRST集

    如果一个非终结符号不能推导出空串,它可以被形式的描述为:

    在这里插入图片描述

    对于上面的情况,首先FIRST(Y1)-{ε}(这里减去{ε}的原因下面说)是FIRST(X)的一个子集,因为经过推导之后,用产生式的右部(多个Y)替换了X,则第一个字符就是Y1,所以,FIRST(Y1)-{ε}是FIRST(X)的一个子集(或者说,将FIRST(Y1)-{ε}加入FIRST(X))。

    减去{ε}的原因:如果Y1可以推导出ε,则ε属于FIRST(Y1),但是仅仅Y1可以推导出空串,还不足以说明X可以推导出空串,只有X可以推导出ε,才可以将ε加入FIRST集(上面讨论的情况)。Y2可能不能推导出空串,所以X就不能推导出空串。

    举个例子:

    在这里插入图片描述

    如上图的例子,我们可以看到,我们上面讨论的Y1就是A,所以,FIRST(A)-{ε}是FIRST(X)的一个子集(或者说将FIRST(A)-{ε}加入FIRST(X)),因为X只有一条产生式,这个产生式有这一条“线索”,因此分析到这里,就分析结束了,也就是说FIRST(X)=FIRST(A)-{ε}。

    所以,问题变成了求FIRST(A),这里,A有三个产生式,分别推导出终结符号a,b,c。也就是说,对于每一个产生式,Y1分别为a,b,c。FIRST(a)-{ε},FIRST(b)-{ε},FIRST( c)-{ε}都是FIRST(A)的子集,也就是说,FIRST(A)=FIRST(a)-{ε}+FIRST(b)-{ε}+FIRST( c)-{ε}={a,b,c}(终结符号的FIRST集就是它自己构成的集合,我们上面讨论过的)

    继续分析,上面的情况,我们忽略了Y1可能推导出空串的情况。也就是说,如果将文法做一下修改,变成如下分文法:

    在这里插入图片描述

    想一下,如果X在推导过程中,A使用了空串产生式,那么,B就变成了第一个符号,因此FIRST(B)-{ε}也应该是FIRST(X)的子集。也就是说,如果Y1有空串产生式,则Y2的FIRST集-{ε}是FIRST(X)的子集。

    继续进行归纳,如果Y1和Y2都有空串产生式,再将文法修改一下:

    在这里插入图片描述

    如果在X推导过程中,A和B都使用空串产生式,则C就变成了第一个符号,因此FIRST( C)-{ε}也应该是FIRST(X)的子集。也就是说,如果Y1,Y2有空串产生式,则Y3的FIRST集-{ε}是FIRST(X)的子集。

    通过归纳,我们可以得到结论,设产生式X→Y1Y2Y3…Yk。则,如果Y1Y2Y3…Yi-1可以推导出空串,也就是说从Y1到Yi,每一个符号都能推导出空串,则Yi的FIRST集-{ε}是FIRST(X)的子集。Y1,Y2…Yi-1这些符号不使用空串产生式时,它们中的每一个都可能成为第一个符号,它们的FIRST集-{ε}都是FIRST(X)的子集。也就是说,对于这种情况,FIRST(X)=FIRST(Y1)-{ε}+FIRST(Y2)-{ε}+…+FIRST(Yi)-{ε}

    当然,如果Y1Y2Y3…Yk可以推导出空串,也就是X推导出了空串,这就变成了我们上面讨论的情况。

    3.总结

    1. 如果X是终结符号,则FIRST(X)={X}。
    2. 如果X是非终结符号,且X可以推导出ε,则将ε加入FIRST(X)。
    3. X→Y1Y2Y3…Yk,若ε∈FIRST(Y1Y2Y3…Yi-1)(i<k),则将(FIRST(Y1)-{ε}+FIRST(Y2)-{ε}+…+FIRST(Yi)-{ε})加入FIRST(X),否则,将(FIRST(Y1)-{ε})加入FIRST(X)。如果Y1Y2Y3…Yk可以推导出空串,则就变成了情况2。
    4. 补充一条规则,X→Y1Y2Y3…Yk,FIRST(X)⊇FIRST(Y1Y2Y3…Yk)

    总结方法

    如果要求FIRST(X),首先找到X在左部的产生式,然后对这些产生式应用上面的规则,每应用一次规则,会计算出一个FIRST集的子集,将这些子集加入FIRST(X)。

    需要应用两次规则的产生式:对于X→Y1Y2Y3…Yk,如果Y1Y2Y3…Yk可以推导出ε,则就说明X可以推导出ε,因此,就可以利用规则2和规则3,也就是两条规则

    举个例子:

    在这里插入图片描述

    求FIRST(E),首先,找到E在左部的产生式

    在这里插入图片描述

    可以看到,产生式的形式属于,X→Y1Y2Y3…Yk,首先,将FIRST(T)-{ε}加入FIRST(X)。(应用第三条规则,因为T不能推导出空串,所以不需要讨论E’

    问题又变成了求FIRST(T),找到T在左部的产生式,

    在这里插入图片描述

    同理,将FIRST(T)=FIRST(F)-{ε}(同样,因为F不能推导出ε,而且这里只有一条产生式,且只用了一次规则,所以,可以确定FIRST(T)=FIRST(F)-{ε})

    因此,又要先求FIRST(F)
    找到F在产生式左部的产生式
    在这里插入图片描述
    可以看到,F在左部的产生式有两个,因此,FIRST(F)=FIRST(()-{ε}+FIRST(i)-{ε}={(, i}

    FIRST(T) = FIRST(F)-{ε} = {(, i}
    FIRST(E) = FIRST(E)-{ε} = {(, i}

    经过上面的分析,我们得到FIRST(E)=FIRST(T)=FIRST(F)={(, i}

    接下来分析稍复杂的FIRST(E’),还是那样,需要找到E’在产生式左部的产生式

    有两个产生式,一个是空串产生式,应用规则3;另一个应用规则3,再将这两个结果求并集即可,FIRST(E’)={ε}+(FIRST(+)-{ε})={ε, +}

    同理,FIRST(T’)={ε, *}

    FIRST(E’T’)=? 句型E’T’是符合应用两次规则的句型。
    第一次应用规则:应用规则3,(FIRST(E’)-{ε}+FIRST(T’)-{ε})是FIRST(E’T’)的子集。

    第二次应用规则:应用规则2,又因为E’T’可以推导出空串,所以ε∈FIRST(E’T’)。

    将两条“线索”得到的结果求并集,FIRST(E’T’)=FIRST(E’)-{ε}+FIRST(T’)-{ε}+{ε}={+}+{*}+{ε}={+,*,ε}

    展开全文
  • spi MSB first or LSB first

    万次阅读 2017-04-12 13:54:22
    LSB:least significant bit 表示二进制数据的最低位 ...spi传输数据时有两种方式:MSB first 和LSB first 例如: ad9528 datasheet: SPI MSB-/LSB-First Transfers The AD9528 instruction w

     LSB:least significant bit 表示二进制数据的最低位

    MSB : most significant bit 表示二进制数据的最高位

    spi传输数据时有两种方式:MSB first 和LSB first

    例如:

    ad9528 datasheet:

    SPI MSB-/LSB-First Transfers
    The AD9528 instruction word and payload can be MSB first or
    LSB first. The default for the
    AD9528 is MSB first. The LSB first
    mode can be set by writing a 1 to Register 0x0000, Bit 1 and Bit 6.
    Immediately after the LSB first bit is set, subsequent serial control
    port operations are LSB first.


    展开全文
  • Head First Excel

    千次下载 2014-08-28 16:29:31
    Head First Excel 英文版, 0分分享
  • Head First软件开发

    千次下载 热门讨论 2015-03-21 11:49:33
    Head First 软件开发 中文扫描版
  • EF下 CodeFirst、DBFirst与ModelFirst分析

    千次阅读 2016-07-29 17:38:20
    分别是Database-First,Model-First,Code-first: 1.Database First是基于已存在的数据库,利用某些工具(如Vs提供的EF设计器)创建实体类,数据库对象与实体类的匹配关系等,你也可以手动修改这些自动生成的代码及...
    

    EF4.1有三种方式来进行数据操作及持久化。分别是Database-First,Model-First,Code-first:
    1.Database First是基于已存在的数据库,利用某些工具(如Vs提供的EF设计器)创建实体类,数据库对象与实体类的匹配关系等,你也可以手动修改这些自动生成的代码及匹配文件。
    2.Model First 这种方式是先利用某些工具(如VS的EF设计器)设计出实体数据模型及他们之间的关系,然后再根据这些实体、关系去生成数据库对象及相关代码文件。
    3.Code First 这种方式需要先写一些代码,如实体对象,数据关系等,然后根据已有的代码描述,自动创建数据对象,这种方式在前一篇文章已经简单说过了。但其实这种方法与Model First是非常类似的。我们自己写的代码,其实就是用代码表示实体模型,而Model First是用可视化的方式描述了实体模型。

    建议看看这几篇文章:

    EF框架step by step(1)—Database-First

    EF框架step by step(2)—Model-First

    EF框架step by step(3)—Code-First

     

        下面分析这三种方式的优缺点:

            Database-First模式明显性能会差点,但是它很适合初学者,或者是比较急的小型项目。还有一点,我们在做项目时可能不容易体会到它的好处,但如果做数据库结构比较成熟稳定的产品时,我们可以很轻松的使用数据库生成实体模型,从而实现快速开发。

            Model-First模式优点是开发人员能够在模型设计完成后,可以利用VS等工具快速生成数据库脚本。缺点是设计模型时完全了解数据库的结构,在模型中手动添加表关系,并且生成的脚本有点不简洁。  

            Code-First模式优点是性能比较好,且代码较少冗余。不过它的缺点也有很多,由于都是代码编写的,比如更新数据库。

     

        这三种方式各有利弊,使用过程中我们要按实际需求来选择。这些工具的出现和使用,大大提高了开发人员的开发速度,使得数据库、模型等出现了复用、扩展的可能,在应对变化方面也做了足够的工作。这些工具所体现的服务思想更提醒我们要全方位去考虑问题,在产品中做好应对变化的措施。

     

    还是推荐code first,虽然EF Team没明说,但是从各种文档可以推断出来,他们本身是推荐使用code first的。
    从我个人来说,我更习惯使用class代码来定义和表达各个实体的关系。另外code first也更容易做版本管理。
    下一版本的EF7将code first放到了更重要的位置,model first可以说是名存实亡。总体来说,code first是趋势。
    展开全文
  • modelfirst和dbfirst区别?

    千次阅读 2019-06-23 15:01:15
    首先对于EF中先出现的datebase first和model first两种编程方式,其的区别根据字面意思很容易能够理解。 datebasefirst就是代表数据库优先,那么前提就是先创建数据库。 model first就是代表model优先,那么前提也...

    首先对于EF中先出现的datebase  first和model first两种编程方式,其的区别根据字面意思很容易能够理解。

    datebase first就是代表数据库优先,那么前提就是先创建数据库。

    model first就是代表model优先,那么前提也就是先创建model,然后根据model自动建立数据库。

    这两EF的编程方式在使用的过程中的区别为:

    在添加ADO.NET实体数据模型的时候,database  first选择的是从数据库生成。

    在数据结构发生变化的时候,database  first编程方式中是选择从数据库更新模型,因此就导致了database  first是以数据库为主;而Model  first选择的是空模型生成。

    当数据结构发生变化的时候,model  first选择的是从模型生成数据库。

    展开全文
  • head first python 中文书签版 head first python 中文书签版 head first python 中文书签版 head first python 中文书签版 head first python 中文书签版
  • C# EF+SQLite.CodeFirst 从入坑到无底洞 本文所介绍的是真正的EF+CodeFirst,不需要提前建表,由代码自动生成! 进行前需要准备的: 下载Sqlite Expert http://www.sqliteexpert.com/download.html 下载免费版...
  • Head First Java 中文高清版Head First Java 中文高清版Head First Java 中文高清版
  • FIRST集合基本构造

    千次阅读 2020-05-16 23:05:31
    FIRST集合 定义 令G是一个不含左递归的文法,对G的所有非终结符的每个候选a定义它的终结首符集FIRST(a)为: FIRST(α) = { a│α ⇒∗ a…, a∈VT } 若α⇒∗ε,则规定ε∈FIRST(α)。 FIRST(α)被定义为从...
  • HeadFirst 设计模式

    热门讨论 2011-06-26 17:34:36
    HeadFirst 设计模式 HeadFirst 设计模式 HeadFirst 设计模式 HeadFirst 设计模式 HeadFirst 设计模式 中文版
  • EF下CodeFirst、DBFirst与ModelFirst分析

    万次阅读 2015-03-30 20:46:41
    通过项目,我们了解到EF框架有三种数据...分析这三种方式的优缺点, Database-First模式明显性能会差点,但是它很适合初学者,或者是比较急的小型项目。  Model-First模式优点是开发人员能够在设计模型时完全了解数
  • 通过项目,我们了解到EF框架有三种数据持久化的方式,也就是标题中我所提到的三种。... 1.Database First是基于已存在的数据库,利用某些工具(如VS提供的EF设计器)创建实体类,数据库对象与实体类的...
  • First集Follow集通俗易懂的讲解加实例First ... 以非终结符开头,先把C的First放到A的First里再看如果C的First中有空(∈)的话就把D的First放到A的First里(因为如果C的First为空,那么D的First就有可能紧挨
  • :first 获取第一个元素。 :first-child 选择器选取属于其父元素的第一个子元素的所有元素。 first() 返回被选元素的首个元素。 测试代码如下: Insert title here ul_1 item 1 ul_1 item 2 ul_1 item ...
  • head first JavaScript源代码

    热门讨论 2013-05-07 11:00:24
    head first JavaScript源代码
  • Java8中findAny和findFirst的区别

    万次阅读 2019-10-29 20:31:11
    试验了一下java stream中的findAny和findFirst,发现都返回了列表中的第一个元素。那么,这两种方法的区别是什么呢? 查看了一下Java API document: findFirst: findFirst Optional<T>findFirst() ...
  • head first java 中文版全部

    热门讨论 2012-03-07 13:48:13
    head first java 中文版 全部章节都有,很难得 《Head First Java》是本完整的面向对象(object-oriented,OO)程序设计和Java的学习指导。此书是根据学习理论所设计的,让你可以从学习程序语言的基础开始一直到包括...
  • 很多跨境电商的朋友都会问到,WorldFirst怎么样?万里汇支付可靠不?下面我们就从安全、服务、费率等几个方面,对跨境收款工具万里汇WorldFirst做全面的解析! 一、WorldFirst简介 WorldFirst 是 2004 年成立于...
  • Head First Servlets and JSP PDF

    千次下载 热门讨论 2014-03-26 11:21:14
    Head First Servlets and JSP PDF
  • A FIRST COURSE IN PROBABILITY高清pdfA FIRST COURSE IN PROBABILITY高清pdfA FIRST COURSE IN PROBABILITY高清pdf
  • 使用:first-child发现选择不起效,网上查了发现自己对:first-child和:first-of-type区别的认识不到。 :first-child 匹配父元素的第一个子元素E。 &lt;ul&gt; &lt;li&gt;列表项一&lt;/li&...
  • 编译原理求FIRST集、FOLLOW集和SELECT集

    万次阅读 多人点赞 2019-07-02 15:29:50
    觉得解释比较不错。 所有大写字母代表非终结符,小写字母代表终结符,省略号代表未知数目(可能为0)的不确定类型的文法符号。 First集合: First集合顾名思义就是求一个文法符号串所...求First集合可分如下几...
  • 深入浅出EF之ModelFirst和DBFirst

    千次阅读 热门讨论 2015-02-01 07:54:12
    在上篇博文中,小编主要简单的介绍了一下EF的一些基础知识,其中,小编蜻蜓点水的提了一下ModelFirst和DBFirst,ModelFirst先设计实体,然后根据模型生成数据库,DBFirst根据数据库生成模型,两个方向都是可以了,两...
  • jQuery中选择器:first和:first-child的区别 :first选择器 :first选择器用于选择匹配到的第一个元素,将其封装为jQuery对象后返回。其效果等价于:eq(0)选择器 :first-child选择器 :first-child选择器用于选择作为...
  • WorldFirst怎么提现?我们在跨境电商平台,如亚马逊、CDiscount、新蛋、eBay-PayPal的货款,免费入账到万里汇WorldFirst帐户后,就可以从万里汇WorldFirst提现到国内银行卡了。提现之前需要绑定国内银行卡,还没绑定...
  • css系列教程1—选择器全解css伪元素选择器伪元素选择器,用于选择元素内的局部,包括first-letter、first-line等代码如下:p:first-letter{ /* first-letter行内元素首字母 */ } p:first-line{ /* first-
  • FIRST 和 FOLLOW求解

    千次阅读 2019-04-17 21:25:36
    (一)FIRST集合 概念:FIRST(α)定义为可以从α推导得到的串的首符号的串的集合。换言之,就是由非终结符推出的所有的开头符号(终结符)或者是ε,即如果α=*=>ε,那么ε也在FIRST(α)中. 1.FIRST的计算...
  • jQuery中:first和:first-child的区别

    千次阅读 2016-07-18 20:48:58
    jQuery的:first选择器用于获取匹配到的第一个元素,将其封装为jQuery对象并返回。:first选择器等价于:eq(0)选择器。jQuery的:first-child选择器用于匹配作为父元素的第一个子元素的元素,将其封装为jQuery对象并返回...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,584,631
精华内容 1,033,852
关键字:

first