巴克斯诺尔范式 && 乔姆斯基谱系,词法 && 语法

巴科斯诺尔范式

我的理解:

1、 词法, 定义组成语言的单词, 是语言中最小单元。

2、 语法, 将单子组织成有含义的短语和句子的规则。

3、 语义, 结合上下文,可以推导出语句的真实含义。

词法分析实现:

http://www.cnblogs.com/yanlingyin/archive/2012/04/17/2451717.html

正则表达式的词法分析:

http://www.cnblogs.com/naturemickey/p/3667571.html

“a”

"b"

:= "a"+ | "b"+
:= "a"+ | "b"+

abababababbbbbababaaaa

= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
= "0" | (("1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9")+ *)

0
1 093023412

// 加法表达式的定义
= +
= "+"
// 然后把上面的两个步骤揉在一起
= | "+"

// 四则运算
// 加法表达式 支持连+
= | "+" | "-"
// 乘法表达式 支持连* 除法表达式 支持连/
= | "*" | "/"
// 逻辑表达式
= | "||" | "&&"

// 左项: 1 右项: 2 * 3
1 + 2 * 3

// // // // // 总结 // // // // //

= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

= "0" | (("1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9")+ *)

= | "(" ")"

= | "+" | "-"

= | "*" | "/"

// // // // // 总结完毕 // // // // //

// // // BNF // // //

::= | * | / |

:: | "+" | "-"

// 咱们现在还不能验证对不对 只能上代码才能验证
// 等下自己还需要再写一遍

// 无限制相关文法
::= "c" |

// 上下文相关文法 什么意思呢 "?" 和 "!"的位置是会动的
?
! = ?!
:: "x"
"a" "c" :: "a" "x" "c"

// "四则运算" xxxxxxx是不会动的xxxxxxxxx ""
"四则运算" <LogicalExpression> "" = "四则运算" (<LogicalExpression> = <AdditiveExpression> | <LogicalExpression> "||" <AdditiveExpression> | <LogicalExpression> "&&" <AdditiveExpression>)""

// 上下文无关文法
// 这里有一个注意事项 如果有递归 是一定出现在左边的 下面这个是对的
::= ?
// 这里也有地柜,但是这种就是不对的,JavaScript也是这个样子的。。。
::= ?

////////////////////////////// 这里winter老师跟我们留了一个optional作业 ///////////////////
////////////////////////////// 把上面的用正则表达式写一下 ///////////////////
////////////////////////////// 写倒是想写,问题还不会正则呀,先留着一个坑好了 ///////////////////

// 用DecimalNumber写一下正则
// /0|[1-9][0-9]/ 十进制正则表达式 正则表达式扫描 词法分析 然后建立语法树 剪剪枝干 把不需要的部分去把它干掉 然后就变成了抽样语法树
= /0|[1-9][0-9]
/

// 这里的get是 无限制文法 ? 上下文相关文法? 上下文无关文法? 正则文法?
// get是 上下文相关文法 开始我给出的答案是 上下文无关文法
// JavaScript大部分就是上下文相关的文法
{
get a {return 1},
get: 1
}

posted @ 2020-05-10 23:37  jaiodfjiaodf  阅读(438)  评论(0编辑  收藏  举报