看看Rakudo Perl6我在想,是否有解析和词法分析的技术可以改变/扩展语言的语法,而且效率高,不难实现。用于运行时语言修改的解析技术
3
A
回答
1
“否”。 [编辑:截至问题时间]如果问题是关于lexing /解析Perl,它很难。我们(见我的生物为“我们”)有一个Perl5词法分析器。我们有非常好的词法分析生成器工具(Unicode,多状态,正则表达式,内置“不是正则表达式”)。 Perl词法分析器是一个令人头痛的问题,我们结束了50个词法模式(每个模式都有自己的一组令牌定义)来处理lexing部分。
我们正在盯着解析部分,今天我们很幸运,没有直接的需求,所以我们避免了这一点。根据各种标识符的动态定义,语言是不明确的,因此,如何在一个时刻解释(解析)一个短语并不是静态可确定的。我们认为我们可以使用GLR解析器来处理歧义,只是将模糊作为可能的运行时替代方案。我会在几个月内通知你。
1
看看PEGs。有迹象表明,基于PEG的(http://en.wikipedia.org/wiki/Parsing_expression_grammar)的语言,这是可扩展的,例如:
http://www.chrisseaton.com/katahdin/
http://www.meta-alternative.net/mbase.html
Perl5的和Perl6语法可以在PEG形式容易定义(我可能是错的,但目前的Perl6很可能以这种方式实现)。
相关问题
- 1. 用于序列处理或解析的首选语言/技术
- 2. NLP:语言分析技术和算法
- 3. 语言,技术和解决方案
- 4. 语言翻译技术术语词典
- 5. 使用哪些技术来编写在语言之间切换的解析器?
- 6. 适用于任何RDBMS技术的通用语言
- 7. 将技术术语从英语翻译成其他语言?
- 8. WF和WCF技术或语言?
- 9. 没有语言运行时的基于JVM的语言
- 10. 序言:解析术语的语义正确性(模式匹配)
- 11. 键盘语言在运行时更改?
- 12. 如何在运行时更改语言
- 13. UWP在运行时更改CalendarDatePicker语言
- 14. 在运行时更改Qt语言
- 15. 在运行时更改语言
- 16. 技术用于在JavaScript编写XML解析器
- 17. 的Symfony建于语言解析器
- 18. Java - 防止代码修改技术
- 19. 解决技术
- 20. 用于计算checkdigit的输入的技术术语是什么?
- 21. 如何运行非技术性启动的技术部门?
- 22. 用于在同一过程中运行多个MapActivities的技术
- 23. 用于实时监控解决方案的.NET技术
- 24. 什么技术可用于8051汇编语言的内存优化?
- 25. 位封装的技术术语
- 26. 此模式的正确技术术语
- 27. 运行系统语言改变的Android
- 28. 如何修改HTML语言
- 29. 需要Jersey2技术在运行时启用或禁用服务
- 30. 关于Elasticsearch,Logstash和Kibana的非技术术语
这个答案是关于Perl 5.这个问题是关于Perl 6的。后者的答案是强调YES。要看看这个过程有多深入,请查看这篇最近的博客文章,讨论如何弯曲P6语法,以至于[你可以平常地将P6中的SQL嵌入到P6中的HTML内部](http://strangelyconsistent.org/blog/macros-define-your-自有文字天)。 – raiph 2014-11-30 18:37:34