×

分析器

酒精分析器的原理是什么?如何用flex+bison写语法分析器

admin admin 发表于2022-06-02 14:09:57 浏览117 评论0

抢沙发发表评论

酒精分析器的原理是什么


交通法规规定:驾驶员酒后不准驾车。因为人饮酒后容易出现神志不清、判断力减弱等现象。如果司机喝得醉酗酗地驾驶车辆,很容易发生车毁人亡的事故。为此,交通管理部门研制出一种能快速、准确测定司机是否酒后驾车的检测器,这就是酒精分析器。

酒的主要成分是乙醇(酒精)。乙醇有一个重要的特性,就是容易与氧发生反应。酒精分析器内含有一种叫三氧化铬的物质。检测时,将分析器贴近司机嘴巴,让司机呼出的气体进入分析器。如果司机确实饮过酒,他呼出的气体中一定含有乙醇蒸气。分析器内的三氧化铬遇到乙醇后,便由原先的橙红色变成墨绿色。随着颜色的变化,分析器内会发出一阵蜂鸣声,表示已“捕捉”到了乙醇。警察根据酒精分析器发出的声音,便可判断出司机是否酒后驾车。


如何用flex+bison写语法分析器


书籍请参考编译原理的龙书,以及flex,bison,llvm的manual。如何写我可以给你一个大致的流程,编译器由词法分析器-》语法分析器-》中间代码生成器-》后端组成。用C语言写编译器一般可以按照以下步骤:1.使用flex生成词法分析器。(flex可以通过自己编写的描述文件来自动生成词法分析器)2.使用bison生成语法分析器。(bison可以通过自己编写的描述文件来自动生成语法分析器)3.通过语法分析器得到输入代码的语法树表示。4.编写遍历函数遍历语法树生成中间代码。(这里推荐使用LLVM的中间代码表示)5.利用LLVM工具集来编译执行所得到的中间代码。
-分析器

关于语法分析器


可以看看这个,我刚解析了一大堆。那个源代码就是表达式分析器,有括号的可以用递归解决,遇到左括号递归括号内的表达式,最后要递归完毕配上右括号有效。-号出现的位置不多,要不就开始出现,要不就在‘(’右边出现,还可能在sin右边出现,自己在这些地方判断下就行了,至于sin类那些运算,可以在分析表达式的时候用个词法分析器判定一下,然后用个’S’代替方便运算。当遇到S的时候,直接递归S右边的表达式就可以了。遇到其他双目预算符就用栈操作就可以了。http://zhidao.baidu.com/question/230577084.html
-分析器