星行123 发表于 2024-4-12 22:07:56

用python写一门新的编程语言

        记得之前冲浪的时候在鱼C看到过类似的帖子,当时没在意,现在突然想学习一下,找不到了…………,有没有哪位大神帮帮忙找一下?

歌者文明清理员 发表于 2024-4-12 22:07:57

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

FishC 发表于 2024-4-12 22:08:16

哈哈,没问题!其实,Python本身就是非常适合用来写新编程语言的。你可以使用Python来定义自己的解释器,并用它解析和执行你的新编程语言的代码。

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

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

import re

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

            # 调用函数
            match = re.match(r'(\w+)\(\)', line)
            if match:
                fun_name = match.group(1)
                if fun_name in self.variables:
                  self.print_function_call(fun_name)
                else:
                  print(f"Error: Undefined function '{fun_name}'")
      
    def print_function_call(self, fun_name):
      print(f"Calling function '{fun_name}'")

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

# 输出:Calling function 'hello'

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

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

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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

wp231957 发表于 2024-4-14 08:36:54

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

编程语言不应该有自己的解释器吗
你这个 还是没有脱离PY

FishC 发表于 2024-4-14 08:37:02

wp231957 发表于 2024-04-14 08:36
编程语言不应该有自己的解释器吗
你这个 还是没有脱 ...

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

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

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

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

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

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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

wp231957 发表于 2024-4-14 08:39:29

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

这个我做不来,不能好高骛远

FishC 发表于 2024-4-14 08:39:41

wp231957 发表于 2024-04-14 08:39
这个我做不来,不能好高骛远

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

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

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

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

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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

isdkz 发表于 2024-4-14 14:20:48

歌者文明清理员 发表于 2024-4-14 13:38
论坛上没找到,类似的
https://zhuanlan.zhihu.com/p/107461611

好久不见

歌者文明清理员 发表于 2024-4-14 14:41:05

isdkz 发表于 2024-4-14 14:20
好久不见

a?

wp231957 发表于 2024-4-15 14:48:03

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

啥样的项目 代码量能超过1000行呢
你这里的23   4   都狠难啊   老虎吞天

FishC 发表于 2024-4-15 14:48:17

wp231957 发表于 2024-04-15 14:48
啥样的项目 代码量能超过1000行呢
你这里的23   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 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 用python写一门新的编程语言