首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有任何编程语言允许您不受限制地使用其他语言?

是否有任何编程语言允许您不受限制地使用其他语言?
EN

Software Engineering用户
提问于 2018-05-30 14:14:57
回答 1查看 390关注 0票数 0

这可能是一个愚蠢的问题,它肯定需要一个地狱的词汇,但任何现存的编程语言都允许您这样做:

代码语言:javascript
复制
c# (1.2) {
    // c# code
}
Perl (5) {
    # perl code
    c# (2.0) {
        // some more c# code
    }
}

在单个源文件中使用多种语言?我正在为一种新的语言设计一种新的语言,并希望允许这样的语言(基本上是出于纯粹的懒惰,不想移植从网络、旧项目中复制和粘贴的片段,或者只是为了嘘嘘和咯咯笑)。

在我迄今为止的研究中,黑客攻击gcc的S中介语言似乎是一种很好的方式,可以用最少的精力将其转化为优化的机器代码,而词汇将是一个挑战(我一直在为language 再说一遍,懒惰,因为我不想要制作一个完整的IDE来为语言组装一个编辑器的模型玩一个IntelliJ插件,但已经在Backus的上下文无关性质上遇到了严格的限制--诺尔式语法符号),因此,似乎这将不得不采取另一种格式,因为我想在自己的语言中使用这些特性,而不考虑其他人--因此,在这个问题上的JetBrains教程大部分都是无用的。这也可能是一件好事,因为这是一个将语言定义抽象到某种程度的机会,其中包含了一种词汇和语言规范中的语法引导程序--例如,对于上面的伪代码,如下所示:

代码语言:javascript
复制
#require c#-1.2
#require Perl-5
#require c#-2.0

在给定源文件的顶部或它的包含链(以我的新语言作为缺省值,以及构建新语法的语法和语法分析方法内置在其中以词汇方式引导整个过程。

无论如何,回到重点:像这样的东西已经存在了吗,我可以用它作为试金石吗?特别是在动态解析器和词汇方面(其中已经解析的代码可以显着地改变未来代码的解释-类似于为给定的上下文代码块。重新定义整个语言)。

EN

回答 1

Software Engineering用户

发布于 2021-12-20 07:57:54

许多年前,Metrowerks有一个C/C++编译器。它根据文件的后缀以一种模式开始编译,如果它看到“#语用语言C”或“语用语言C++”,则切换到另一种语言。

例如,保留字的集合发生了变化,函数重载发生了变化。C代码可以在类以C++模式声明后使用它们,以及其他常识的更改。

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

https://softwareengineering.stackexchange.com/questions/371812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档