阅读 some related questions让我思考 HTML 的理论本质。
我在这里不是在谈论类似 XHTML 的代码。我说的是像这种疯狂的标记,它是完全有效的 HTML(!)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html<head>
<title//
<p ltr<span id=p></span</p>
</>
鉴于 SGML 在此处注入(inject)的巨大复杂性,HTML 是一种上下文无关语言吗?无论如何,它是一种正式语言吗?用语法?
HTML5 呢?
<子> 我是正式语言概念的新手,所以请多多包涵。是的,我已经阅读了维基百科文章;)
子>
最佳答案
Context Free 是语言理论中的一个概念,对解析器实现具有重要意义。 上下文无关语言可以用上下文无关文法来描述,其中所有规则在箭头左侧都有一个非终结符:
X→δ
这个简单的限制允许 X由出现在左侧的规则的右侧代替,而不考虑之前或之后的内容。例如,如果在推导或解析时到达:
αXλ
可以肯定的是
αδλ
也是有效的。非上下文无关规则的示例是:
XY→δ
Xa→δ
aX→δ
那些需要知道在 X 附近可以派生出什么确定规则是否适用,这会导致不确定性(X 周围的情况| 也想知道它派生的是什么),这是解析中的禁忌,无论如何我们希望语言是定义明确。
证明一种语言是上下文无关的唯一方法是证明它存在上下文无关语法,这不是一件容易的事。 CFG 已经描述了出现的大多数编程语言,因此工作已经完成。但是还有其他语言,包括编程语言,是使用逻辑或简单的英语来描述的,因此需要努力找出它们是否是上下文无关的。
对于 HTML,关于上下文自由的答案是肯定的。 SGML 是一种定义良好的上下文无关语言,在其之上定义的 HTML 也是一种 CFL。这两种语言的解析器和语法在 Web 上比比皆是。无论如何,那个there exist LL(k) grammars对于 valid HTML 足以证明该语言是上下文无关的,因为 LL 是 CF 的已证明子集。
但是 HTML 在 Web 生命周期中的演变方式迫使浏览器将其视为定义不明确的内容。现代 Web 浏览器会竭尽全力尝试从他们发现的几乎所有内容中呈现一些合理的东西。他们使用的语法不是 CFG,而且解析器比 SGML/HTML 所需的解析器复杂得多。
HTML 是在几个层次上定义的。
<tags>定义分层文档结构。您可以出于任何目的使用 XML 或类似 XML 的东西,例如 Apache Ant用于构建脚本。句法部分定义得很好,可以是verified .语义部分比句法部分大得多,并且根据与 HTTP 相关的浏览器操作和 Document Object Model 定义。 (DOM),以及模型应该如何呈现到屏幕上。
最后:
关于html - HTML 是上下文无关语言吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5175840/
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这
所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:
我正在使用Rails构建一个简单的聊天应用程序。当用户输入url时,我希望将其输出为html链接(即“url”)。我想知道在Ruby中是否有任何库或众所周知的方法可以做到这一点。如果没有,我有一些不错的正则表达式示例代码可以使用... 最佳答案 查看auto_linkRails提供的辅助方法。这会将所有URL和电子邮件地址变成可点击的链接(htmlanchor标记)。这是文档中的代码示例。auto_link("Gotohttp://www.rubyonrails.organdsayhellotodavid@loudthinking.
我正在学习http://ruby.railstutorial.org/chapters/static-pages上的RubyonRails教程并遇到以下错误StaticPagesHomepageshouldhavethecontent'SampleApp'Failure/Error:page.shouldhave_content('SampleApp')Capybara::ElementNotFound:Unabletofindxpath"/html"#(eval):2:in`text'#./spec/requests/static_pages_spec.rb:7:in`(root)'
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
嗨~大家好,这里是可莉!今天给大家带来的是7个C语言的经典基础代码~那一起往下看下去把【程序一】打印100到200之间的素数#includeintmain(){ inti; for(i=100;i 【程序二】输出乘法口诀表#includeintmain(){inti;for(i=1;i 【程序三】判断1000年---2000年之间的闰年#includeintmain(){intyear;for(year=1000;year 【程序四】给定两个整形变量的值,将两个值的内容进行交换。这里提供两种方法来进行交换,第一种为创建临时变量来进行交换,第二种是不创建临时变量而直接进行交换。1.创建临时变量来
我正在尝试将一个简单的CSV文件读入HTML表格以在浏览器中显示,但我遇到了麻烦。这就是我正在尝试的:Controller:defshow@csv=CSV.open("file.csv",:headers=>true)end查看:输出:NameStartDateEndDateQuantityPostalCode基本上我只获取标题,而不会读取和呈现CSV正文。 最佳答案 这最终成为最终解决方案:Controller:defshow#OpenaCSVfile,andthenreaditintoaCSV::Tableobjectforda