关闭

C++语法表达式规则的建立基础

发表于:2013-8-08 10:02

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:polya卷卷    来源:51Testing软件测试网采编

  从案例说起

  示例:摘自Essential C++,改进版

#include<iostream>
#include<string>
using namespace std;
int main()
{
  string user_name,name2;
cout<<"Please enter your first name:";
cin>>user_name;
cin>>name2;
cout<<'\n'
    <<"Hello,"
 <<user_name
 <<"   and   "
 <<name2
    <<"   goodby!\n";
return 0;
}

  参考Essential C++看完之后,可以明白两层意思,第一是程序可以做什么;第二是程序各部分的基本词素意思。但是了解了这二层意思仍然让人一头雾水。不知从何下手。于是,就有了第三层理解。

  第三层理解:用什么定义C++的语法表达式?用什么定义关键字?用什么定义标识符?于是,只好去查编译原理,里面的词法分析中,有一个产生式规则,可以对C++的语法表达式进行定义。 一个关键字对应一个词素,一个词素对应所有的标识符。预处理可以解释#define等声明,并起调用作用。

  产生式规则是一个很有意思的东西,简单的说,就是拿一个前提条件,推出一个果,然后不断的自我反馈调用直到全部推理出最终结果。本身可以分为三部分:事实库,规则库,控制器。个人认为是这跟数理逻辑最为直接的实现形式。由产生式规则构建了各种各样的词法分析器。也可以认为产生式规则是各种高级语言语法表达式的分野。认为产生式规则是编程语言的牛鼻子一点也不为过。

  许多人认为C++很难,主要是因为所有的课程中,并没有将产生式规则及系统作为一个编程的重要概念基础提出(最好能够查找相关的资料深入理解一番),由此后面的衍生概念难以理解。理解这一点后,我们再翻开C++的所谓的各种表达式规范格式,发现这只不过是产生式规则给不同的对象的定义罢了。也就是说,产生式规则是一个元范式格式。构成了语法表达式定义的基础。当然,你也可以自己定义自己喜欢的语法表达式,如果构造的足够系统,一门新的编程语言就诞生了。当年的java就是这样来的。

  如有不足之处,请指处,欢迎读者拍砖!

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号