建材秒知道
登录
建材号 > 设计 > 正文

程序设计语言|文法

无辜的书包
细心的鸭子
2023-02-27 09:20:32

程序设计语言|文法

最佳答案
过时的溪流
火星上的曲奇
2025-08-09 12:42:04

从产生语言的角度出发,给出文法和语言的定义。

所谓产生语言,是指制定出有限个规则,借助他们就能产生此语言的全部句子。

1.文法的定义

描述语言语法结构的规则称为文法。文法是一个四元组G=(Vn,Vt,P,S)。

Vn是一个非空有限集,其每个元素称为非终结符;

Vt是一个非空有限集,其每个元素称为一个终结符;

Vn∩Vt=∅,Vn和Vt不含公共元素;V=Vn∪Vt,称V是文法G的词汇表,V中的符号称为文法符号。

P是产生式的有限集合,每个产生式形式为“α→β”的规则,α是产生式的左部,α∈V+且α中至少含有一个非终结符,β是产生式的右部,β∈V*,β是α的一个候选式。

S∈Vn,称为开始符号,它至少要在一个产生式中作为左部出现。

2.文法的分类

文法有4种类型:0型、1型、2型、3型。这4类文法之间的差别在于对产生式要施加不同的限制。

0型文法:G的任何产生式α→β,均有α∈(Vn∪Vt)+且α中至少含有一个非终结符,β∈(Vn∪Vt)*;

(对0型文法的每条产生式分别施加以下限制,则可得以下文法。)

1型文法:G的任何产生式α→β(S→ε除外)均满足|α|≤|β|(|x|表示x中文法符号的个数,ε是空串);

2型文法:G的任何产生式形如A→β,其中A∈Vn,β∈(Vn∪Vt)*;

3型文法:G的任何产生式形如A→a或者A→aB(或者A→Ba),其中A,B∈Vn,a属于Vt;

0型文法是短语文法,其功能相当于图灵机,任何0型语言都是递归可枚举的。

1型文法是上下文有关文法,对非终结符的替换必须考虑上下文,且不允许替换成空串ε。

2型文法是上下文无关文法,非终结符的替换无须考虑上下文。

3型文法等价于正规式,因此也被称为正规文法或线性文法。

词法分析的词法规则一般用3型文法;

语法分析的语法规则一般用2型文法;语法分析方法有很多种,根据产生语法树的方向,可分为自底向上和自顶向下两类。

最新回答
犹豫的钢铁侠
英勇的铅笔
2025-08-09 12:42:04

这是编译原理里的问题

文法 可以通俗的说是一个东西产生所遵循的规则,如语言中的主谓宾,就是语言的文法

G[S] 这是文法G :S->0S0 S->1 这就是他里面的规则

S->0 S 0 或S->1

N 表示一个数遵循文法G

n->0s0->00s00->00100

或者说他永远遵循文法G中S->0s0规则那么只可能为0

若遵循文法S->0 S 0 或S->1则大于0

朴实的红酒
贪玩的蓝天
2025-08-09 12:42:04
编译原理IF条件语句的翻译程序设计—简单优先法、输出四元式通过设计、编制、调试一个条件语句的语法及语义分析程序,加深对语法及语义分析原理的理解,并实现词法分析程序对单词序列的词法检查和分析。具体做到以下几点:①对输入语句进行词法分析。将输入的字符串进行扫描和分解,识别出一个个合法的单词。单词种类包括:关键字,标识符,运算符,常数和界限符②进行语法分析。编写条件语句的相应文法,按照语法分析方法中的简单优先分析法为文法设计简单优先表,对词法分析得到的单词序列进行语法分析,以判别输入的语句是否属于该文法的条件语句。③语法制导翻译。设计中间代码(四元式)序列的结构及属性文法,运用语法制导翻译,在进行语法分析的同时,执行相应的语义规则描述的动作,从而实现语义处理,生成中间代码以四元式的形式输出。④错误提示。对不同的错误给出简略描述,并终止程序的继续执行。下载地址如下,有你要的东西!pile.rar

甜美的雪碧
欣慰的鼠标
2025-08-09 12:42:04

乔姆斯基(Chomsky)按产生式的类型把文法分为四种类型:0、1、2、3型文法。

*在下文中的产生式中,箭头左边的大写字母为严格的非终结符,而其左边的小写字母不严格要求为非终结符,如[0型文法]中的第2条产生式。

【0型文法】

产生式形式:α→β

要求:箭头左边的α 至少 含有 一个非终结符 , 其余 不加任何限制

    例如,G:C→AaB

                     aA→a

                     B→b|Bb

【1型文法】

产生式形式:α→β

要求: |α|≤|β| (产生式左端的长度<=右端的长度),S→ε除外。

例如G: C→aAB

               aA→aBa

               B→b|Bb 

【2型文法】(上下文无关文法)

产生式形式:A→β,A∈VN(终结符) ,β∈V *(VN∪VT,即可为终结符也可为非终结符) 

说明:当以β替换A时,与A的上下文环境无关;

          大部分程序设计语言近似于2型文法。

【3型文法】(正规文法 / 右线性文法)

产生式形式:A→a,A→aB,

说明:a∈VT(终结符) ,  A,B∈VN(非终结符),即产生式右端的第一个符号必须为 终结符

例如 G:A→aB

              B→b|bB

【其他说明】对于这四种类型的文法:

*包含关系:0 >1 >2 >3 (以'>'代替包含符,'A>B'译为A包含B)

*严格程度:3 >2 >1 >0

*判断文法所属类型的顺序:3 → 2 → 1 → 0

追寻的冷风
粗心的嚓茶
2025-08-09 12:42:04

       如果你仅仅有一般程序设计的基础,直接要设计一门语言是有难度的。结合我个人的经验,以下路径应该比较适合语言初学者:你需要有基本的编译原理常识。构造基本的编译原理常识,一方面来自于你对已有语言的使用经验,了解基本术语。比如我用C,那么我起码知道语言要素包括宏、表达式、语句、语句块、函数、指针等;我还知道C语言有编译、链接和执行三个阶段。这些基本概念对你宏观掌握你的学习进程是很有必要的。另外一方面编译原理的常识,要来自图书。比如龙书、SICP。

       在这一步,你得知道大部分语言的处理都要分为词法、语法、语义和代码生成四个阶段。每个阶段,分别是做什么的。了解具体的编译算法。了解到什么程度,取决于你使用第三方工具,还是需要自己从字符开始处理。个人建议,乔姆斯基文法体系、(扩展)巴克斯范式(EBNF),正则表达式,和LL(1)的递归下降分析法是必须要掌握的。对LL(k),LR(k)要有概念。其中,四则运算表达式的分析是很好的练习。对语法的感觉。

       初学者设计语言的难度有两点。第一,不知道什么样的语法/语义是你需要的;第二,不知道你设计的文法能否实现。你是需要一个类似于自然语言的脚本,还是只是一个表达式。经过3阶段的训练我认为你已经有了独立撰写语法的能力。可以写一个基础版本的出来。实现你的语言,特别是词法和语法部分。这一步最好能Log出尽可能多的信息,例如词列表并打印出分析树。

优雅的往事
斯文的指甲油
2025-08-09 12:42:04
编译原理中的语法和文法是不一样的,但却融会贯通。

在计算机科学中,文法是编译原理的基础,是描述一门程序设计语言和实现其编译器的方法。

文法分成四种类型,即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型语言。上下文有关文法、上下文无关文法和正规文法产生的语言分别称为上下文有关语言、上下文无关语言和正规语言。

 

虚幻的飞鸟
过时的诺言
2025-08-09 12:42:04
面向对象程序设计语言的语法机制有多态性,继承性,对象和类。程序设计语言是用于书写计算机程序的语言。语言的基础是一组记号和一组规则。根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。程序设计语言有3个方面的因素,即语法、语义和语用。语法表示程序的结构或形式,亦即表示构成语言的各个记号之间的组合规律,但不涉及这些记号的特定含义,也不涉及使用者。语义表示程序的含义,亦即表示按照各种方法所表示的各个记号的特定含义,但不涉及使用者。

背后的小伙
火星上的嚓茶
2025-08-09 12:42:04
c-free和vc++6.0都可以,比较推荐c-free吧,毕竟是有中文的,VC也有中文,不过是汉化过的,这两者也没啥区别,主要是VC不太兼容win7和win8,毕竟较老了,而C-free可以兼容win7,win8我不知道,没在那里用过,可以试一下C-free,这两者都要在创建C文件的之后加后缀.c才能保存为C文件

粗暴的山水
天真的手链
2025-08-09 12:42:04
拖动自动机显示画面中各个节点的位置

节点之间的转移关系弧线应随着节点移动

各个节点的位置应随着自动机被保存和装入

使用说明书:界面说明、人机交互方法

解决方案、设计思想、系统框架的概述

案例文档:角色说明、案例说明(事件流)、案例图、

静态模型:类图、类文档(属性、方法)