词法、语法与语义相关知识
概念
http://www.juweixin.com/t/detail/148383
语法到底是什么?有人说语法是语言里的法律、法规;有人说语法是框架结构;还有人说语法就是对前人语言习惯的一种总结。以上这些说法都对,但是又不全对。
In linguistics, grammar is the set of structural rules governing the composition of clauses, phrases, and words in any given natural language. The term refers also to the study of such rules, and this field includes morphology, syntax, and phonology, often complemented by phonetics, semantics, and pragmatics.
在语言学中,语法是句子、短语和词汇在任何给定的自然语言中的结构规则组成。这个领域也包括这些规则的研究,这一领域包括形态学、语构、语音,常常辅以语音学,语义学和语用学。
我的理解:
1、 词法, 定义组成语言的单词, 是语言中最小单元。
2、 语法, 将单子组织成有含义的短语和句子的规则。
3、 语义, 结合上下文,可以推导出语句的真实含义。
语法糖
http://www.cnblogs.com/zhangyongjian/p/3628766.html
语法糖(Syntactic sugar),是由Peter J. Landin(和图灵一样的天才人物,是他最先发现了Lambda演算,由此而创立了函数式编程)创造的一个词语,它意指那些没有给计算机语言添加新功能,而只是对人类来说更“甜蜜”的语法。语法糖往往给程序员提供了更实用的编码方式,有益于更好的编码风格,更易读。不过其并没有给语言添加什么新东西。 举个例子:在C语言里用a[i]表示*(a+i),用a[i][j]表示*(*(a+i)+j),看来语法糖不是“现代语言”才有啊,连我们的老大哥C也有,而且这种写法简洁明了,也更好懂了。 实际上从面向过程到面向对象也是一种语法糖啊,C语言可以通过它的指针、类型转换,结构实现面向对象的编程风格,但是C++更进一步的推广了这种风格,更好用了
词法分析、语法分析、语义分析
http://blog.csdn.net/nic_r/article/details/7835908
词法分析(Lexical analysis或Scanning)和词法分析程序(Lexical analyzer或Scanner)
词法分析阶段是编译过程的第一个阶段。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。词法分析程序实现这个任务。词法分析程序可以使用lex等工具自动生成。语法分析(Syntax analysis或Parsing)和语法分析程序(Parser)
语法分析是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等.语法分析程序判断源程序在结构上是否正确.源程序的结构由上下文无关文法描述.语义分析(Syntax analysis)
语义分析是编译过程的一个逻辑阶段. 语义分析的任务是对结构上正确的源程序进行上下文有关性质的审查, 进行类型审查.例如一个C程序片断:
int arr[2],b;
b = arr * 10;
源程序的结构是正确的.
语义分析将审查类型并报告错误:不能在表达式中使用一个数组变量,赋值语句的右端和左端的类型不匹配.
词法分析实现:
http://www.cnblogs.com/yanlingyin/archive/2012/04/17/2451717.html
正则表达式的词法分析:
http://www.cnblogs.com/naturemickey/p/3667571.html