鱼C论坛

 找回密码
 立即注册
查看: 340|回复: 10

[已解决]用python写一门新的编程语言

[复制链接]
发表于 2024-4-12 22:07:56 | 显示全部楼层 |阅读模式
15鱼币
        记得之前冲浪的时候在鱼C看到过类似的帖子,当时没在意,现在突然想学习一下,找不到了…………,有没有哪位大神帮帮忙找一下?

最佳答案

查看完整内容

论坛上没找到,类似的 https://zhuanlan.zhihu.com/p/107461611

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-12 22:07:57 | 显示全部楼层    本楼为最佳答案   
论坛上没找到,类似的
https://zhuanlan.zhihu.com/p/107461611
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-12 22:08:16 | 显示全部楼层
哈哈,没问题!其实,Python本身就是非常适合用来写新编程语言的。你可以使用Python来定义自己的解释器,并用它解析和执行你的新编程语言的代码。

首先,你需要理解编程语言的一些基本概念,比如语法、变量、函数等等。然后,你可以定义一些语法规则,来描述你想要的新编程语言。

让我们以一个简单的例子开始,假设你想要创建一个名为"FunLang"的编程语言,它只有一个关键字"fun",用于定义函数。我们来实现一个解释器来解析并执行FunLang代码吧!

  1. import re

  2. # 定义解释器类
  3. class FunInterpreter:
  4.     def __init__(self):
  5.         self.variables = {}
  6.    
  7.     def execute(self, code):
  8.         lines = code.split('\n')
  9.         for line in lines:
  10.             # 使用正则匹配行中的fun关键字和函数名
  11.             match = re.match(r'fun (\w+)\(\)', line)
  12.             if match:
  13.                 fun_name = match.group(1)
  14.                 self.variables[fun_name] = None  # 定义一个函数变量,暂时置为None
  15.                 continue

  16.             # 调用函数
  17.             match = re.match(r'(\w+)\(\)', line)
  18.             if match:
  19.                 fun_name = match.group(1)
  20.                 if fun_name in self.variables:
  21.                     self.print_function_call(fun_name)
  22.                 else:
  23.                     print(f"Error: Undefined function '{fun_name}'")
  24.         
  25.     def print_function_call(self, fun_name):
  26.         print(f"Calling function '{fun_name}'")

  27. # 测试代码
  28. interpreter = FunInterpreter()
  29. interpreter.execute('fun hello()\nhello()')

  30. # 输出:Calling function 'hello'
复制代码


以上代码定义了一个`FunInterpreter`类,它有一个`execute`方法可以解析和执行FunLang代码。我们使用正则表达式来匹配代码中的关键字和函数名。在`execute`方法中:

- 如果匹配到的是`fun`关键字和函数名,我们将其存储到解释器的`variables`字典中,表示我们定义了一个函数。
- 如果匹配到的是函数调用,我们检查对应的函数是否存在,如果存在,则打印一条消息表示函数被调用了。

你可以根据自己的需求,扩展这个解释器的功能,使它支持更多的语法和特性。

当然,这只是一个非常简单的例子,如果你想构建一个真正实用的编程语言,还需要考虑很多其他的因素,比如数据类型、控制流等等。希望这个例子能给你提供一些启发,祝你好运!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-14 08:36:54 | 显示全部楼层
FishC 发表于 2024-4-12 22:08
哈哈,没问题!其实,Python本身就是非常适合用来写新编程语言的。你可以使用Python来定义自己的解释器,并 ...

编程语言不应该有自己的解释器吗
你这个 还是没有脱离PY
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-14 08:37:02 | 显示全部楼层
wp231957 发表于 2024-04-14 08:36
编程语言不应该有自己的解释器吗
你这个 还是没有脱 ...


哈哈,你说得对!实际上,要构建一个完全独立的编程语言,确实需要编写自己的解释器或编译器。Python作为一门高级语言,可以作为“宿主语言”来构建新的编程语言。

如果你想要脱离Python来创建一个全新的编程语言,你可能需要考虑以下几个步骤:

1. 定义语法规则:首先,你需要定义你的编程语言的语法规则。这包括关键字、变量声明、函数定义等。

2. 设计解析器:然后,你需要编写一个解析器(parser),它负责将源代码转换为抽象语法树(AST)。AST是一种数据结构,用于表示代码的结构和含义。

3. 实现执行引擎:你需要编写一个执行引擎,它读取AST并根据其中的信息执行相应的操作,比如变量赋值、函数调用等。

4. 构建标准库:类似于其他编程语言,你可能还需要构建一些常用的函数和模块,以便用户能够使用它们来解决具体的问题。

总之,构建一个全新的编程语言是一项复杂而庞大的任务。这需要深入了解编程语言原理、语法和解释器/编译器的工作原理。这里只是提供了一个大致的路线图,希望能为你提供一些指导。祝你成功!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-14 08:39:29 | 显示全部楼层
FishC 发表于 2024-4-14 08:37
哈哈,你说得对!实际上,要构建一个完全独立的编程语言,确实需要编写自己的解释器或编译器。Python作 ...

这个我做不来,不能好高骛远
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-14 08:39:41 | 显示全部楼层
wp231957 发表于 2024-04-14 08:39
这个我做不来,不能好高骛远


没关系,编写一个全新的编程语言确实是一项复杂的任务。如果你觉得目标太过远大,可以先从了解编程语言的基础知识开始,逐渐积累经验和技能。在这个过程中,你可以做一些小项目,来提升自己的编程能力。比如,你可以尝试以下几个小项目来加深对编程语言的理解:

1. 计算器:编写一个简单的命令行计算器,可以进行基本的数学运算,比如加法、减法、乘法和除法。

2. 解释器扩展:选择一个你喜欢的编程语言,并尝试添加一些新的功能或语法规则。比如,你可以为该语言添加一个新的控制流语句,或者实现一个自定义的数据类型。

3. 简单的脚本语言:编写一个简单的脚本语言,用于执行特定的任务,比如文件处理、数据转换等。可以考虑使用Python作为基础,利用现有的解释器或执行环境来执行你的脚本。

4. 语言翻译器:选择两种不同的编程语言,编写一个翻译器,将一种语言的代码转换成另一种语言的代码。这个项目可以帮助你更深入地理解编程语言的语法和结构。

记住,编程是一个循序渐进的过程。不要急于达到高难度的目标,注重每一步的学习和实践,逐渐提升自己的能力。祝你在编程的世界里取得成功!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-14 14:20:48 | 显示全部楼层
歌者文明清理员 发表于 2024-4-14 13:38
论坛上没找到,类似的
https://zhuanlan.zhihu.com/p/107461611

好久不见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-14 14:41:05 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-15 14:48:03 | 显示全部楼层
FishC 发表于 2024-4-14 08:39
没关系,编写一个全新的编程语言确实是一项复杂的任务。如果你觉得目标太过远大,可以先从了解编程语言 ...

啥样的项目 代码量能超过1000行呢
你这里的2  3   4   都狠难啊   老虎吞天
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-15 14:48:17 | 显示全部楼层
wp231957 发表于 2024-04-15 14:48
啥样的项目 代码量能超过1000行呢
你这里的2  3   4  ...


哈哈,确实,我给出的项目示例都是相对简单的小项目。如果你想追求更大规模的项目,可以考虑以下几个方向:

1. Web应用开发:尝试构建一个完整的Web应用程序,包括前端和后端。使用现代的Web框架,如Django或Flask,来构建用户界面和处理数据。这种类型的项目通常有很多功能模块和组件,代码量也会超过1000行。

2. 游戏开发:编写一个简单的游戏,比如俄罗斯方块、扫雷或贪吃蛇。你可以使用Python的游戏开发库,如Pygame,来创建游戏界面和逻辑。游戏开发可能涉及到很多不同的模块和类,代码量会随着游戏复杂度的增加而增加。

3. 数据分析和机器学习:尝试使用Python的数据分析和机器学习库,如NumPy、Pandas和Scikit-learn,来处理和分析大量的数据。你可以选择一个感兴趣的数据集,进行数据清洗、可视化和建模等工作。数据分析和机器学习项目往往需要编写许多函数和算法,代码量可能会很大。

4. 桌面应用程序:编写一个功能丰富的桌面应用程序,可以提供特定的服务或解决特定的问题。你可以使用Python的GUI库,如Tkinter或PyQt,来创建用户界面和逻辑。桌面应用程序通常包含许多不同的模块和功能模块,代码量可能会比较大。

以上是一些例子,展示了一些可能超过1000行代码量的项目类型。当然,真正的代码量取决于项目的复杂性和需求,有时候甚至可能达到数万行。重要的是,你可以根据自己的兴趣和技能水平选择适合的项目,并逐渐挑战更大规模的项目。加油!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 16:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表