
1、入门是从Basic语言开始的,大概熟悉程序的基础语法与逻辑后,进阶C语言。
2、现代很多语言都是从C语言发展而来的,所以可以以C语言做跳板进阶其他面向对象的高级语言。慢慢接触C++,或高级编程语言(如:Net,Java 等),网页设计相关的语言(HTML+CSS+Javascript)。
3、编程入门后,主要看计划的发展方向。程序设计的核心在于其逻辑。把程序设计的逻辑搞懂了,学什么语言都很快。
首先,我们给出语义属性的定义。
定义 51一文法符号X∈VN∪VT的语义性质称为该文法符号的语义属性(Semantic Attributes),简称为属性。我们用A(X)表示X的所有属性的集合。每个属性表示X的一个特定性质,并可任意指定其取值范围。下面,我们将用Xa表示A(X)中的属性a。
由定义51可知,文法符号的属性就是它的语义性质。属性可表征诸如数、符号串、类型、存储空间和其它需表征的实体。就终结符号而言,它至少有一种属性,即词文。当然,它还可能具有其它属性,例如,对321中所定义的无符号数,单词“123”就是它的词文;而其数值和类型(整型)是它的另外两个属性。一般来说,终结符号的属性是其内在性质;当然也有些属性将从其它符号的属性中获取。例如,变量标识符的类型属性,将从类型定义语句中获取,也就是说,它是通过语法树从其它符号的属性中获取的。对非终结符号而言,其属性之值均须从其它符号的属性经计算而得,或者说,是由其它符号的属性定义的。
可见,各个文法符号的属性之间,可能存在某种依赖关系,这种依赖关系可用属性规则(语义规则)来定义。
定义 52设p:X0→X1X2…Xn∈P是文法G的一个产生式,则与p相关联的属性规则集合
定义 53对每个产生式p:X0→X1X2…Xn∈P,设属性定义性出现的集合为
AF(p)={Xia|Xia=f(Xk1ak1,Xk2ak2,…,Xkmakm)∈R(p),而0≤kj≤n}
若Xi是产生式左部的非终结符号(即i=0),则称属性Xia是综合属性(Synthesized Attributes);若Xi出现在产生式的右部(即1≤i≤n),则称Xia是继承属性(Inherited Attributes)。
如果在一棵语法树中将每个结点均视为由若干个域组成的记录(或结构),则可将其中的一些域用来存放相应文法符号诸属性之值,并可用属性来为这些域命名。通常我们将每个结点都标注相应属性值的语法树称为加注语法树(Annotated Syntax Tree)或染色树(Decorted Syntax Tree)。于是,由定义53可知:在加注语法树中,一个文法符号X在相应结点的综合属性之值,由其子结点的属性和(或)X的其它属性,通过相关属性规则经计算而得,故综合属性的求值在语法树中是按自下而上的方式进行的;X的继承属性之值则由X的父结点和(或)其它兄弟结点来定义,故继承属性的求值将按自上而下的方式进行。
在引入属性的概念之后,我们就可以定义属性文法了。
定义 54属性文法AG是一个形如
AG=(G,A,R,B)
的四元组,其中:G=(VN,VT,P,S)是已简化的前后文无关文法;A=∪X∈VA(X)是属性的有限集合;R=∪p∈PR(p)是属性定义规则的有限集;而B=∪p∈PB(p)是条件的有限集合,B(p)用于描述使规则R(p)有效的条件(请注意,并非每条规则R(p)都必须有条件B(p)。若B(p)缺省,则意味着无条件使用该规则);且同时满足:
(1) 对G中任意两个不同的文法符号X和Y而言,属性集合A(X)和A(Y)不相交,即
A(X)∩A(Y)=(X≠Y)
(2) 在G的任意一个语法树中,对文法符号X的每一次出现,可用于计算X的每个属性Xa(Xa∈A(X))之值的规则至多有一条。
由定义54可知,属性文法实际上就是对前后文无关文法的一种拓广。另外,定义还表明,每个产生式中的任一文法符号的属性计算规则只能是惟一的,且任一文法符号的综合属性集与继承属性集不相交,即
AS(X)∩AI(X)=
其中:
AS(X)={Xa|p:X→α∈P,Xa∈AF(p)}
AI(X)={Xa|q:Y→μXυ∈P,Xa∈AF(q)}
下面,我们以一个简单赋值语句的文法为例,来说明属性文法的应用。为便于理解,我们用一英语单词(或词组)而不再像前几章那样用字母表示文法符号。并且约定,用大写字母开头的符号为非终结符号,而用小写字母开头的符号为终结符号。
编译原理中的语法和文法是不一样的,但却融会贯通。
在计算机科学中,文法是编译原理的基础,是描述一门程序设计语言和实现其编译器的方法。
文法分成四种类型,即0型、1型、2型和3型。这几类文法的差别在于对产生式施加不同的限制。
形式语言,这种理论对计算机科学有着深刻的影响,特别是对程序设计语言的设计、编译方法和计算复杂性等方面更有重大的作用。
多数程序设计语言的单词的语法都能用正规文法或3型文法(3型文法G=(VN,VT,P,S)的P中的规则有两种形式:一种是前面定义的形式,即:A→aB或A→a其中A,B∈VN ,a∈VT,另一种形式是:A→Ba或A→a,前者称为右线性文法,后者称为左线性文法。正规文法所描述的是VT上的正规集)来描述。
四个文法类的定义是逐渐增加限制的,因此每一种正规文法都是上下文无关的,每一种上下文无关文法都是上下文有关的,而每一种上下文有关文法都是0型文法。称0型文法产生的语言为0型语言。上下文有关文法、上下文无关文法和正规文法产生的语言分别称为上下文有关语言、上下文无关语言和正规语言。
文法是用于描述语言的语法结构的形式规则。任何一种语言都有它自己的文法,不管它是机器语言还是自然语言。就像自然语言里有主谓宾这样的文法一样,机器语言也有描述它语言构成的特定文法,如:
S->ABA
A->0|2|4|6
B->BA|3
就是一种文法。
文法可以定义为一个四元组。
没学过编译原理,看描述,是让写一个脚本执行软件。
终结符我查了下,就是不可再分的。比如iε。
输入是EGTSFI/ε组成的字符串。
规则需要预处理。注意转意符在字符串中的效果。因为有/字符。
不会c或c++,只会c#。你可以到贴吧发帖。强人工智能吧 就挺好。算法吧有点乱。
最重要的,不要钱。
以上就是关于编程入门先学什么 从程序的基础语法开始全部的内容,包括:编程入门先学什么 从程序的基础语法开始、很多编译程序采用的基于属性文法的语义处理过程称为什么、编译原理中的语法和文法一样吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)