导航:首页 > 编程语言 > bnf编程

bnf编程

发布时间:2022-04-11 09:31:03

Ⅰ 跪求编程大神用C++实现语法分析树

故障只要不是再PS/2接头处,一般维修起来不难。通常是由于线路比较短,或比较杂乱而导致鼠标线被用力拉扯的原因

Ⅱ 每一个编程语言都有自已的语法吗

当然有自己的语法,要不怎么能叫一种语言而不同于其它的编程语言?一般你要只是学语法的话,可以看语法图,一般程序设计语言的语法图可以用BNF(Backus Naur范式)来描述。
常用的符号有:
::=定义为
|或者
[]0次或1次出现
()0次或多次出现
<>一个非终结符
如:标识符(就是做变量名,程序名等名字的程序文本)一般是由字母开始的,以字母,数字后继的,那么标识符就可以这么写:
<数字>::=0|1|2|3|4|5|6|7|8|9
<字母>::=<大写字母>|<小写字母>
<大写字母>::=A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z
<小写字母>::=a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z
<字母或数字>::=<字母>|<数字>
<标识符>::=<字母>(<字母或数字>)
根据以上几条BNF语言,你就能写出正确的程序。

Ⅲ 请问BNF范式中中括号和大括号可以匹配0次吗

请问BNF范式中中括号和大括号可以匹配0次,这就是不匹配了。

Ⅳ 编程的语言沿革

1946
Konrad Zuse,一位德国工程师,他躲藏在巴伐利亚附近的阿尔卑斯山上时,独立开发了Plankalkul。他把该项成果应用在其它的事物中,比如国际象棋。
1949
Short Code ,第一种真正在电子计算设备上使用的计算机语言,尽管他是一个纯手工编译的的语言。
1951
Grace Hopper,为Remington Rand工作,是在第一个着名的编译器——A-o上开始设计工作。当Rand在1957年发布这个语言时,它被称为MATH-MATIC。
1952
Alick E. Glennie ,他利用自己在曼彻斯特大学的课余时间,发明了一个名为AUTOCODE的编程系统,一个未能成型的编译器。
1957
FORTRAN——数学公式转换系统(FORmula TRANslating,FORTRAN名字的由来)——出现。开发队伍的领导者是John Backus,并且他还为ALGOL的开发和巴柯斯范式(BNF)做出了贡献。
1958
FORTRAN II出现,它能够处理子程序和连接汇编语言。由M.I.T的John McCarthy在LISP-LISt Processing上开始设计工作。原始ALGOL规范出现。该规范并未描述数据的输入输出方式;这些问题都留给独立的实现者。
20世纪六十年代末
Pascal 由瑞士Niklaus Wirth教授于设计并创立,具有简洁的语法,结构化的程序结构,是结构化编程语言,在许多学校的计算机语言课上教授的都是Pascal语言。
创建COBOL
1959
LISP1.5出现。COBOL在数据系统和语言大会(Conference on Data System and Languages)上被创建了。
编译器出现
1960
ALGOL 60 ,第一种结构化语言出现。它是结构化语言家族树中的根节点,并最终产生Pascal这样的语言。ALGOL成为六十年代中期至末期欧洲最为流行的语言。
六十年代早期,Kenneth Iverson开始语言方面的工作,最终产生了APL-A编程语言。它使用专门的字符集,为了正确地使用,你还需要兼容APL的I/O设备。
1962
APL被写入Iverson的《A Programming Language》一书中。
FORTRAN IV出现。
SNOBOL这个以“首字母拼词命名”的产品,在工作的初期就取得了绝对的成功,SNOBOL——面向字符串符号(StriNg Oriented symBOlic Language)语言。它衍生了其他一些以首字母拼词命名的产品:FASBOL,一个SNOBOL编译器(1971年),还有SPITBOL——Speedy ImplemenTation of snoBOL——同样在1971年。
1963
ALGOL 60进行修正。
PL/1的工作开始。
1964
APL360被实现。
在达特茅斯大学,John G.Kemeny和Thomas E.Kurtz教授发明了BASIC。最初的实现是一个编译器。第一个BASIC程序在1964年五月一日下午四点运行。PL/1发布。
1965
SNOBOL3出现。
1966
FORTRAN 66出现。
LISP 2出现。
在Bolt,Beranek和Newman开始了LOGO的工作。小组的头是Wally Fuerzeig,而且还包括Seymour Papert。LOGO中最着名的便是“龟作图”。
1967
SNOBOL4,功能获得极大加强的SNOBOL,出现了。
1968
ALGOL 68,相对于ALGOL 60它是个怪物。一些规范委员会的成员——包括C.A.R.Hoare和Niklaus Wirth——却赞同该计划。事实证明ALGOL 68是难以实现的。
ALTRAN,一个FORTRAN的变种出现。
COBOL被ANSI正式定义规范。
Niklaus Wirth开始Pascal方面的工作。
1969
500人参加在纽约Armonk的IBM总部召开的APL会议。APL的分发需求如此之大,该活动此后被人们称为“The March on Armonk”。
程序编写
1970
70年代早期,Charles Moore在他的语言Forth中写下了第一个有意义的程序。
Prolog方面的工作大约在此时开始了。
同样是在70年代早期的某一天,Xerox PARC由Alan Kay领导,开始了Smalltalk的设计工作。早期版本包括Smalltalk-72,Smalltalk-74和Smalltalk-76。
Pascal在CDC 6000-series电脑上的一个实现出现了。
Icon,SNOBOL4的一个后代产品问世。
1972
Konrad Zuse写的关于Plankalkul(见1946年)手稿终于出版了。
Dennis Ritchie设计了C。但是最终的参考手册却是在1974年发布的。
Prolog的第一个实现——Alain Colmerauer和Phillip Roussel的功劳。
1974
另一个COBOL的ANSI规范出现。
1975
Tiny BASIC,由Bob Albrecht和Dennis Allison设计(由Dick Whipple和John Arnold实现),运行在2KB内存的微型计算机上。一台4KB的机器是较为合适的,它将有2KB的内存应用于这个程序上。
Bill Gates和Paul Allen编写的一个BASIC版本以抽取每份拷贝版税的形式销售给MITS(Micro Instrumentation and Telemetry Systems)。MITS生产Altair,这是一种8080结构的微型计算机。
Scheme,一个LISP的“方言”,由G.L. Steele和G.J. Sussman设计。
Pascal用户手册和报告出版,Jensen和Wirth编写。许多人至今都认为它是Pascal方面权威的参考书籍。
B.W. Kerninghan描述了RATFOR——RATional FORTRAN。它是预处理程序,并且允许在FORTRAN中使用类C的控制结构。RATFOR被应用到了Kernighan和Plauger的“Software Tools”中,它出现在1976年。
PostScript
1976
Design System Language出现,它被认为是PostScript的先驱。
1977
MUMPS的ANSI标准出现——麻省总医院多用途程序设计系统(Massachusetts General Hospital Utility Multi-Programming System)。MUMPS最初被用来处理医疗记录,它只能识别字符串类型。随后被重新命名为M。
设计竞赛将导致Ada的产生。由Jean Ichbiah带领的Honeywell Bull队伍,即将赢得比赛。
Kim Harris和其他人建立了FIG,一个FORTH兴趣小组。他们开发了FIG-FORTH,售价大约为20美元。
70年代晚期的某天,Kenneth Bowles设计出了UCSD Pascal,它使得Pascal可以用在PDP-11和基于Z80 的电脑上。
Niklaus Wirth开始设计Mola,它Mola-2的先行者,Pascal的继承者。
语言程序
1978
AWK——一个文本处理语言,以它设计者Aho、Weinberger和Kernighan的名字命名。
FORTRAN 77的ANSI标准出现。
1980
Smalltalk-80出现。
Mola-2出现。
Franz LISP出现。
Bjarne Stroustrup开发了一个语言集——被总称为“C With Classes”——它成为C++的滋生土壤。
1981
Effort开始成为一个LISP的“公共方言”,常被人称作Common LISP。
日本开始第五代电脑系统工程。主要语言是Prolog。
1982
ISO Pascal出现。
PostScript出现。
1983
Smalltalk-80公布:它由Goldberg等人完成。
Ada出现。他的名字来自Lovelace女伯爵Augusta Ada Byron,她是英国诗人拜伦的女儿。因其在巴贝奇分析机上设计了解伯努利方程的一个程序,而被誉为第一位女程序员。在1983年,国防部指导的全新“任务评定”应用程序是使用该语言编写的。
1983年的后期和1984年早期,微软和Digital Research共同发布第一个微型计算机的C编译器。
七月,第一个C++实现露面。该名称是由Rick Mascitti取的。
11月,Borland的Turbo Pascal的“冲击”犹如一场核风暴,这得益于《BYTE》杂志的广告。
1984
APL2的参考手册面世。APL2是APL的扩展,它允许嵌套数组。
1985
Forth控制着潜水器定位泰坦尼克号的残骸。
Vanilla SNOBOL4之微机版发布。
Methods,PC上的面向行(line-oriented)的Smalltalk出现。
微机版本
1986
Smalltalk/V露面——第一个广泛应用于微机的Smalltalk版本。
Apple公司为Mac机器发布Object Pascal。
Borland发布Turbo Prolog。
Charles Duff发布Actor,一个开发微软Windows应用程序的面向对象语言。
Eiffel,另外一个面向对象语言出现。
C++露面。
1987
Turbo Pascal 4.0发布。
1988
CLOS规范——公共LISP对象系统(Common LISP Object System)——发表。
Niklaus Wirth完成Oberon,这是他继Mola-2的后续行动。
1989
ANSI C规范公布。
C++2.0形成了一个参考手册的初稿。2.0版本增加了诸如多继承和成员指针等特性。
1990
C++2.1,B.Stroustrup等作者的《Annotated C++ Reference Manual》一书出版。这个版本增加了模板和异常处理特性。
FORTRAN 90包含了众多新元素比如case语句和派生类型。
Kenneth Iverson和Roger Hui在APL 90会议上提出了J语言。
1991
Visual Basic在COMDEX春展会上获得《BYTE》杂志颁发的最佳表现奖。
1992
Dylan——以Dylan Thomas命名——由Apple公司发布的一个类似Scheme的面向对象语言。
1993
ANSI发布X3J4.1技术报告——面向对象的COBOL提议初稿。真正的标准预计在1997年完成。
1994
微软将Visual Basic for Application整合到Excel中。
1995
二月,ISO接受Ada语言1995修订版。它被称为Ada95,其中包括OOP特性和支持实时系统。
1996
第一个ANSI C++标准预发布。

Ⅳ 什么又是EBNF范式

巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首先引入的用来描述计算机语言语法的符号集。
现在,几乎每一位新编程语言书籍的作者都使用巴科斯范式来定义编程语言的语法规则。

Ⅵ 编程语言的bnf该如何编写

以delphi为例。
1。打开delphi
2。拖一个button控件到窗体上
3。双击此button控件
4。写一句:showmessage("大家好");
5。按F9键
6。看看一个能运行的软件已经出现在你

Ⅶ 什么是编程

编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。
概述
从计算机发明至今,随着计算机硬件和软件技术的发展,计算机的编程语言经历了机器语言、汇编语言、面向过程的程序设计语言以及面
文件系统驱动编程
向对象的程序设计语言阶段。[1]编辑本段机器语言
在计算机系统中,一条机器指令规定了计算机系统的一个特定动作。一个系列的计算机在硬件设计制造时就用了若干指令规定了该系列计算机能够进行的基本操作,这些指令一起构成了该系列计算机的指令系统。在计算机应用的初期,程序员使用机器的指令系统来编写计算机应用程序,这种程序称为机器语言程序。使用机器语言编写的程序,由于每条指令都对应计算机一个特定的基本动作,所以程序占用内存少、执行效率高。缺点也很明显,如:编程工作量大,容易出错;依赖具体的计算机体系,因而程序的通用性、移植性都很差。[2]编辑本段汇编语言
为了解决使用机器语言编写应用程序所带来的一系列问题,人们首先想到了使用助记符号来代替不容易记忆的机器指令。这种助记符号来表示计算机指令的语言称为符号语言,也称汇编语言。在汇编语言中,每一条用符号来表示的汇编指令与计算机机器指令一一对应;记忆难度大大减少了,不仅易于检查和修改程序错误,而且指令、数据的存放位置可以有计算机自动分配。用汇编语言编写的程序称为源程序,计算机不能直接识别和处理源程序,必须通过某种方法将它翻译成为计算机能够理解并执行的机器语言,执行这个翻译工作的程序称为汇编程序。 使用汇编语言编写计算机程序,程序员仍然需要十分熟悉计算机系统的硬件结构,所以从程序设计本身上来看仍然是低效率的、烦琐的。但正是由于汇编语言与计算机硬件系统关系密切,在某些特定的场合,如对时空效率要求很高的系统核心程序以及实时控制程序等,迄今为止汇编语言仍然是十分有效的程序设计工具。编辑本段高级语言
高级语言是一类接近于人类自然语言和数学语言的程序设计语言的统称。按照其程序设计的出发点和方式不同,高级语言分为了面向过程的语言和面向对象的语言,如Fortran语言、C语言等都是面向过程的语言;而以C++、Smalltalk等为代表的面向对象的语言与面向过程语言有着许多不同,这些语言支持“程序是相互联系的离散对象集合”,这样一种新的程序设计思维方式,具有封装性、继承性和多态性等特征。[3] 高级语言按照一定的语法规则,由表达各种意义的运算对象和运算方法构成。使用高级语言编写程序的优点是:编程相对简单、直观、易理解、不容易出错;高级语言是独立于计算机的,因而用高级语言编写的计算机程序通用性好,具有较好的移植性。 用高级语言编写的程序称为源程序,计算机系统不能直接理解和执行,必须通过一个语言处理系统将其转换为计算机系统能够认识、理解的目标程序才能成为计算机系统执行。[4]编辑本段执行原理
计算机对除机器语言以外的源程序不能直接识别、理解和执行,都必须通过某种方式转换为计算机能够直接执行的机器语言。这种将高级
MINIPRO编程硬件
程序设计语言编写的源程序转换到机器目标程序的方式有两种:解释方式和编译方式。 解释方式下,计算机对高级语言书写的源程序一边解释一边执行,不能形成目标文件和执行文件。 编译方式下,首先通过一个对应于所用程序设计语言的编译程序对源程序进行处理,经过对源程序的词法分析、语法分析、语意分析、代码生成和代码优化等阶段将所处理的源程序转换为用二进制代码表示的目标程序,然后通过连接程序处理将程序中所用的函数调用、系统功能调用等嵌入到目标程序中,构成一个可以连续执行的二进制执行文件。调用这个执行文件就可以实现程序员在对应源程序文件中所指定的相应功能。编辑本段语言的发明
1946 Konrad Zuse,一位德国工程师,他躲藏在巴伐利亚附近的阿尔卑斯山上时,独立开发了Plankalkul。他把该项成果应用在其它的事物中,比如国际象棋。 1949 Short Code ,第一种真正在电子计算设备上使用的计算机语言,尽管他是一个纯手工编译的的语言。 1951 Grace Hopper,为Remington Rand工作,是在第一个着名的编译器——A-o上开始设计工作。当Rand在1957年发布这个语言时,它被称为MATH-MATIC。 1952 Alick E. Glennie ,他利用自己在曼彻斯特大学的课余时间,发明了一个名为AUTOCODE的编程系统,一个未能成型的编译器。 1957 FORTRAN——数学公式转换系统(FORmula TRANslating,FORTRAN名字的由来)——出现。开发队伍的领导者是John Backus,并且他还为ALGOL的开发和巴柯斯范式(BNF)做出了贡献。 1958 FORTRAN II出现,它能够处理子程序和连接汇编语言。由M.I.T的John McCarthy在LISP-LISt Processing上开始设计工作。原始ALGOL规范出现。该规范并未描述数据的输入输出方式;这些问题都留给独立的实现者。 20世纪六十年代末 Pascal 由瑞士Niklaus Wirth教授于设计并创立, 具有简洁的语法,结构化的程序结构,是结构化编程语言,在许多学校的计算机语言课上教授的都是Pascal语言。

Ⅷ BNF是什么

巴科斯范式及其扩展
BNF & Augmented BNF
什么是巴科斯范式?
巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首次引入一种形式化符号来描述给定语言的语法(最早用于描述ALGOL 60 编程语言)。确切地说,早在UNESCO(联合国教科文组织)关于ALGOL 58的会议上提出的一篇报告中,Backus就引入了大部分BNF符号。虽然没有什么人读过这篇报告,但是在Peter Naur读这篇报告时,他发现Backus对ALGOL 58的解释方式和他的解释方式有一些不同之处,这使他感到很惊奇。首次设计ALGOL的所有参与者都开始发现了他的解释方式的一些弱点,所以他决定对于以后版本的ALGOL应该以一种类似的形式进行描述,以让所有参与者明白他们在对什么达成一致意见。他做了少量修改,使其几乎可以通用,在设计ALGOL 60的会议上他为ALGOL 60草拟了自己的BNF。看你如何看待是谁发明了BNF了,或者认为是Backus在1959年发明的,或者认为是Naur在1960年中发明。(关于那个时期编程语言历史的更多细节,参见1978年8月,《Communications of the ACM(美国计算机学会通讯)》,第21卷,第8期中介绍Backus获图灵奖的文章。这个注释是由来自Los Alamos Natl.实验室的William B. Clodius建议的)。
现在,几乎每一位新编程语言书籍的作者都使用巴科斯范式来定义编程语言的语法规则。

Ⅸ 基础正则表达式的BNF是怎样的

括号的意思:将(和)之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个),它们可以用\1到\9的符号来引用。|的意思:将两个匹配条件进行逻辑“或”(Or)运算。例如正则表达式(him|her)匹配"itbelongstohim"和"itbelongstoher",但是不能匹配"itbelongstothem."。*的意思:匹配0或多个正好在它之前的那个字符。例如正则表达式.*意味着能够匹配任意数量的任何字符。所以你给的那个例子00(0|1)*可以用来匹配00或者001或者000或者0000或者0011,但是不能匹配011等等。具体定义还是要多参考一下下面的文章:正则表达式,RegularExpression(也称为“regex”或“regexp”),是一种用来描述文本模式的特殊语法。一个正则表达式由普通字符(例如字符a到z)以及特殊字符(称为元字符,如/、*、?等)组成。简单地说,一个正则表达式就是你需要匹配的字符串。例如,正则表达式“A*B”匹配字符串“ACCCB”但是不匹配“ACCCC”。什么是巴科斯范式?巴科斯范式(BNF:Backus-NaurForm的缩写)是由JohnBackus和PeterNaur首先引入的用来描述计算机语言语法的符号集。现在,几乎每一位新编程语言书籍的作者都使用巴科斯范式来定义编程语言的语法规则。巴科斯范式的内容在双引号中的字("word")代表着这些字符本身。而double_quote用来代表双引号。在双引号外的字(有可能有下划线)代表着语法部分。尖括号()内包含的为必选项。方括号([])内包含的为可选项。大括号({})内包含的为可重复0至无数次的项。竖线(|)表示在其左右两边任选一项,相当于"OR"的意思。::=是“被定义为”的意思。巴科斯范式示例这是用BNF来定义的Java语言中的For语句的实例:FOR_STATEMENT::="for""("(variable_declaration|(expression";")|";")[expression]";"[expression]";"")"statement这是Oraclepackages的BNF定义:package_body::="package"package_name"is"package_obj_body{package_obj_body}["begin"seq_of_statements]"end"[package_name]";"package_obj_body::=variable_declaration|subtype_declaration|cursor_declaration|cursor_body|exception_declaration|record_declaration|plsql_table_declaration|procere_body|function_bodyprocere_body::="procere"procere_name["("argument{","argument}")"]"return"return_type"is"["declare"declare_spec";"{declare_spec";"}]"begin"seq_of_statements["exception"exception_handler{exception_handler}]"end"[procere_name]";"statement::=comment|assignment_statement|exit_statement|goto_statement|if_statement|loop_statement|null_statement|raise_statement|return_statement|sql_statement|plsql_block这是用BNF来定义的BNF本身的例子:syntax::={rule}rule::=identifier"::="expressionexpression::=term{"|"term}term::=factor{factor}factor::=identifier|quoted_symbol|"("expression")"|"["expression"]"|"{"expression"}"identifier::=letter{letter|digit}quoted_symbol::="""{any_character}"""扩展的巴科斯范式AugmentedBNFRFC2234定义了扩展的巴科斯范式(ABNF)。近年来在Internet的定义中ABNF被广泛使用。ABNF做了的改进,比如说,在ABNF中,尖括号不再需要。

Ⅹ 简述你知道的5种程序设计语言的特点

Fortran:由一个主程序或一个主程序与若干个子程序组成。

ALGOL:巴乎斯范式BNF来描述言的语法。还提供动态数组和过程的递归调用。

COBOL(COmmon Business-Oriented Language)是一种面向事务处理的高级语言。目前COBOL语言主要应用于情报检索,商业数据处理等管理领域。

Pascal语言是一种结构化程序设计语言,过程可以是嵌套和递归的。

C语言:兼顾了高级语言和汇编语言的特点,简洁,丰富,可移植。直接访问操作系统和底层硬件,C在系统应用和实时处理应用的开发中成为主要语言。

C++:是在C的基础上增加了类机制,使其成为一种面向对象的程序设计语言。

Java,目的是用于开发网络浏览器的小应用程序.

分类:
1.命令式程序设计语言是基于动作的语言,Fortran,Pascal,C

2.面向对象的程序设计语言,模拟领域发展起来的Simula,C++,Java,smaltalk,
对象,类,继承,是面向对象的三大特点。

3.函数式程序设计语言是一类似λ-演算为基础的语言,基本要领来自于LISP(1958年为了人工智能应用而设计的语言).函数是一种对应规则(映射),它使定义域中每个元素和值域中唯一的元素相对应。 LISP程序和数据等价.数据结构可以作为程序执行,程序可以作为数据修改.

4.逻辑型程序设计语言,以形式逻辑为基础的语言,其代表是建立在关系理论和一阶谓词理论基础上的PROLOG(Programming in Logic).关键操作是模式匹配。有很强的推理功能,适用于书写自动定理证明,专家系统,自然语言理解等问题的程序。

http://blog.csdn.net/mShopping/archive/2008/10/14/3073176.aspx

阅读全文

与bnf编程相关的资料

热点内容
优信二手车解压后过户 浏览:61
Windows常用c编译器 浏览:778
关于改善国家网络安全的行政命令 浏览:833
安卓如何下载网易荒野pc服 浏览:654
javainetaddress 浏览:104
苹果4s固件下载完了怎么解压 浏览:1002
命令zpa 浏览:285
python编译器小程序 浏览:944
在app上看视频怎么光线调暗 浏览:540
可以中文解压的解压软件 浏览:592
安卓卸载组件应用怎么安装 浏览:912
使用面向对象编程的方式 浏览:339
程序员项目经理的年终总结范文 浏览:929
内衣的加密设计用来干嘛的 浏览:432
淮安数据加密 浏览:292
魔高一丈指标源码 浏览:982
松下php研究所 浏览:168
c回调java 浏览:399
梦幻端游长安地图互通源码 浏览:745
电脑本地文件如何上传服务器 浏览:313