全球热资讯!编程语言实现模式_编程语言实现模式
很久之前已经把这本书看过一遍了,但是一直没有实践过!于是,拿出来再复习一遍,顺便记录笔记。关于这本书有几点:
【资料图】
ANTLR贯穿全书:作者是Terence Parr,这点也就不奇怪了ANTLR生成的代码是LL(K)的偏重实践,原理很少,想看原理要去看龙书另外,你应该先知道编译的过程大概分成哪几步骤以及为什么这样划分!废话少说,来看这本书的内容。
解析输入
词法分析和语法分析很多地方都是相同的,解析器结构如下:
public class G extends Parser { // 类型定义 // 合适的构造函数 // 规则对应的方法}
在一个规则中包含很多子规则时,根据向前看符号来决定使用哪个,这个逻辑的代码描述可以用if-else来做:
if(向前看到alt1){ // 匹配alt1} else if(向前看到alt2){ // 匹配alt1}....
当然这里也可以用switch做,在规则上定义的一些常见操作有:
(T)?:T可有可无(T)+:多个T(T)*:零个或多个T这些操作的代码描述:
// (T)?if(向前看到T){ match(T);}// (T)+do{ match(T);} while(向前看到T)// (T)*while(向前看到T){ match(T);}
能利用好这三个操作大部分的规则都可以搞定了!词法分析相对语法分析了来说简单很多,Lexer会提供nextToken()来供Parser使用来不断地获取TOKEN:
public Token nextToken(){ while(lookahead-char != EOF) { switch(lookahead-char){ case 空白字符: { consume(); continue; } case 字符后面可能是T1: return T1(); case 字符后面可能是T2: return T2();// ... default: 出错; } } return EOF;}
直观上来看用switch进行预测,相当于构造了一个状态机吧,其中consume()方法自增下标并将下一个字符当做向前看字符(消费字符)。在仅使用一个向前看符来进行语法分析时,也就是LL(1),对于下面语法:
list : '[' elements ']';elements : element (',' element)*;element : NAME | list;
生成的Paser如下:
public class ListParser extends Parser { public void list(){ match(ListLexer.LBRACK); // 匹配并消耗词法单元 elements(); match(ListLexer.RBRACK); } public void elements(){ element(); while(lookahead.type == ListLexer.COMMA) { match(ListLexer.COMMA); element(); } } public void element(){ if(lookahead.type == ListLexer.NAME) match(ListLexer.NAME); else if(lookahead.type == ListLexer.LBRACK) list(); else throw new Error("语法错误"); }}
很简单的语法用LL(1)是没有问题的,对于稍微复杂一点的其预测能力差就暴露出来了,怎么办?当然是多拿几个进行预测!可以构造环形缓冲区来存放用来预测的TOKEN,另外增加两个方法:
LA:返回第k个向前看词法单元的类型LT:返回第k个词法单元那么文法:
element : NAME '=' NAME : NAME : list ;
对应的程序描述就变为:
public void element(){ if(LA(1) == LookaheadLexer.NAME && LA(2) == LookaheadLexer.EQUALS) { match(LookaheadLexer.NAME); match(LookaheadLexer.EQUALS); match(LookaheadLexer.NAME); } else if(LA(1) == LookaheadLexer.NAME) { match(LookaheadLexer.NAME); } else if(LA(1) == LookaheadLexer.LBACK) { list(); } else { throw new Error("语法错误!"); }}
但是LL(K)也不是万能的,如果向前看k个解决不了问题,那么向前无限个总应该可以搞定了吧?回溯解析中使用递归尝试不同的规则,在发现无法匹配时把消费掉的TOKEN吐出来:
public void rule() { if(speculate_alt1()){ // 匹配alt1 } else if(speculate_alt2()){ // 匹配alt2 } else { throw new Error("语法错误!"); }}public boolean speculate_alt1() { boolean success = true; mark();// 标记当前位置,供release使用 try{ // 匹配alt1 } catch(Exception e){ success = false; } release();// 将消费掉的TOKEN重新放回去 return success;}
回溯解析最大的缺陷就是性能低,而其中一个原因则是做了不少重复工作,对于语法:
s : expr ':' | expr ';';
在尝试第一个子规则失败时会去尝试第二个,那么expr就会被匹配两次!如果能把之前匹配过的结果记住就好了(参考记忆化搜索),此时仅需要做一些很小的修改:
// 每个规则有一个Map来保存结果Map<Integer, Integer> list_memo = new HashMap<Integer, Integer>;public void list(){ boolean failed = false; int startTokenIndex = index(); if(isSpeculating() && aleadyParsedRule(list_memo)) return;try{_list();} catch(Exception e) {failed = true; throw e; } finally{ if(isSpeculating()) memoize(list_memo, startTokenIndex, failed); }}public void _list(){ match(XXX); elements(); match(XXX);}
简单说明下上面用到的几个方法:
aleadyParsedRule:使用缓存的结果:成功返回TRUE、失败抛异常、未处理过返回FALSEmemoize:回溯时将结果记录到缓存另外需要清楚一个细节:
推演时没有通过的try-catch逻辑在非推演时更不可能走到!
最后,在遇到上下文相关的语法时使用谓词是个不错的选择,用代码描述就是增加条件:
public void rule(){ if(向前看符号测试alt1 && 谓词1) { // 匹配alt1 } else if(向前看符号测试alt2 && 谓词2) { // 匹配alt2 } ...}while(对循环的alt进行向前看符号判断 && 谓词判断) { 子规则的代码用来匹配alt}
到这里解析输入的逻辑基本上就看完了,简单来说:
Lexer产出Token流Parser产出方法执行流接下来我们就需要在Parser产出的方法执行流上面来进行分析。
分析输入
将源码结构化时一般用到两种方式:语法分析树和抽象语法树,从三个方面来看:
紧凑:不含无用节点易用:很容易遍历显意:突出操作符、操作对象,以及它们互相间的关系,不再拘泥于文法抽象语法树都要更优秀一些!程序实现时,我们在Parser匹配的过程中向方法中插入一些代码即可得到想要的树形结构:
public void rule(){ RuleNode r = new RuleNode("规则名"); if(root == null) root = r; else currentNode.addChild(r); ParseTree _save = currentNode; // 原始的规则代码 currentNode = _save;}
要比想象的简单很多,因为在LL的解析中:
解析过程就可以看做是在语法分析树上做DFS,任意当前树节点的父亲必然是前面遍历过的某个节点!
不同实现节点的方式后续树的遍历等都是有影响的,有如下方式:
类型 | 含义 |
---|---|
同型AST | 只有一种节点类型AST,要依据TOKEN来区分不同类型 |
规范异型AST | 从基类AST派生不同的节点类型,子节点列表统一 |
不规范异型AST | 可以添加不同的子节点属性,能够让代码的可读性更高 |
好不容易拿到树形结构了,遍历它也不是一个轻松的活。回想大学用Java写二叉树遍历的时候通常是这样:
public class Node { Node left, right; void visit(){ left.visit(); right.visit(); }}
把遍历操作嵌入节点内部最明显的缺点是:逻辑散落在各节点中操作起来很麻烦,可以将遍历操作统一放到一个地方:
public abstract class VecMathNode extends HeteroAST { public abstract void visit(VecMathVisitor visitor);}public interface VecMathVisitor { void visit(AssignNode n); void visit(PrintNode n); void visit(StatListNode n); void visit(VarNode n); // ...}
在实现的时候在Visitor中将this传递就可以达到遍历的目的了:
public class PrintVisitor implements VecMathVisitor { public void visit(AssignNode n){ n.id.visit(this);// 看这里 System.out.print("="); n.value.visit(this); }}
提到外面代码量并没有减少,但是这种代码很有规律,ANTLR可以大幅度地减少你的工作量!当然还有其他的方式来实现相同的目的,这里就不啰嗦了。
遍历语法树的过程中要和两个东西打交道:
操作符号操作很简单,把子节点收集起来进行计算、处理就行了,但是符号就没那么随意,关键就是作用域:
// 1int x;void f(){ // 2 int y; { int i; } // 3 { int j; } // 4}void g(){ // 5 int i;}
嵌套的作用域更加容易理解,嵌套关系可以用树形结构来表示(这种作用域的特点是只有一个父节点),上面这段代码生成的作用域如下:
在遍历树的时候用一个栈来保存能访问到的作用域:
在这个过程中用到的操作有:
操作 | 作用 |
---|---|
push | 向栈中压入作用域 |
pop | 作用域结束后,要将当前的作用域弹出栈 |
def | 在当前作用域中定义符号 |
resolve | 解析符号 |
面向过程的变成语言很简单,这些已经够了,但是在面向对象编程的时候就不行了:
// 1 全局class A {// 2public : int x; void foo()// 3 { ; } // 4}class B : public A {// 5 int y; void foo()// 6 {// 7 int z = x + y; }}
由于继承关系的存在,在查找符号的时候不仅是要在当前类中找,而且要去父类中找,也就是说此时的父节点就不止一个了:
对于像a.x = 3这种访问对象属性的行为就不能按照上面套路来了,需要增加一个操作:
操作 | 作用 |
---|---|
resolveMemeber | 解析成员,只会根据superClass递归查找 |
到这里还没完,Java中的Class的定义可以在使用之前,那么在上面的处理属性引用时发现还没定义!直观的解决方法:
预先遍历一次来定义类型。
这里要小心处理好符号和作用域的关系。有了作用域和符号表之后需要对其进行简单的分析:
操作 | 含义 |
---|---|
计算表达式类型 | 操作的返回结果 |
自动类型提升 | 根据操作的对象来决定是否需要对其中低等级的进行提升 |
静态类型检查 | 操作的对象类型是否合法 |
多态类型检查 | 面向对象中的父子关系 |
简单来说都是在遍历AST的时候完成的,下面来看如何运行程序~~
解释执行
经过上面这些步骤我们已经知道了源码所要表达的意思,那么就可以用代码来实现其逻辑(也就是解释执行),根据实现方式区分有:
语法制导解释器:不会生成AST,在解析源码的过程中完成;基于树的解释器:先构建AST,在遍历的过程中完成执行;这两种方式很好理解,用1+2*3的例子玩一玩就可以了,感觉这部分讲的有点啰嗦。用上面的方式执行优点简单、粗暴,缺点是耦合太强了,为了化解便有了:
字节码汇编器:将便于阅读的汇编语言翻译为二进制形式的字节码指令;栈式解释器:执行指令时使用操作数栈存放临时变量;寄存器解释器:执行指令时使用虚拟寄存器存放参数、局部变量和临时变量;用中间指令(也可以理解为原子API)作为过渡,这样以后再有其他的DSL来了,只需要将其翻译为这种中间指令就可以了。
生成输出
要让自己定义的DSL可执行最简单的办法就是将其翻译为现有的一种语言,和各种CC干的差不多:
比如ANTLR就是讲文法翻译为Java代码。
语法制导是最简单的方案,读入内容在解析的过程中完成输出,无法处理前向引用:
而基于规则则是专注于指定一条一条的规则,在匹配到某条规则的时候执行(输出)对应的操作:
工业界普遍流行的是模型驱动翻译,先创建AST,然后在遍历的过程中生成代码:
对于简单的DSL可以使用模板(比如Velocity)来简化输出,但是难点并不在这里。
总结
这本书对于想实现DSL的人来说还是挺有作用的:例子、代码实现,但是想要学习理论的恐怕要失望了,因为这里几乎是没有的。
看到网上有人评价这本书能超过龙书,不知道是从哪里看出来的,类型差别这么大如何比较的?
转载:编程语言实现模式
相关阅读
-
当前热议!怎样更换计算机主板电池,笔记本电脑主板电池怎么更换?教你更换主板电池的方法...
花火网消息,笔记本主板电池是非常重要的笔记本零部件之一,那么,我们在生活中如何更换笔记本主板电池...
2022-09-29 -
今亮点!MonkeyTest——简单无脑的移动端自动化测试(初级篇)_monkeytest
MonkeyTest-操作步骤:1 下载AndroidsdkX64位,必须和你的电脑操作系统一致。2 安装完成后,增加adb的...
2022-09-29 -
环球新资讯:linux封装函数,libc库和封装函数 | 求索阁
Linux系统调用这部分经常出现两个词:libc库和封装函数,不知道你是否清楚它们的含义?libc1)libc概念li...
2022-09-29 -
诺基亚发布2022年Q3财报 第三季度营业利润6.58 亿欧元
DoNews10月20日消息(丁编程凡)今日,诺基亚公布了2022年Q3季度运营利润,低于市场预期。数据显示,该...
2022-10-20 -
电竞党双·11剁手指南:拯救者Y9000P超强配置 3A大作的游戏本标杆-环球微头条
10月20日晚8点,一年一度的双11购物节正式拉开帷幕。伴随着消费升级趋势来临,人们生活水平不断提高,大...
2022-10-20 -
调查:67%的欧洲科技界女性认为与男性相比报酬过低 一半的人遭遇过性别歧视
据TechCrunch报道,上个月,在国际同工同酬日,国际劳工组织(ILO)组织透露,全球女性的平均工资比男性...
2022-10-20 -
iPhone7 Plus多少钱?iPhone7 Plus价格
iPhone7Plus起价6388元。有银色、金色、玫瑰金、黑色和钢琴黑。iPhone7Plus搭载新一代A10Fusion芯片,采...
2022-10-20 -
webcheck.dll是什么
DLL文件:webcheck或者webcheck dll。DLL名称:WebSiteMonitor。webcheck dll是用于对网站进行监视的C...
2022-10-20 -
马斯克发推特宣布BurntHair香水已售罄 二手转售价更加夸张
10 月 12 日马斯克的隧道初创公司 Boring Company 推出新品 Burnt Hair(烧焦的头发)限量版香水...
2022-10-20 -
iTouch5和iTouch4有什么区别 iTouch5和iTouch4区别
iTouch4和iTouch5iTouch4iTouch5 上一次iTouch4更新还是在2010年的时候时隔两年。iTouch系列总算赢来又...
2022-10-20 -
网友猜测自购国行版苹果14ProMax为印度组装 官方技术顾问回应
有网友在网上晒出自己买到的国行 iPhone 14 Pro Max 是在印度组装的。据该网友透露,其上周在苹果...
2022-10-20 -
十铨首创双冷头强效散热新品亮相 设计焕新不惧大功率SSD
十铨宣布推出 T-FORCE SIREN DUO360 ARGB CPU & SSD 一体式水冷散热器,业界首创双冷头强效散热...
2022-10-20 -
USB80Gbps解决方案特点一览:Type-C可非对称配置 速度更快
USB-IF 宣布发布 USB4 版本 2 0 规范,可实现 80Gbps 传输性能,与此相关的 USB Type-C 和 USB Power Delivery (USB PD)
2022-10-20 -
微软悄然公布WSA路线图:即将引入Android 13系统支持
微软近日对Windows11端的WindowsSubsystemforAndroid(WSA)子系统带来了一些更新。根据微软在Github上...
2022-10-20 -
漫威免费卡牌游戏已可在Steam开玩 游戏节奏快且万分精彩
漫威卡牌游戏《MARVEL SNAP》现已上线 Steam,免费开玩。据官方介绍,漫威 SNAP 是一款超快节奏的策...
2022-10-20 -
皓丽2022线上发布会:5大新品亮相,多位行业大咖与合作伙伴助阵!
10月20日,皓丽举行了2022年度新品发布会,30多家平台同步线上直播,超百万人次在线观看。发布会上,皓...
2022-10-20 -
iPhone14系列进行专业跌落测试 结果表明Plus比ProMax更坚固
一家设备保险公司对苹果 iPhone 14 Plus 和 iPhone 14 Pro Max 进行的跌落测试清楚地表明,哪...
2022-10-20 -
KTC公开M27T20S显示器新品 配置较原版减去RGB灯与支架
KTC 今日公布新款 M27T20S 显示器,在原版 2K165Hz MiniLED 规格的 M27T20 的基础上砍掉了 RGB 灯、升降支架,90W USB-C 变为
2022-10-20 -
加量不加价!苹果将未发货iPad Pro免费升级到M2款-天天快讯
在新款发布前购买2021款iPadPro且尚未发货的网友表示,苹果已经提醒用户2021款iPadPro已经自动升级为新款iPadPro。
2022-10-20 -
ROG正式SwiftPG27AQN显示器详细规格 上市计划有望即日实现
在今年 CES 上,ROG 发布了新款 Swift PG27AQN 显示器,达到了 2K 360Hz 的超高规格。现在,这...
2022-10-20 -
《蝙蝠侠》新游被指要求过高:1080p推荐RTX 2070显卡及8核i7
动作游戏《蝙蝠侠》最新作《哥谭骑士》即将在10月21日发售,主机版因为锁30帧的事被玩家吐槽,PC版玩家...
2022-10-20 -
三星G8显示器今晚开售:2K+175Hz高刷 首发9999元-世界滚动
此前在海外发布的三星OdysseyOLEDG8带鱼屏显示器现已上架京东,今晚8点正式开启预售,原价13999元,预售...
2022-10-20 -
macOS13Ventura正式版即将上线 官方宣传称其将更加高效
苹果官网更新信息显示,macOS 13 Ventura 正式版将于 10 月 25 日推出,与 iPadOS 16 正式版...
2022-10-20
精彩推荐
阅读排行
相关词
- 汪泽其
- jingdongshangcheng
- motox
- sparta
- gatebox
- 刘小东
- alexa
- 牛耳奖
- elpida
- 间谍鼠
- 布加迪发布Carbone智能手表:限量2500只 售价超1.8万-当前资讯
- 淘宝购物车扩容至300 新增分组、优惠筛选等功能
- 番茄小说免费版真的可以赚钱吗
- 怎么取消XP系统的开机密码 windows无法删除密码
- 王者荣耀升级防沉迷措施:限制未成年游戏时间、氪金上限
- 李国庆成立感觉良好公司 经营范围含互联网直播服务
- 光影魔术手多图边框的快捷键是什么
- vivo X9s什么时候上市_vivo X9s上市时间
- 几款索尼投影仪价格介绍
- 空气开关规格型号大全 方便您的居家选择
- 马斯克卖香水、小鹏卖麻将,大厂“不务正业”有多疯狂-今日要闻
- 美的加湿器怎么用 美的加湿器使用方法
- 如何使用3G无线上网卡来上网 笔记本3G无线上网卡上网指南
- 可视对讲机的工作原理是什么 可视对讲机原理
- oem和odm是什么意思 oem与odm区别是什么
- 索尼vr眼镜怎么样 索尼vr眼镜报价和评测
- 比亚迪新专利曝光 可用方向盘操控车载游戏
- APP是什么意思_APP是什么
- 任务栏输入法图标不见了怎么办
- win7怎么装回xp系统 win7系统改装xp的方法-快播
- 荣耀申请灵动胶囊/精灵商标:领先苹果iPhone 14 Pro四年
- 怎么查宽带上网时间 具体方法如下
- 甲骨文公司官宣:将在OCI中部署上万个英伟达顶级计算GPU
- dnf深渊怎么开 关于dnf深渊怎么开的问题
- 华硕主板前面板耳机没有声音的解决方法-环球今热点
- KOOBEE A106怎么样
- Meta最强交易官离开公司 曾帮助脸书收购Ins
- WindowsTerminal现已成为微软最新系统默认体验终端工具
- win8运行在哪里 如何打开win8系统的运行命令-全球快消息
- 网页视频看不了怎么办_网页视频看不了的解决方法-每日报道
- win7玩cf老是与主机连接不稳定的解决方法-报资讯
- 无线AP是什么 无线AP怎么用
- 康福中国 Camfrog 6.0 中文版安装教程(英文版转中文版设置方法)
- LED背光板原理是什么 LED背光板原理详细介绍
- windows双系统怎么设置启动顺序 win双系统默认开机启动项设置方法-环球即时
- 安装电地暖价格是多少 安装电地暖价格预算
- 广汽透露将在明年投产自主品牌PHEV产品 并分析相关车型布局
- win7系统安装英雄联盟补丁包的两种方法-热消息
- qq腾讯网迷你版怎么设置不弹岀来
- 联想win8重装系统步骤 联想win8系统重装教程-世界速看
- 世纪之星机箱怎么样 世纪之星机箱介绍
- ibackupbot怎么用 ibackupbot使用教程(附ibackupbot中文版下载地址)
- 原版dell oem xp pro sp3光盘镜像下载地址-环球资讯
- win10系统电脑没有手机驱动的解决方法-时快讯
- 163邮箱登录入口 手机端163邮箱登录入口
- 蔚来总裁秦力洪回复网友建议 并称将考虑开卖欧版汽车一事
- QQ空间日志图片如何加水印
- 了解什么是电源控制器 电源控制器功能
- IPhone13pro电池容量多大-IPhone13Pro电池参数续航介绍
- 哪种植物会寄生在梭梭根部?蚂蚁庄园今日答案11.23
- 华为nova5pro和nova5i的区别
- 如何在手机QQ中下载表情包 具体操作方法
- 怎么自动识别查询快递单号查询-自动识别查询快递单号查询方法
- 电脑打电话给手机步骤详解
- win7系统下怎么调cf烟雾头-环球热议
- 电视直播软件哪个好 网络电视直播软件排行2014详情介绍
- MSN帐号格式以及MSN用户名格式的详细介绍
- 电脑进入桌面后黑屏如何修复_电脑经常进入桌面之后黑屏的处理方法-全球新动态
- xbox360手柄模拟器怎么样 xbox360手柄模拟器介绍
- ie浏览器打不开_ie浏览器打不开网页_IE浏览器打不开网页的解决方法
- 把rmvb格式转换成dvd的详细图文教程
- 数码闲聊站曝光OPPO新折叠屏手机:电池容量有望超过ZFlip4
- Win7锁定计算机快捷键是什么 Win7使用锁定计算机快捷键的方法-全球动态
- xr是什么意思-xr改的意思介绍
- 如何让win7自动拨号上网|让win7自动拨号上网的教程-全球速看
- 电脑性能怎么检测 电脑性能检测的方法
- Win7系统打开IE浏览器后页面自动关闭的四种解决方法-重点聚焦
- Win10系统如何打开内涵图种子-世界微速讯
- 鸿海董事长刘扬伟:新款电车零配件将优先采用MIH联盟成员产品
- ie浏览器网页字体怎么变大|如何将网页字体变大-全球速讯
- windows xp3 原版下载_windows xp3 原版下载地址-环球热资讯
- 怎么用硬盘装xp系统 硬盘安装xp系统步骤图解-全球聚焦
- 如何禁用和开启电脑光驱 电脑禁用和开启光驱的方法-世界新要闻
- 分析师称苹果将在后年发布OLED版iPadPro 屏幕亮度获提升
- deepmoss 2022 Autumn Winter 甲板之上
- “抱冷门”赢世界杯定制礼品!容声WILL健康冰箱羊毛“鲜”薅为敬
- “狲思邈”离世,中国“最穷”动物园出圈
- 1.8万就能拥有布加迪!全球第一款全碳纤维智能手表发布-微资讯
- 精悍小巧,功能不少! 华硕电竞路由新品RT-AX57来了
- P站宣布将区分AI画图和真人作品 提供单独的排行榜-环球速读
- 迷宫探险动作游戏《迷宫传说》繁体中文版今天正式上市!-当前快播
- “极境之域”加载中,请准备进入
- 荣耀畅玩40 Plus新机发布:首发1199元 6000mAh大电池
- PS4版《女神异闻录5:皇家版》价格永久下调100元 10月31日生效-世界球精选
- 值得买科技获2022年度第一批“北京市企业技术中心”认定
- 有了这个智能枕头 睡觉再也不打鼾了!-环球精选
- 淘宝购物车扩容至300 新增分组、优惠筛选等功能
- 摸鱼5分钟:去鹤岗全款买房幸福感飙升 90后父母给儿子取名叫“张总”-播报
- 秋冬大衣千万别在款式上作妖了!
- 联想专业电竞鼠标来了:拯救者M7将于10月底发布-环球时讯
- 最酷的姐姐就是穿着球鞋把婚结了
- 腾讯阿里抢在双11前一连三通
- 京东PLUS会员年卡76元-全球滚动
- 今晚八点正式开启预售 京东11·11促销时间表曝光
- 【手慢无】摆着都美 华硕创意游戏电脑主机只需6199元-新视野
- iPhone 14 Plus减产规模在70%-90% 刷新苹果历史
- 《寂静岭2重制版》PS5版无加载画面 支持触觉反馈等-快资讯
- 联想小新Air14 2023公开部分规格:新笔电将搭载下沉式键盘
- 骁龙处理器排名天梯图最新 骁龙处理器排行榜2022-每日聚焦
- 北京冬奥上火爆全球:谷爱凌获最佳女运动员表现奖
- 缺锂怎么办?马斯克式解决方案:特斯拉自己干
- HKC新MiniLED显示器上架:2K 240Hz 首发价2999元-全球报道
- 科乐美推出《寂静岭》周边:护士姐姐依旧吸睛-全球头条
- 超越人类的交互感受,深度体验小鹏G9智能语音-全球播报
- 朗科新推绝影NV5000-t固态硬盘 温控技术更高 售价暂未公布
- 4999元起,机械革命极光Z游戏本发布,最高可选i7-12700H-观察
- 【手慢无】无蓝光液晶屏 小米液晶小黑板仅售89元-当前动态
- Redmi X Pro 正式发布-天天快报
- ios16.1正式版推送时间计划 ios16.1正式版什么时候更新-热头条
- 【手慢无】锐龙R7-5800H处理器+2.8K OLED屏 华硕无畏14电脑入手仅需3999元-天天快播
- 微信朋友圈提到了我是什么意思 提醒谁看别人能看到吗-当前视点
- 【手慢无】小巧精悍的惠普迷你主机秒杀价2997元-世界速看料
- DXO披露Xperia10IV影像测试分数 并称其具备户外拍摄细节
- 【手慢无】联想ThinkPad neo 14英寸高性能标压笔记本,活动直降1000元-每日看点
- 特斯拉真正自动驾驶要来了?马斯克将在2023年申请监管批准
- Nreal携手LGD推出开「大」联名礼盒 LGD夺冠0元到手
- 【手慢无】护眼学习平板联想小新Pad只要899元。-天天新动态
- 联想概念新品亮相LenovoTechWorld 并提出CyberSpaces方案
- 【手慢无】小尺寸游戏平板,联想拯救者y700活动优惠价只要2269元-环球热消息
- 双·11大促即将开启 三款主流价位段3060游戏本闭眼入-天天热资讯
- 双十一前淘宝购物车扩容至300:新增分组、排序等功能
- 开发商343i为肢体残缺儿童提供《光环》主题义肢
- 微软专利揭示能调节表面粗糙度的先进显示屏
- 报道称三星正研发新款智能戒指 相关专利早已在去年提出申请
- 摩托罗拉最新演示卷轴屏概念手机 为纵向扩展还有配套动态壁纸
- 科学家在3D打印食品中直接加入二维码 且完全不影响其口感
- 云南小熊猫翘班跑进学生宿舍 动物园:将会调查其具体溜出途径
- NASA公布天体景象创生之柱新图像 其旧照曾被评为哈勃十佳之一
- 中国天眼发现迄今最大原子气体结构:或将向宇宙演化提出挑战
- 研究发现黑洞饭后会“打嗝”:吞噬小恒星多年后却又将其喷出
- 女生求职碰壁遇HR帮改简历:学会换位思考或许就能锦上添花
- 大妈跳舞过于陶醉把自己转到湖里 掉河后众人合力将大妈拉上岸
- 次世代模拟人生游戏及其开发代号正式公开 新品将可跨平台游玩
- 苹果官网最新上架编织充电线产品 接口未包含Lightning版本
- Solidigm新发布PCIe4.0SSD 最高容量为2TB 为NAND技术制造
- iPad专用妙控键盘双面夹来了 具备全尺寸按键 还有更宽触控板
- 2015款AppleTV HD将被官方停售 其操作系统为iOS完全适配
- 安卓平板所用Chrome正发布一系列更新 标签页变化更加多样
- 贝尔金最新百元iPhone支架开售:专为连续互通相机使用而设计
- 一加AcePro原神限定版发布会确定将在下周一上线 宣传语放出
- 2022款iPadPro将可使用视频编辑软件达芬奇 使用软件更专业
- 模拟人生4正式成为免费游戏 并可在PS4/XboxOne等平台开玩
- 郭明錤预测称:苹果AppleTV下代新品或将进一步下调起售价
- 苹果全新推出AppleTV 4K产品:流式传输可以千兆以太网进行
- 赛博朋克2077衍生动画制片人:现在还未有制作续集的计划
- 三星990PRO PCIe4.0SSD有望即日上市 随机读写已提高五成
- 光电编码器的工作原理介绍 光电编码器的优缺点都有什么?
- 光电编码器测速方法有哪些?光电编码器和磁电编码器的区别都有什么?
- 苹果发布iPad10后再火速上架新配件 可转换至原有Pencil接口
- 光电编码器如何判断方向?光电编码器的工作原理是什么?