一个JavaScript版本的bison

jison是一个 JavaScript 编写的解析器生成器,可以用来生成自定义的编程语言解析器。它的令人兴奋的点在于,它允许开发人员使用 JavaScript 语言来定义语法规则,然后将其转换为解析器,从而支持自定义的编程语言。

在前端应用方面,Jison 可以用于实现自定义的模版引擎,例如类似于 Handlebars 或者 Mustache 的模版引擎。通过使用 Jison,开发人员可以定义自己的模版语法规则,然后将其转换为解析器,从而实现对自定义模版语法的支持。


(相关资料图)

此外,Jison 还可以用于实现自定义的 DSL(领域特定语言),例如在前端应用中实现一些特定的业务逻辑,例如表单验证、数据格式化等等。通过使用 Jison,开发人员可以定义自己的 DSL 语法规则,然后将其转换为解析器,从而实现对自定义 DSL 的支持。

jison有很多demo可以供参考,比如 写一个计算器 https://gerhobbelt.github.io/jison/try/

demo

要实现这个计算器,你的代码不再是手写解析算术表达式,手写语法树解析,然后计算结果,而是只用定义规则,剩下的事让机器帮你搞定就好了:

cala.bison

/* description: Parses end executes mathematical expressions. *//* lexical grammar */%lex%%\s+                   /* skip whitespace */[0-9]+("."[0-9]+)?\b  return "NUMBER""*"                   return "*""/"                   return "/""-"                   return "-""+"                   return "+""^"                   return "^""("                   return "("")"                   return ")""PI"                  return "PI""E"                   return "E"<>               return "EOF".                     return "INVALID"/lex/* operator associations and precedence */%left "+" "-"%left "*" "/"%left "^"%left UMINUS%start expressions%% /* language grammar */expressions    : e EOF        {return $1;}    ;e    : e "+" e        {$$ = $1+$3;}    | e "-" e        {$$ = $1-$3;}    | e "*" e        {$$ = $1*$3;}    | e "/" e        {$$ = $1/$3;}    | e "^" e        {$$ = Math.pow($1, $3);}    | "-" e %prec UMINUS        {$$ = -$2;}    | "(" e ")"        {$$ = $2;}    | NUMBER        {$$ = Number(yytext);}    | E        {$$ = Math.E;}    | PI        {$$ = Math.PI;}    ;

要了解jison的强大,就必须了解下DSL,以及它能够高效的解决哪些问题:

DSL(Domain-Specific Language)是一种用于特定领域的编程语言,它是为了解决某些领域特定的问题而设计的。与通用编程语言相比,DSL更加专注于特定领域,因此在该领域内更易于使用和理解。DSL可以通过语法、关键字或标记等方式来描述特定领域内的问题,并提供相应的解决方案。常见的DSL包括配置文件语言、领域特定脚本语言、数据流语言等。DSL的好处在于可以提高编程效率和代码可读性,同时也使得非程序员能够更容易地理解和维护代码。

简单的实现一个DSL的步骤

要完整实现一个DSL,需要以下步骤:

1.定义DSL的语法和语义:DSL语言需要有自己的语法和语义,以便用户能够使用该语言来表达自己的意图。语法定义通常使用BNF或EBNF表示。

2.实现DSL的解析器:DSL解析器是将DSL代码解析为计算机可执行的指令的程序。解析器通常使用词法分析器语法分析器来实现。

3.实现DSL的执行器:DSL执行器是将DSL代码转化为实际的计算机操作的程序。执行器通常使用解释器或编译器实现。

其中词法分析器,语法分析器这些都有非常稳定的工具,比如,如果有定义好的BNF范式,直接丢给 flex 就可以解决词法分析的这个过程,然后在丢给 yacc,就可以按照这个规则编译出可执行程序,也许你会觉得这个非常不可思议,怎么写一堆规则就可以变成可执行程序呢?但实际上,你好好思考下,你写程序部也是在规定一些规则吗?

if/else/while/... ,这部都是在告诉计算机如何理解并执行你的意图吗?OK,立即这些,就看看其中的一些概念,对于新手可能需要科普一下:

BNF或EBNF简单的描述

BNF(巴克斯-诺尔范式)和 EBNF(扩展巴克斯-诺尔范式)是一种用于描述编程语言结构的形式语法。例如,下面是一个使用BNF表示的简单数学表达式:

 ::=  |  "+"  |  "-"  ::=  |  "*"  |  "/"  ::=  | "("  ")"

这个BNF描述了一个数学表达式可以由一个项(term)或一个表达式(expr)加减一个项(term)组成。一个项可以由一个因子(factor)或一个项(term)乘除一个因子(factor)组成。一个因子可以是一个数字(number)或者一个表达式(expr)。

EBNF是BNF的一个扩展,添加了更多的元素来描述更复杂的语言结构。例如,下面是一个使用EBNF描述的简单的JSON对象:

 ::= "{"  {"," } "}" ::=  ":"  ::= """ {} """  ::=  |  |  |  | "true" | "false" | "null" ::= {} ["." {}] ["e" [] {}]

这个EBNF描述了一个JSON对象由大括号包围着若干个属性(property)组成。每个属性包含一个字符串键(string)和一个值(value),用冒号分隔。字符串是由双引号包围的任意字符的序列(char)。值可以是一个字符串,一个数字,一个JSON对象,一个JSON数组,或者true/false/null中的一个。数字是由一个或多个数字(digit)和一个可选的小数点以及一个可选的指数部分组成。

上面这一堆精准定义的规则都是一些上下文无关文法,要准确写出flex可以用的规则,必须对上下文无关文法比较熟悉,比如不能出现左递归、不能出现空规则等等:

上下文无关文法

上下文无关文法(Context-Free Grammar)指的是一种形式文法,其中所有规则的左部只包含一个非终结符号,而右部可以是任意长度的终结符和非终结符序列。上下文无关文法是自然语言处理、编译原理和计算机语言设计等领域中广泛使用的一种形式化表示方法。

要轻松写一个上下文无关文法,可以按照以下步骤进行:

1. 确定终结符号集和非终结符号集。终结符号是指语言中的基本符号,如字母、数字、标点符号等;非终结符号是指可以被分解为其他符号序列的符号,如句子、短语、单词等。2. 编写规则。规则由两部分组成,左部为非终结符号,右部为终结符号和/或非终结符号的序列。例如,一个简单的规则可以写为:S -> aSb,表示S可以被替换为一个"a",后面跟着S,再后面跟着一个"b"。3. 定义起始符号。起始符号是文法中唯一的一个非终结符号,表示整个文法的起点。通常用大写字母来表示起始符号。4. 检查文法的合法性。文法需要满足一些条件,如不能存在左递归、不能出现空规则等。

例如,一个简单的上下文无关文法可以表示一个简单的算术表达式:

1. 终结符号集:数字(0-9)、加号(+)、减号(-)、左括号(()、右括号())

2. 非终结符号集:表达式(E)、项(T)、因子(F)

3. 规则:

E -> E+T | E-T | T   T -> T*F | T/F | F   F -> (E) | num

4. 起始符号:E

这个文法可以生成类似于“3+4*5”的算术表达式。

左递归和空规则

左递归:在一个产生式的右部出现了该产生式本身作为左部的情况,例如:A->Aα(α为任意串)。这种产生式会导致递归调用,容易陷入死循环,因此需要消除左递归。

空规则:也称ε规则,表示产生式右部可以为空,例如:A->ε。如果某个非终结符的所有产生式都是空规则,那么这个非终结符可以被省略,也就没有必要存在了。但是,如果存在空规则,那么在语法分析时需要进行特殊处理,增加算法的复杂度。因此,尽量避免使用空规则。

DSL擅长解决哪些领域的问题

DSL(领域特定语言)擅长解决领域特定问题,即在特定领域中使用的编程语言。以下是一些DSL可以解决的问题的例子:

1. SQL:SQL是一种DSL,用于在关系数据库中查询和操作数据。它是用于数据管理和查询的最常用的DSL之一。2. HTML和CSS:HTML和CSS是用于构建Web页面的DSL。HTML用于定义页面的结构和内容,CSS用于定义页面的外观和样式。3. LaTeX:LaTeX是一种DSL,用于创建高质量的科学文档和出版物。它提供了丰富的排版控制,使得用户可以创建复杂的数学公式,图表和图形。4. R:R是一种DSL,用于数据分析和统计。它提供了许多内置函数和库,可以用于数据可视化,机器学习和预测建模等任务。5. Regex:正则表达式是一种DSL,用于匹配和操作文本。它在许多编程语言中都得到了广泛的应用,可以用于文本搜索,替换和解析。

DSL可以用于在特定领域中更有效地解决问题,提高开发效率和代码质量。

推荐内容

  • 环球热头条丨懂前端的你也可以轻松定义自己业务的DSL
    环球热头条丨懂前端的你也可以轻松定义自己业务的DSL

  • 当前时讯:全国首批,全市唯一!城阳区捧回\
    当前时讯:全国首批,全市唯一!城阳区捧回\"全民运动健身模范区\"奖牌

  • 青岛印发耕地保护激励办法 最高可奖励100万元
    青岛印发耕地保护激励办法 最高可奖励100万元

  • 提前4秒防碰撞预警,2.8秒紧急制动!青岛公交车用上“黑科技”
    提前4秒防碰撞预警,2.8秒紧急制动!青岛公交车用上“黑科技”

  • 全球信息:“海底隧道”点亮夜空!青岛胶东机场新增沉浸式迎宾景观
    全球信息:“海底隧道”点亮夜空!青岛胶东机场新增沉浸式迎宾景观

  • 热讯:甜酒煮鸡蛋有什么功效_原来有这个好处
    热讯:甜酒煮鸡蛋有什么功效_原来有这个好处

  • 买车最高可享1万元优惠!即墨推出汽车惠民消费券,3月20日10点发放
    买车最高可享1万元优惠!即墨推出汽车惠民消费券,3月20日10点发放

  • 世界简讯:最短1.5小时可达!3月22日起,济青高铁新增6对管内旅客列车
    世界简讯:最短1.5小时可达!3月22日起,济青高铁新增6对管内旅客列车

  • 天天快播:学车考证要注意!3月20日起,培训学时不达标无法预约考试
    天天快播:学车考证要注意!3月20日起,培训学时不达标无法预约考试

  • 青岛海牛第四外援放弃出征非洲杯,下周二来华与球队会合
    青岛海牛第四外援放弃出征非洲杯,下周二来华与球队会合

  • 3月20日起,青岛地铁1号线早高峰优化调整!附时间表
    3月20日起,青岛地铁1号线早高峰优化调整!附时间表

  • 旗台效果图_旗台旗杆标准尺寸
    旗台效果图_旗台旗杆标准尺寸

  • 【当前独家】李沧区白石艺术培训学校突然关门 家长退费难
    【当前独家】李沧区白石艺术培训学校突然关门 家长退费难

  • 天天新动态:“抢单”国际市场,青岛举办今年首场外资外贸企业专场线下招聘会
    天天新动态:“抢单”国际市场,青岛举办今年首场外资外贸企业专场线下招聘会

  • 【世界报资讯】强信心·稳经济·促发展 | 青岛发布今年140个服务业重点项目
    【世界报资讯】强信心·稳经济·促发展 | 青岛发布今年140个服务业重点项目

  • 即时看!桑葚泡茶的功效与作用
    即时看!桑葚泡茶的功效与作用

  • 环球快看:出门带伞!青岛今天局部阵雨+轻雾,市区最高气温8℃最低3℃
    环球快看:出门带伞!青岛今天局部阵雨+轻雾,市区最高气温8℃最低3℃

  • 文明青岛随手拍|路面破相了?上传马上修!“随手拍”保驾平安出行
    文明青岛随手拍|路面破相了?上传马上修!“随手拍”保驾平安出行

  • 当前头条:李沧区实施双峰山拆违攻坚,双峰山公园预计明年年底投用
    当前头条:李沧区实施双峰山拆违攻坚,双峰山公园预计明年年底投用

  • 栈桥激光秀、中山路亮化、主题市集时间安排出炉
    栈桥激光秀、中山路亮化、主题市集时间安排出炉

  • 世界简讯:涉及广告招牌、景观照明、海水浴场,今年青岛市容景观品质提升的举措来了
    世界简讯:涉及广告招牌、景观照明、海水浴场,今年青岛市容景观品质提升的举措来了

  • 天天亮点!把噪声、扬尘“关”起来!青岛地铁三期线路全面落地应用全封闭施工大棚
    天天亮点!把噪声、扬尘“关”起来!青岛地铁三期线路全面落地应用全封闭施工大棚

  • 【速看料】“一枝梅”玩出新花样!青岛“花经济”香气四溢
    【速看料】“一枝梅”玩出新花样!青岛“花经济”香气四溢

  • 当前关注:党员意识方面存在的问题及整改措施2023_党员意识方面存在的问题及整改措施2019
    当前关注:党员意识方面存在的问题及整改措施2023_党员意识方面存在的问题及整改措施2019

  • 快讯:四年级小学作文美丽的校园二百字左右怎么写_四年级小学作文美丽的校园二百字左右
    快讯:四年级小学作文美丽的校园二百字左右怎么写_四年级小学作文美丽的校园二百字左右

  • 世界观察:地铁4号线大埠东站C出入口将自3月17日8时起临时关闭,预计3月20日恢复
    世界观察:地铁4号线大埠东站C出入口将自3月17日8时起临时关闭,预计3月20日恢复

  • 李村河上游绿道开工建设 今年7月底前完工并交付
    李村河上游绿道开工建设 今年7月底前完工并交付

  • 环比增幅列怎么设置_环比增幅
    环比增幅列怎么设置_环比增幅

  • 中加颐智纯债基金限购
    中加颐智纯债基金限购

  • 全球快资讯:两名新外援已与球队会合 备战中超新赛季,海牛掀起青春风暴
    全球快资讯:两名新外援已与球队会合 备战中超新赛季,海牛掀起青春风暴

  • 聚焦:建设6栋住宅及配套设施!李沧区这个城中村改造项目规划公示
    聚焦:建设6栋住宅及配套设施!李沧区这个城中村改造项目规划公示

  • 天天观热点:闲话杂谈④|“儿子们”被封!什么悲惨身世,什么治疗神药,满满的都是套路
    天天观热点:闲话杂谈④|“儿子们”被封!什么悲惨身世,什么治疗神药,满满的都是套路

  • 短讯!网购宠物猫被拉黑,想撸“喵”?脱离平台交易要当心!
    短讯!网购宠物猫被拉黑,想撸“喵”?脱离平台交易要当心!

  • 全球简讯:在春天相遇 青岛新闻网【一见倾心】相亲群也太宝藏了!
    全球简讯:在春天相遇 青岛新闻网【一见倾心】相亲群也太宝藏了!

  • 风语筑:基于文心大模型ERNIE和Stable Diffusion打造击鼓舞狮的Al交互体验
    风语筑:基于文心大模型ERNIE和Stable Diffusion打造击鼓舞狮的Al交互体验

  • 关注:“多一个人看见 就多一点希望”!青岛300多处快递驿站张贴500条寻亲信息
    关注:“多一个人看见 就多一点希望”!青岛300多处快递驿站张贴500条寻亲信息

  • “开往春天的巴士”已发车,去樱桃花海徜徉吧!
    “开往春天的巴士”已发车,去樱桃花海徜徉吧!

  • 热消息:加快建设世界一流海洋港口、世界一流企业!山东港口按下高质量发展“加速键”
    热消息:加快建设世界一流海洋港口、世界一流企业!山东港口按下高质量发展“加速键”

  • 天天时讯:优化教育资源配置,青岛这两所学校传来新进展
    天天时讯:优化教育资源配置,青岛这两所学校传来新进展

  • 当前速看:200多名新兵奔赴火热军营!2023年上半年青岛市新兵入伍欢送仪式举行
    当前速看:200多名新兵奔赴火热军营!2023年上半年青岛市新兵入伍欢送仪式举行

  • 脸上长痘痘位置原因图
    脸上长痘痘位置原因图

  • 热推荐:景观优化+楼间距变大!华新园东宸府规划变更
    热推荐:景观优化+楼间距变大!华新园东宸府规划变更

  • 【天天热闻】山东2023年高考体检时间定了,来看!
    【天天热闻】山东2023年高考体检时间定了,来看!

  • 内蒙古推出两项专项政策“引客入蒙”,最高奖励10万元
    内蒙古推出两项专项政策“引客入蒙”,最高奖励10万元

  • 环球热门:力争6月底前主线通车!合肥路这段路将拓宽为双向8车道、设计时速50公里
    环球热门:力争6月底前主线通车!合肥路这段路将拓宽为双向8车道、设计时速50公里

  • 八大板块活动精彩纷呈,“春日寻游·大鲍岛”城市艺术节周末启幕
    八大板块活动精彩纷呈,“春日寻游·大鲍岛”城市艺术节周末启幕

  • 天天速递!三地名师汇集 共同研讨语文教学
    天天速递!三地名师汇集 共同研讨语文教学

  • 环球热消息:相约省旅发大会丨春意盎然 来青岛老城上街里与春天热情拥抱!
    环球热消息:相约省旅发大会丨春意盎然 来青岛老城上街里与春天热情拥抱!

  • 焦点热讯:总投资3.2亿元打造夜游文旅新地标 城阳将建起青岛版“不夜城”
    焦点热讯:总投资3.2亿元打造夜游文旅新地标 城阳将建起青岛版“不夜城”

  • 全球今日报丨让孩子午休“趴睡”变“躺睡”,青岛这几所学校各显神通
    全球今日报丨让孩子午休“趴睡”变“躺睡”,青岛这几所学校各显神通

  • 腾讯视频会员费涨价约33% 提价为了解决成本焦虑
  • 银行清理“沉睡卡”应更人性化 有助于防范个人风险
  • “家电超期”隐患不容忽视 市场需求催化消费升级
  • 闲鱼加强租房管理:将下架或删除违规房源信息 限制发布或屏蔽房源信息
  • 联想集团与诺基亚就专利诉讼案达成和解 联想将向诺基亚支付净差额
  • 华为关联公司公开“一种心电信号的检测方法”相关专利 方便用户确定自身的身体状况
  • 腾讯关联公司公开“智能电表的远程控制方法”相关专利 本发明使得用户可以实时查询电量数据
  • 达摩院将精准医学检索水平提升近10%,国际权威评测夺冠
  • 闲鱼:已向微信提交小程序申请 提升购物分享体验
  • 钉钉联合沃柯雷克推出幼儿园晨检机器人 产品结合自研AI儿童健康算法
  • 首次贡献代码的7年后,微软正式发布OpenJDK预览版积极参与Java
  • 全球最赚钱的 50 个 IP,终于有了中国IP
  • 下游应用动态西门子宣布进入5G专网领域,5G终端小米旗舰路由器AX9000正式开售
  • 罗德与施瓦茨中标中国三大运营商的5G扫频仪集采项目,新加坡推动5G﹢智慧建筑
  • 小鹏汽车正自研芯片,主要研发自动驾驶专用芯片
  • 一线楼市小长假未见“小阳春” 多地在调控背景下降温
  • 增值税发票数据显示:清明假期消费保持较快增长 全国居民消费市场持续活跃
  • 平均工资数据公布时 为何总感觉自己“拖后腿”?平均工资如何计算?
  • 侵尘文化获千万级投资,姚记科技持续扩张创新营销版块业务范围
  • 金融助绿色电力完成发行,浦发银行主承销市场首单境内外双认证碳中和债
  • 河北推进农村燃气信息化建设 2022年底前将建成监管平台
  • 神州信息同清华大学五道口金融学院发布人工智能新品
  • 双汇物流与百度达成合作 推进冷链物流行业发展
  • 推动区域高质量发展 东方雨虹江西生产基地项目开工
  • 雄安成立“获得电力马上办”办公室 为疏解企业提供服务
  • “造车”之风刮向市场 哈啰宣布制造电动车
  • “南强兴鹭”计划开启 吸引厦大校友返厦投资
  • 推动广东文旅发展 首届文旅光影设计大赛开启
  • 4898亿元产业项目签约 上海加强“新城”“特色园区”建设
  • 国家大豆产业科技成果转化“伙伴行动”在黑河启动
  • 4万平方米空间!前海启动深港专业服务业集聚区建设
  • 中国黑河67个项目开复工 深拓对俄能源合作
  • 330米!沈阳市沈河区金廊22-1项目正式开工
  • 税收红利“真金白银”的有力支持 制造业转型跑出“加速度”
  • 三星LG利润齐飙升 销售额、利润双双创下单季最高纪录
  • 中国能建葛洲坝电力蜈蚣山风电风机吊装完成
  • 长租公寓的蜕变与重生 偃旗息鼓的租金贷
  • “医全通”助力修正药业迈入智能营销标准化时代 削减了药品流通渠道的成本沉淀
  • 商务部:拟培育一批国家加工贸易产业园
  • 科技助力 精雕细琢 中国二十冶技改公司攻克多项施工技术难题
  • 华熙生物2020年营收、净利润双增长 华熙生物已占全球市场份额近一半
  • 安徽自贸试验区深耕“试验田” ,设企业近4000家
  • 10个总投资201亿项目落户湖南工程配套产业园
  • 中国将放宽对于海南自贸港市场的准入
  • 京沪高速助力区域新的协调发展   
  • 脉动宣布品牌代言人 推出了首款维生素气泡饮
  • 安(庆)九(江)高铁湖北段进入正式铺轨阶段
  • 中国最深页岩气井近日完钻创纪录
  • 华为入局再次冲击支付“双寡头”格局 市场有待观察
  • 理邦仪器:一季度预计实现营收5.03亿元至5.21亿元,同比上升40%至45%
  • 成都加速建设“三城三都” ,融入全球美食供应网络
  • 白鹤滩水电站开始蓄水 首批机组今年7月将投产发电总装机容量1600万千瓦
  • 各界大佬竞相跨行造车 电动汽车有回报吗?
  • 广汽集团关联公司公开“自动驾驶”相关专利 申请日期为2018年9月
  • 沈阳将优化营商环境视为“一号工程”
  • 护肤与功能性食品品牌“柠琅”获数千万元天使轮融资 将用于后续产品开发等
  • 百度关联公司公开“医嘱质控的方法”相关专利 提高医嘱质控的准确率和召回利率
  • 魅族关联公司在北京投资成立新公司,经营范围含软件开发
  • 科大讯飞2020年营收增长29.23% 智慧教育领域竞争壁垒明显
  • 腾讯控股开盘跌超2%,第一大股东宣布持股将从30.9%降至28.9%
  • 河南推进85个重点外资项目 涉资158亿美元
  • 仲景食品上市首年净利增近40% 去年经销商净增加242家
  • 园艺界“奥林匹克”落户长三角 体现“人与自然”和谐相处
  • 客户集中埋下隐患 鸿富瀚有潜在风险
  • 第十届北京国际印刷技术展媒体周活动在京开幕
  • 香港恒生指数高开低走跌0.91% 携程通过港交所聆讯
  • 集运市场高景气度传导 29只成分股中有28只上涨
  • 新一轮惠企政策不断加码 各地精准施策企业创新能力不断加强
  • 大立科技控股股东、实控人950万股质押延期购回 质押用途为个人融资需求
  • 2020年武汉市大健康产业规模达到4000亿元
  • 兴泉铁路重难点控制性工程完工 预计9月具备开通条件
  • 重庆首批加氢站开建 加速形成产业集群中
  • 投资超700亿元湖南湘江新区产业项目签约 研发制造智能驾驶相关集成产品的项目等
  • 大连高新区服务模式推新 104名干部成项目管家提供“1+1+N”式包保服务
  • 凭四级梯队、全程培育苏州高新区成创新型企业集聚高地 抵御网络黑客的攻击
  • 社会节奏的加快微创新带来新机遇 真实社交赋能美好生活
  • 总投资140亿元 天津打造智慧科技产业园为区域发展引育新动能
  • 为何三分之一智能制造国家标准出自这个园区 企业智能制造升级进程加快
  • “冰丝带”伴我成长 从速滑名将转型为项目竞赛管理者
  • “看不见的转换”为冬奥添底气 测试活动一一摆开
  • @制造业人才,这些新职业将与你相关 还有哪些在“风口”上?
  • 平台经济改变的不只你我生活 平台经济主要有三种业态
  • 春耕农忙时宁夏专家线上传授农技知识 探索信息化农业科技服务新模式
  • 数字化转型配套标准体系建设按下“快进键” 促进行业健康发展
  • 智慧旅游将更好满足人们“放飞心情”需求 以文塑旅、以旅彰文
  • 面对自然法则极限摩尔定律这根指挥棒还能挥舞多久 是预测,更是小目标
  • 人工培养噬菌体成功阻止“超级细菌”生长 相关成果发表在《药物学》杂志上
  • 科学家新发现身披盔甲的“挖土”恐龙 相关研究发表在《科学报告》
  • 人类过度干预下,亚马逊雨林或成全球变暖帮凶 失去平衡,雨林可能变草原
  • “新月抱旧月”,四月看真切 地球反照,助月为明
  • 舞泡网为商家揭秘天猫店铺转让的本质
  • 舞泡网分享抖音小店运营技巧
  • 自由式滑雪空中技巧混合团体中国队摘银
  • 青岛四岁女童火锅店里头卡护栏 消防剪断栏杆两分钟救出
  • 起步冲刺!董家口经济区总投资175亿元10个项目开工
  • 保时捷、奔驰、宝马……17辆车拍卖成交价超660万元
  • 青岛出台影视“新政”:扶持拍出更多“流浪地球”式大片
  • 单均保费下降649元、为消费者节省24亿元!青岛车险综改成绩单来了
  • 一墩难求?庆功“红包”免费领?当心这些蹭冬奥热度的骗局
  • 网友排队安慰贾宗洋!这张X光片让人泪目
亚洲项目网