社区首页 >问答首页 >ruby interperter如何解析双引号字符串?

ruby interperter如何解析双引号字符串?
EN

Stack Overflow用户
提问于 2014-01-30 15:00:06
回答 5查看 243关注 0票数 4

背景

我正在实现一种类似于Ruby的语言,作为一种在编程语言中尝试一些关于并发性的想法的方法。我试图用嵌入式代码复制Ruby的双引号字符串,作为一个程序员,这是非常有用的。

问题

任何Ruby解释器如何将带有嵌入式代码的双引号字符串转换为和AST?

例:

代码语言:javascript
代码运行次数:0
复制
puts "The value of foo is #{@foo}."

puts "this is an example of unmatched braces in code: #{ foo.go('}') }"

详细信息

我遇到的问题是如何决定哪个}关闭代码块。代码块可以有其他大括号,只要稍加努力,它们就可以是无与伦比的。lexer可以在字符串中找到代码块的开头,但是如果没有解析器的帮助,它就无法确定哪个字符是该块的末尾。

看起来Ruby的parse.y文件同时执行了词法和解析步骤,但是读那东西是一场噩梦它有11628行长,没有注释和大量的abbr。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-01-30 15:28:31

诚然,雅克文件一开始读起来可能有点让人望而生畏,而parse.y并不是最好的文件。您看过各种字符串产生规则吗?你有什么特别的问题吗?

至于实际的解析,确实并不少见的是,词汇者也会解析数字文字和字符串,例如,请参见此处接受的相似问题答案。如果你以这种方式处理事情,就不难看出如何去做。点击字符串中的#{,基本上会启动一个新的解析上下文,该上下文再次被解析为表达式。这意味着您的示例中的第一个}不能是内插的终止},因为它是表达式中文字字符串的一部分。一旦您到达表达式的末尾(请记住表达式分隔符,如;),下一个}就是您所需要的。

票数 2
EN

Stack Overflow用户

发布于 2014-01-30 16:57:24

这不是一个完整的答案,但我希望它对我或跟踪我的人都有帮助。

Matz在他的书的第11章中给出了parse.yparse.y函数的详细描述。它没有直接提到字符串,但它描述了lexer如何使用lex_state来解析Ruby中的几个本地模糊结构。

这一章的英文译文的复制品可以找到这里

票数 1
EN

Stack Overflow用户

发布于 2014-02-01 10:26:11

Dart还支持插入到字符串中的表达式,比如Ruby,我已经为它略读了几个解析器。我相信他们所做的是为字符串文本在插值之前定义单独的标记,并在末尾定义字符串文本。所以如果你标记:

代码语言:javascript
代码运行次数:0
复制
"before ${the + expression} after"

你会得到这样的代币:

代码语言:javascript
代码运行次数:0
复制
STRING_START "before "
IDENTIFIER   the
PLUS
IDENTIFIER   expression
STRING       " after"

然后,在解析器中,处理STRING_START以解析后面的插值表达式是一个非常简单的过程。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21469239

复制
相关文章
移除WordPress 顶部管理菜单左侧的logo 图标
在登陆状态下,WordPress 的顶部会有一条黑色的菜单,左边有一个WordPress 的logo图标,所链接的url 都是几乎用不上的。因此,如果你想移除WordPress 顶部管理菜单左侧的logo 图标,可以参考以下代码实现: 在主题的functions.php 文件下加入以下代码: function annointed_admin_bar_remove() { global $wp_admin_bar; /* Remove their stuff */ $wp_admin_bar->remove_
Jeff
2018/01/19
2.1K0
Mac上如何移动隐藏删除顶部菜单栏图标
苹果菜单栏贯穿 Mac 的屏幕顶部。这里小编就来指导大家一下Mac如何移动隐藏删除顶部菜单栏图标。
MAC先森
2019/10/25
14.9K0
axure 发布后隐藏顶部菜单 或展开顶部菜单[通俗易懂]
axure 9.0 版本在发布后HTML页面打开时总是在顶部弹出菜单 既不美观也影响效果
全栈程序员站长
2022/09/23
1.6K0
axure 发布后隐藏顶部菜单 或展开顶部菜单[通俗易懂]
获取图片的位置(距离最顶部)
所以就需要根据图片的当前位置(元素距离顶部的位置(包括滚动条),和左边的位置)来动态的添加这个按钮
biaoblog.cn 个人博客
2022/08/11
2K0
获取图片的位置(距离最顶部)
Windows图标显示异常解决方法。桌面图标异常,开始菜单图标异常,任务栏图标异常。图标缓存位置。
解决办法: 在C:\Users\Administrator\AppData\Local里有个IconCache.db图标缓存,它是隐身的。一般图标出现异常就是这个缓存的问题了,我们把这个删掉,之后重启后会自动重新生成新的,然后就好了。
小蓝枣
2020/09/23
5.4K0
scetch入门 第2部分:文本,对齐和SVG在第3部分中了解如何导出文件
这是本教程第1部分的延续。在本部分中,我们将介绍文本工具,对齐以及在Sketch中使用导入的矢量图形。
iOSDevLog
2018/08/10
4.1K0
scetch入门 第2部分:文本,对齐和SVG在第3部分中了解如何导出文件
设置HEXO博客菜单图标
本文只介绍hexo怎么设置菜单图标,并不说明怎么安装Font Awesome字体(因为一般主题都已经带了),如需了解的请自行百度。
用户9949933
2023/02/24
8660
Android开发之TabLayout实现顶部菜单
在Android开发中,经常要使用顶部菜单,如网易新闻、今日头条等,实现顶部菜单以前是ViewPager配合PagerTabStrip来实现,但Android 5.0以后,推荐大家使用MD中的TabLayout来实现,很简单哦~~ </br> ---- 开发环境:Android Studio 开发步骤 1、在 build.gradle 导入 com.android.support:design:22.2.1 2、Activity布局 <LinearLayout xmlns:android="http://
YungFan
2018/04/24
1.8K0
Android开发之TabLayout实现顶部菜单
vs code 打开顶部菜单栏和左侧菜单栏的方法
按快捷键 F1 或者 shift+ctrl+p 切换出命令行,然后输入menu 有个view:toggle Menu bar 的功能,即可打开顶部菜单栏
朵朵花儿
2019/09/19
11.5K0
vs code 打开顶部菜单栏和左侧菜单栏的方法
JavaScript是如何工作的:渲染引擎和优化其性能的技巧
当你构建 Web 应用程序时,你不只是编写单独运行的 JavaScript 代码,你编写的 JavaScript 正在与环境进行交互。了解这种环境,它的工作原理以及它的组,这些有助于你够构建更好的应用程序,并为应用程序发布后可能出现的潜在问题做好充分准备。
前端小智@大迁世界
2019/01/29
1.6K0
JavaScript是如何工作的:渲染引擎和优化其性能的技巧
菜单栏页面内的顶部图片展示
在source中有中每个页面的配置文件夹,如tags、categories、music等:
用户10551528
2023/10/18
1200
菜单栏页面内的顶部图片展示
如何用 canvas 渲染 Web Excel 富文本
在一些前端开发场景中,可能会遇到使用 canvas 来渲染文本,例如 web 表格应用,就是用 canvas 来渲染文本,如果大家去检查飞书、谷歌、石墨、腾讯表格可以发现它们都是用 canvas 来实现的。
羽月
2022/10/08
1.3K0
如何用 canvas 渲染 Web Excel 富文本
HTML+CSS 简单的顶部导航栏菜单制作
img标签,导入图片,a标签超链接 ,img导入图片,防止图片失真width和height设置一个就可以了
全栈程序员站长
2022/09/02
3.8K0
Echarts饼状图标题位置的设置
Echarts饼状图标题位置一开始默认是在左上方,根据需要,echarts饼图标题如何显示在饼图右下方 ?只需要修改legend里面的xy属性即可:
王小婷
2019/08/20
7.7K0
css渲染(二) 文本
一、文本样式 首行缩进  text-indent   首行缩进是将段落的第一行缩进,这是常用的文本格式化效果。一般地,中文写作时开头空两格。[注意]该属性可以为负值;应用于: 块级元素(包括bloc
柴小智
2018/04/10
1.2K0
css渲染(二) 文本
ztree+json,渲染树形菜单
前面的话:zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。专门适合项目开发,尤其是 树状菜单、树状数据。
王小婷
2021/11/24
2.2K0
ztree+json,渲染树形菜单
新闻类App顶部菜单栏封装
最近有一个需求,类似今日头条顶部的菜单栏。唯一区别是需要带可移动的下划线。网上查找资料,发现解决方案大部分是用UIScrollView实现。下方VC控制用UICollectionView。这样可以解决问题,但是不完美,当标签很多的时候,这时候的UIScrollView上会有大量写死的Button,没有达到复用的目的。所以自己封装了一个空间。菜单栏使用UICollectionView,VC控制使用PageViewController。
王大锤
2018/12/20
1.1K0
7b2美化-顶部菜单透明
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
小狐狸说事
2022/11/16
6390
Helm稳定和孵化仓库的新位置
如前所述,稳定(stable)仓库和孵化(incubator)仓库已经转移到新位置。这篇文章将更新你关于新地址,并提供开始使用它们的方法。
CNCF
2020/10/30
1.3K0
点击加载更多

相似问题

使用CSS将我的文本推到10 by

11

如何设置稳定的文本位置?

10

如何在菜单中设置文本位置上的图标

32

在顶部和底部位置显示图标和文本

08

将图像后面的文本推到div的顶部

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档