加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用什么技术编写在语言之间切换的解析器?

发布时间:2020-12-16 01:53:14 所属栏目:百科 来源:网络整理
导读:我对像Razor视图引擎这样的解析器如何解析两种不同的语言(如C#和 JavaScript)感兴趣. 以下工作非常酷,例如: $("#fm_duedate").val('@DateTime.Now.AddMonths(1).ToString("MM/dd/yyyy")'); 我将尝试查看源代码,但我很好奇是否有像这样的解析器的某种理论基
我对像Razor视图引擎这样的解析器如何解析两种不同的语言(如C#和 JavaScript)感兴趣.

以下工作非常酷,例如:

$("#fm_duedate").val('@DateTime.Now.AddMonths(1).ToString("MM/dd/yyyy")');

我将尝试查看源代码,但我很好奇是否有像这样的解析器的某种理论基础,或者更像是蛮力,比如采用两种语言的联合并解析它?

试着为自己推理,我说“你从每种语言的解析器开始,然后你向每一种语言添加一组将它切换到另一种语言的产品”,但我怀疑它是如此简单.

我想完美的答案将是关于Razor引擎如何实现的讨论的指针或源代码的演练(我实际上并没有因为害怕掉下兔子洞而谷歌).或者,只是对如何解决两种语言解析问题的一些见解将是很好的.

解决方法

正如Corey指出的那样,Razor和类似的框架并没有做任何特别奇特的事情.

然而,有一些理论上更合理的模型用于构建语言的解析器,其中一种语言嵌入另一种语言中.我以前的同事Luke Hoban有一篇关于解析器组合器的精彩介绍性文章,它提供了一种非常好的方法来构建一种语言嵌入在另一种语言场景中的解析器:

http://blogs.msdn.com/b/lukeh/archive/2007/08/19/monadic-parser-combinators-using-c-3-0.aspx

维基百科页面也非常简单:

http://en.wikipedia.org/wiki/Parser_combinator

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读