我的理解:
1、 词法, 定义组成语言的单词, 是语言中最小单元。
2、 语法, 将单子组织成有含义的短语和句子的规则。
3、 语义, 结合上下文,可以推导出语句的真实含义。
词法分析实现:
http://www.cnblogs.com/yanlingyin/archive/2012/04/17/2451717.html
正则表达式的词法分析:
http://www.cnblogs.com/naturemickey/p/3667571.html
“a”
"b"
abababababbbbbababaaaa
0
1 093023412
// 加法表达式的定义
// 然后把上面的两个步骤揉在一起
// 四则运算
// 加法表达式 支持连+
// 乘法表达式 支持连* 除法表达式 支持连/
// 逻辑表达式
// 左项: 1 右项: 2 * 3
1 + 2 * 3
// // // // // 总结 // // // // //
// // // // // 总结完毕 // // // // //
// // // BNF // // //
// 咱们现在还不能验证对不对 只能上代码才能验证
// 等下自己还需要再写一遍
// 无限制相关文法
::= "c"
// 上下文相关文法 什么意思呢 "?" 和 "!"的位置是会动的
?! = ?!
"a" "c" :: "a" "x" "c"
// "四则运算" xxxxxxx是不会动的xxxxxxxxx "
"
"四则运算" <LogicalExpression> "
" = "四则运算" (<LogicalExpression> = <AdditiveExpression> | <LogicalExpression> "||" <AdditiveExpression> | <LogicalExpression> "&&" <AdditiveExpression>)"
"
// 上下文无关文法
// 这里有一个注意事项 如果有递归 是一定出现在左边的 下面这个是对的
::= ?
// 这里也有地柜,但是这种就是不对的,JavaScript也是这个样子的。。。
::= ?
////////////////////////////// 这里winter老师跟我们留了一个optional作业 ///////////////////
////////////////////////////// 把上面的用正则表达式写一下 ///////////////////
////////////////////////////// 写倒是想写,问题还不会正则呀,先留着一个坑好了 ///////////////////
// 用DecimalNumber写一下正则
// /0|[1-9][0-9]/ 十进制正则表达式 正则表达式扫描 词法分析 然后建立语法树 剪剪枝干 把不需要的部分去把它干掉 然后就变成了抽样语法树
// 这里的get是 无限制文法 ? 上下文相关文法? 上下文无关文法? 正则文法?
// get是 上下文相关文法 开始我给出的答案是 上下文无关文法
// JavaScript大部分就是上下文相关的文法
{
get a {return 1},
get: 1
}