rebol解析函数可以创建完全解析css2/css3的规则吗?

2023-12-28

rebol 解析函数的能力有限制吗?它是否能够解析整个 css2 / css 3 规范,或者是否会遇到理论上不可能形成某些规则的情况?

HostileFork 回答后更新:我的意思是在正则表达式中我认为这是相当不可能的,解析是否更强大?

如果是,这是否意味着可以在 rebol vid 中构建一个与 html5 兼容的浏览器?


你的“是否有限制”的问题很棘手。我会尽力给你“the回答”而不是仅仅“是的,当然”......这会更方便,尽管不太有教育意义。:)

考虑以下片段。它将解析器位置捕获到x,然后以 DO 方言运行括号中的内容。该代码重新设置x到输入的尾部,如果css-parser函数成功,或者如果函数失败则转到输入的头部。最后,它将解析位置设置为当前x。正如我们所知,只有当规则完成时我们处于输入序列的末尾时,PARSE 才会返回 true...

parse my-css [x: (x: either css-parser x [tail x] [head x]]) :x]

这是有效的解析方言代码AND当(且仅当)css-parser函数成功。因此,如果你能用 Rebol 编写 css 解析器,你就可以“用解析方言”编写它。

(这引出了一个问题:是否可以在 Rebol 函数中解决给定的计算问题。值得庆幸的是,计算机科学家不必每次出现新语言时都重新回答该问题。您可以计算通过以下方式计算的任何内容图灵机,没有什么是不可能的……看看吧阿兰·图灵自己的话 http://hostilefork.com/tag/turing/,通俗地说。 CSS 解析并不完全是停止问题,所以是的......它可以完成。)

我将尝试重新构建您的问题:

“是否可以编写一个规则块(不使用 PAREN!、SET-WORD!或 GET-WORD!构造),将其传递到 PARSE 函数中,并在任何有效的 CSS 文件上返回 TRUE,在任何有效的 CSS 文件上返回 FALSE畸形的吗?”

W3C 发布了关于 CSS 好坏的正式规范:

http://www.w3.org/TR/CSS2/grammar.html http://www.w3.org/TR/CSS2/grammar.html

但请注意,即使在那里,也不是一成不变的。他们对颜色常量的“正式”规范不能排除#abcd,他们必须在评论中用英语写下:

/*
 * There is a constraint on the color that it must
 * have either 3 or 6 hex-digits (i.e., [0-9a-fA-F])
 * after the "#"; e.g., "#000" is OK, but "#abcd" is not.
 */
hexcolor
  : HASH S*
  ;

这让我们不禁要问,在我们通过拿走 PAREN!/GET-WORD!/SET-WORD! 来束缚 PARSE 的手脚之后,我们是否会原谅 Rebol 无法进行这种识别呢? (我只是想针对你的问题指出这一类问题)。

作为 Rebol 3 解析项目的一部分,有一篇文章解析理论 http://www.rebol.net/wiki/Parse_Project#Theory_of_PARSE...

PARSE 方言是自顶向下解析语言家族(TDPL 家族)的增强成员,包括自顶向下解析语言(TDPL)、通用自顶向下解析语言(GTDPL)和解析表达式语法(PEG)使用与家族其他成员相同的“有序选择”解析方法。

正如上面的链接所指出的,作为此类的成员,Rebol 的 PARSE 严格来说比正则表达式和LL解析器 http://en.wikipedia.org/wiki/LL_parser。我认为它也比 LL(k) 和 LL* 解析器更强大,但自从我研究这些东西以来已经有一段时间了,我不会把我的生命押在它上面。 :)

您实际上并不需要理解这一切意味着什么,才能利用它来回答您的“可以做到吗”的问题。既然人们声称可以解析 CSS http://www.bensblog.com/articles/2008/05/23/parsing-css-with-antlr with ANTLR http://en.wikipedia.org/wiki/ANTLR,而 ANTLR 是一个 LL* 解析器,那么我想说 Rebol 可以做到。帕伦!这是一张王牌,如果你碰壁了,它可以让你做“任何事情”,但如果不小心使用它,就会陷入滑坡。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

rebol解析函数可以创建完全解析css2/css3的规则吗? 的相关文章

  • 平板电脑在第一次单击时悬停,在第二次单击时单击

    发布这个问题主要是希望证实我对该行为的怀疑 从而为其他程序员记录下来 因为我在网上没有找到任何记录 我正在构建一个网站 其导航栏具有以下属性 水平截面是 ul of li 和一些 li li s 两者都有 A n a 元素带您进入该主题 触
  • 为什么这个div的计算高度比它的内容高?

    我是一名 CSS 新手 正在使用 WordPress 网站菜单栏插件 http wordpress org extend plugins menubar 用于导航 我已经能够对 CSS 的配色方案 居中和字体内容进行更改 但我无法弄清楚为什
  • 如何使用 Angular 2 实现拖放(v2.0.0-beta.15)

    我想以角度实现一个简单的拖放列表 例如我可以更改其顺序的杂货列表 iv 在使用之前实现它https github com akserg ng2 dnd https github com akserg ng2 dnd但我的问题是我使用角度2
  • 文本区域下的额外填充

    我的文本区域下面有额外的填充 但我似乎找不到它的来源 我已将单独的代码放在此页面上 http jsfiddle net wfuks http jsfiddle net wfuks 我似乎找不到它的来源 它有类 field field bac
  • 我可以在一个变量中拥有多个值吗?

    正如标题 我可以在一个变量中拥有多个值吗 首先 我有这个表格
  • 文本区域值高度[重复]

    这个问题在这里已经有答案了 我有一个 textarea 其 css 高度设置为 85px 用户可能会在该文本区域内键入内容行 我想知道文本 值的高度 而不是文本区域本身 有没有办法检查内部文本的高度 包括换行符 我会将文本区域的内容复制到另
  • CSS:仅背景不透明度,而不是内部文本[重复]

    这个问题在这里已经有答案了 我有这个注册表框 我真的很喜欢背景如何变得不透明 透明为 25 85 但后来我注意到文本和表单元素也变暗了一点 所以我想知道如何做到这一点只有边框和背景而不是盒子里面的东西 regForm z index 11
  • FPDF - 内嵌粗体文本

    我正在尝试从 PHP 创建 PDF 出于法律原因 我们需要将免责声明的一部分设为粗体 并且需要概述免责声明 我当前的代码使用 if isset POST optout POST optout yes pdf gt Ln 5 pdf gt S
  • 在占位符中添加 HTML

    我喜欢使用 HTML 占位符 因为它有助于向用户描述他们需要输入的内容类型 但是 有时您需要为用户提供更多信息 而不仅仅是简单的句子 基本上我希望能够在我的文本区域占位符中添加换行符 制表符等 我听说过使用特殊编码来做到这一点 并且已经使用
  • 从 firebase 数据库获取最高分值

    在我的网站上有一些我从 firebase 获得的电影 电影的分数在0到100之间 我已经在我的网站上找到了所有电影 我还想按降序显示它们 例如评分最高的 5 部电影 我怎样才能实现这一点 感谢您的回答 const app initializ
  • 如何解决flash的zindex问题

    在网页中我需要显示div覆盖未使用的 Flash 横幅wmode transparent环境 怎么解决呢 根据我的记忆 你可以将 div 推入 也许使用Javascript 这样你就不会弄乱你的HTML iframe 是像 flash 一样
  • 如何使用 jQuery 将各种元素包装在 div 标签中?

    我有一个 html 结构 如下所示 h5 Title h5 p Content p ul li Item li li Item li ul p Content p h5 Title h5 p Content p ul li Item li
  • 等待动态加载脚本

    在我的页面正文中 我需要插入以下代码作为 AJAX 调用的结果 p Loading jQuery p p Using jQuery p 我不能使用 load 由于文档已经加载 因此该事件不会触发 这安全吗 如果没有 我如何确保在执行自定义生
  • 有没有一种方法可以使页面布局在 100% 缩放下完美契合,同时又尊重更大的缩放系数?

    有多种方法可以布局网页 使其适合浏览器视口 DOMwindow 当我说 适合 时 我包括更改所用字体的大小 更改 DIV IMG 和其他渲染元素的宽度和高度 以及允许元素 流畅 移动 目标是使页面在所有显示设备 从小型手机到大桌面屏幕 上看
  • 自动溢出的容器中不会出现滚动条(IE10、Windows Phone 8)

    我有一个容器 比方说div with overflow auto 其中的元素完全按照预期滚动 但不会出现典型的触摸滚动条 我尝试设置 ms overflow style auto明确地 但没有任何改变 浏览器 IE10 设备 Windows
  • 为什么在线解析器似乎停在正则表达式处?

    我一直想知道为什么似乎没有任何解析器 比如说 BNF http en wikipedia org wiki Backus E2 80 93Naur Form 其行为类似于各种库中的正则表达式 当然 还有类似的事情ANTLR http www
  • 向 Twitter Bootstrap 添加新字体系列

    我怎样才能按照他们的方式将新的字体系列添加到 twitter bootstrap 中 他们使用一种叫做 woff 的东西 我正在尝试将 roboto 添加到 css 文件中 我怎样才能像他们那样做 woff 的事情呢 font face f
  • 创建响应式眼睛焦点图标

    我一直在尝试制作响应式彩色眼睛焦点图标 但到目前为止我所尝试的一切均不成功 我试图在某种程度上复制真眼的颜色 我使用边框 框阴影来获取颜色 但该部分没有缩放 也尝试过轮廓 但也失败了 那个甚至不是圆的 div 的高度当前是静态的 但我希望它
  • Bootstrap下拉菜单文本颜色

    所以我第一次使用 Twitter 的 Bootstrap 我试图在下拉菜单折叠后更改其文本的颜色 如果有道理的话 I used 当您压缩网页以显示折叠菜单并转到下拉列表时 您会看到蓝色背景转移到下拉菜单项 但字体颜色为黑色 使其很难阅读 我
  • 如何显示不同页眉的页面? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在为我的学校项目开发网站 但我遇到了一个问题 我在每个页面上显示一个标题 我的标题之一包含登录表单 另一标题包含用户名 搜索栏等 问题是

随机推荐

  • 如何让 Jenkins 构建步骤下载 URL?

    我想要一个 Jenkins 构建步骤 只需将给定的 URL 下载到工作区中 有没有一种简单的方法可以做到这一点 我目前使用 Ant 脚本 它执行一个简单的操作
  • 对向量进行排序

    for fs directory iterator dir itr2 out folder dir itr2 end iter dir itr2 cout lt lt Path del file da inserire nel vettor
  • 调整矩形大小并捕捉到固定比例

    我目前的代码可以在用户单击对应于以下区域的多个锚点时根据鼠标移动调整矩形大小 左 上 右 下 左上 右上 左下 右下 因此 用户可以单击并拖动顶部锚点 它将根据鼠标所在的位置调整矩形的顶部坐标 对于所有其他锚点也是如此 之后 我想通过根据操
  • 如何使用 JavaScript(外部域)解析 RSS 提要?

    Question 我需要解析 RSS 提要并在 HTML 页面中显示解析的详细信息 我找到的解决方案 如何使用 JavaScript 解析 RSS 提要 https stackoverflow com questions 10943544
  • 如果浏览器中未启用 JavaScript,则显示消息

    我正在寻找一种解决方案 如果我的网站的访问者没有启用 JavaScript 则向他显示一条信息消息 我在 div 中尝试了一条消息 该消息默认可见 但在启动时立即被 jQuery 函数隐藏 问题是 该消息在短时间内可见 直到它被隐藏 这非常
  • 如何在正则表达式中指定单引号

    这是我的正则表达式 我想在 O Neal Nickel 等字符中包含单引号 这是我的正则表达式 允许字母 空格以及句号 和 连字符 A Za z s A Za z s 还是我问错了你的问题
  • 您可以使用 Sel-Blocks Selenium 插件指定数据文件的“相对”路径吗?

    使用 SelBlocks 插件进行数据驱动开发时 指定数据文件的位置时是否可以指定相对路径 而不是绝对路径 我在一个小团队工作 我们希望能够让我们的测试可移植并最终成为我们生产过程的一部分 我们目前正在使用 Selenium IDE 来编写
  • Mantle自动将0和1转换为BOOL?

    Mantle 是否已将 JSON 中的 int 值 0 和 1 转换为 Objective C BOOL 值 我有一个模型 interface MyModel MTLModel property nonatomic readonly BOO
  • Ruby on Rails 和 Jquery:提交后尝试切换字符

    第一篇文章在这里 所以如果有些事情不对 我如何放入代码 如果我没有包含足够的内容 或者如果我的问题太模糊 我深表歉意 我对 RoR 非常非常陌生 我正从构建一款井字棋游戏开始 我已经将其构建为可以在命令行上运行 现在我正在尝试使其基于网络
  • 如何确保在运行 Jenkins 管道之前更新参数列表?

    Jenkins 管道项目配置为获取其Jenkinsfile来自 Git 存储库 例如 如果我更改参数列表 properties parameters string name FOO description Choose foo to pro
  • Firebase 导致“线程 1:信号 SIGABRT”

    我启动了一个空白的 Xcode 项目 我所做的就是通过 Cocoapods 添加 Firebase 框架并导入 Appdelegate 和 viewcontroller 当我添加FIRApp configure to didFinishLo
  • 在 Android 中通过 Intent 传递信息后将项目添加到 listView

    我正在尝试添加一个项目 首先使用添加按钮 然后转到不同的活动 然后返回原始活动并将其添加到列表视图中 我似乎不能拥有超过一件物品 AddScreen class 我的第一个活动 package com painLogger IMPORTS
  • 如何在C++中读取空字符串?

    考虑 C 中的这段代码片段 string str cin gt gt str 如果我在这个阶段简单地按回车键 指针就会移动到下一行 但会继续等待输入 即使我故意想输入一个空字符串 我的目标是读一个单词 如果我按 Enter 键 它应该被视为
  • 手机是否需要连接到互联网以便网络提供商可以确定位置?

    手机是否需要始终连接到互联网 以便网络提供商可以确定位置 当我在手机上测试我的应用程序时Settings gt Location only Use wireless network已选中 并且我未通过 Wi Fi 连接到互联网 因此无法获取
  • 将 Git 与 TFS 2017 结合使用 - 可在 Visual Studio 中使用,但不能在命令行中使用

    最近 我们的项目使用 Git 切换到 Team Foundation Server 2017 如果我们通过 Web 界面或 Visual Studio 使用它 我们的 TFS 工作得足够好 但如果我们尝试使用第三方工具 如 Sourcetr
  • 在核心数据持久存储中传送静态(只读)数据的正确方法是什么?

    我想发送静态只读数据以在我的核心数据模型中使用 问题是 存在明显不同的持久存储类型 我不知道这些类型的格式是否应该是不透明的 或者我是否应该能够手动构造它们 现在我只有一个 plist 而且非常小 总共可能有 30 个条目 我是否应该在首次
  • 将 pdf 附件添加到 WooCommerce 已完成订单电子邮件通知

    在另一个线程上找到此代码 但无法使其工作 PDF 上传到 wp content child theme 目标是将 pdf 附加到 woocommerce 将发送的已完成订单电子邮件中 不知道customer completed order是
  • 在map.forEach期间map.delete(key)

    通常 当您循环访问列表时 无法安全地从列表中删除项目 这个概念对于 ES6 地图仍然适用吗 我尝试了这个简单的测试 没有例外 var map new Map a 1 b 2 c 3 map forEach value key map gt
  • 捕获 Windows 上的访问违规

    我试图捕获应用程序中所有未处理的异常 以便在发生异常时可以保存日志文件 这是一个使用 Visual Studio 2013 编译的 64 位 Windows 应用程序 用 C 编写 为了进行测试 我使用 VS 生成的默认 C Win32 项
  • rebol解析函数可以创建完全解析css2/css3的规则吗?

    rebol 解析函数的能力有限制吗 它是否能够解析整个 css2 css 3 规范 或者是否会遇到理论上不可能形成某些规则的情况 HostileFork 回答后更新 我的意思是在正则表达式中我认为这是相当不可能的 解析是否更强大 如果是 这