如何编写语法类似Python缩进的语言?

2023-12-21

我正在使用类似于 Python 的内置语言编写一个工具。我想让缩进在语法中有意义(以便行开头的制表符和空格代表命令的嵌套)。

做这个的最好方式是什么?

我之前写过递归下降和有限自动机解析器。


目前的CPython http://en.wikipedia.org/wiki/CPython的解析器似乎是 http://hg.python.org/cpython/file/tip/Parser/Python.asdl使用称为的东西生成ASDL http://asdl.sourceforge.net/.

关于您要求的缩进,完成 http://docs.python.org/2/reference/lexical_analysis.html#indentation使用特殊的词法分析器标记称为INDENT and DEDENT。要复制它,只需在词法分析器中实现这些标记(如果您使用堆栈来存储先前缩进行的起始列,这非常容易),然后像往常一样将它们插入到您的语法中(就像任何其他关键字或运算符标记一样) 。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何编写语法类似Python缩进的语言? 的相关文章

  • ruby CSV重复行解析

    我有一些需要处理的 CSV 数据 但无法找到匹配重复项的方法 数据看起来有点像这样 line id name item 1 item 2 item 3 item 4 1 251 john foo foo foo foo 2 251 john
  • 递归读取任何 java 对象并将复杂类型提取到哈希映射中

    我需要编写一个实用程序 它接受空白 HashMap 和任何对象作为参数并返回 HashMap public HashMap returnMap HashMap map Object parseThisObject logic to stri
  • 无法使用 NSDateFormatter 解析日期

    我正在获取 RSS 其中我收到以下日期戳 2010 05 10T06 11 14 000Z 现在我正在使用 NSDateFormatter 来解析这个日期时间戳 parseFormatter setDateFormat yyyy MM dT
  • 获取单个方程的脚本

    在文本文件中输入 a 2 8 b 3 9 c 4 8 d 5 9 e a b f c d g 0 6 h 1 7 i e g j f h output i j 期望的输出 输出 2 8 3 9 0 6 4 8 5 9 1 7 如果输入文件名
  • 使用 VB.NET 覆盖文本文件中的特定行

    我需要执行以下操作 更改文本文件中的行 Path c this certain path 用这条线 Path c that other newer path 这些路径的长度肯定会不同 因此我需要替换引号中的内容 或者完全擦除该行并输入一个新
  • iPhone iOS 是否有用于类似代数计算器的应用程序的表达式解析器?

    我正在构建一个应用程序 可以通过加速度计和陀螺仪输出来分析手机的运动 我很可能会将这个动作捕获为一组变量 应用程序将在内部跟踪这些变量 我试图提供一种方法来绘制这些变量和涉及这些变量的方程 我想让用户能够通过输入 a b c d 等方程 其
  • Beautiful Soup 获取动态表数据

    我有以下代码 url https www basketball reference com leagues NBA 2017 standings html all expanded standings html urlopen url so
  • 如何读取本地 JSON 文件进行测试

    我正在尝试编写用于 json 验证的单元测试 因为该应用程序严重依赖于来自 REST API 的 json 我有一个包含简单 json 的本地文件 goodFeaturedJson txt 内容 test TEST 测试用例 void te
  • 学习Python中的解析器

    我记得我读过有关解析器的内容 您只需提供一些示例行 它就知道如何解析某些文本 它只是确定两条线之间的差异 以了解可变部分是什么 我以为它是用 python 写的 但我不确定 有谁知道那是什么图书馆吗 可能你的意思是模板制作器 http co
  • 在 C 中解析字符串的最简单方法是什么?

    我必须在 C 中解析这个字符串 XFR 3 NS 207 46 106 118 1863 0 207 46 104 20 1863 r n 并且能够得到207 46 106 118部分和1863部分 第一个 IP 地址 我知道我可以一个字符
  • 解析 XML 并检索信息 多层节点 Deep Java/Android

    我正在使用我的教授提供的示例 该示例从天气预报站点获取数据并解析 XML 文件以在列表中显示天气状况 我的程序类似 但我想检索嵌套在多个节点中的信息 但我不知道如何获取它 这是我正在处理的 XML 文件
  • 如何向 Parse Signup 功能添加额外属性?

    我想向我的解析注册函数添加一个额外的属性 我的代码就像 signUp function e var self this var username this signup username val var password this sign
  • 为什么有 LR(0) 解析器而不是 LL(0) 解析器?

    我一直在维基百科上阅读这两个内容 并注意到虽然存在 LR 0 解析器 但不存在 LL 0 解析器之类的东西 根据我的阅读 我了解到 LL k LR k 中的 k 表示解析器可以看到多少个字符beyond当前正在处理的当前角色 所以我的问题是
  • 解析器解析 SQL 查询并返回 Java 中的列名和相应的表名 [重复]

    这个问题在这里已经有答案了 可能的重复 Java 的 SQL 解析器库 https stackoverflow com questions 660609 sql parser library for java 我需要一个解析器 它应该以以下
  • 用 C# 解析和查询 SOAP

    我正在尝试解析一个大量命名空间的 SOAP 消息 源也可以在here http tinyurl com n3av6k
  • 是否可以使用 fparsec 解析“越位”(基于缩进)语言?

    我希望将 FParsec 用于基于缩进的类似 python 的语言 我知道这必须在词法分析阶段完成 但 FParsec 没有词法分析阶段 是否可以使用 FParsec 或者 词法分析后如何提供它 P D 我是 F 新手 但在其他语言方面经验
  • 寻找引文解析器

    我需要一个解析器来扫描学术文本 提取引文 并将这些引文解析为其组成部分 作者 标题 出版日期等 我尝试过 Paracite 但它速度非常慢 而且不能产生高质量的结果 任何语言都可以 但首选 Java 看一眼ParsCit http aye
  • 正则表达式会减慢程序速度

    我正在尝试创建一个程序来解析游戏聊天日志中的数据 到目前为止 我已经设法让程序运行并解析我想要的数据 但我的问题是程序变得越来越慢 目前解析 10MB 文本文件需要 5 秒 我注意到如果我将 RegexOptions Compiled 添加
  • 在压缩存档内的文本文件上运行“head”,而不解压存档

    问候 我接手了之前的团队并编写了处理 csv 文件的 ETL 作业 我在 ubuntu 上结合使用 shell 脚本和 perl csv 文件很大 它们以压缩档案形式到达 解压后 很多都超过 30Gb 是的 那是 G 旧进程是在 cron
  • 为什么解析器组合器“seq”用“bind”和“return”定义?

    我正在读这个article http eprints nottingham ac uk 237 1 monparsing pdf关于解析器组合器并且不理解以下内容 他们说使用seq 见下文 导致解析器将嵌套元组作为结果 操作起来很混乱 se

随机推荐

  • Runspace 忽略自定义 PSHostUserInterface

    的背景 我正在编写一个以编程方式执行 PowerShell 脚本的应用程序 该应用程序有一个自定义PSHost实现允许脚本输出日志记录语句 目前 我看到的行为是some请求已正确转发给我的自定义PSHost而其他人则完全被忽视 当我开始检查
  • 路由错误 - 没有新的路由与 [POST] 匹配

    我遇到了路由错误 并且找不到问题出在哪里 我正在创建一个简单的 CRUD 并通过 create 方法遇到此问题 Error 没有路由匹配 POST usuarios new 控制器 def new usuario Usuarios new
  • Javascript 在一定时间后关闭弹出窗口

    嗨 首先我不懂 JavaScript 因此 我的主页上有一个弹出窗口 其中包含对客户的圣诞祝福 我希望弹出窗口在 20 秒后关闭 我从互联网上获得了以下代码 弹出窗口可以正常打开 但我需要以下方面的帮助 我在哪里输入弹出窗口的时间限制和 我
  • CRONTAB 语法错误

    这是我的 CRONTAB 文件 Ubuntu 10 10 57 1 2 6 ET date date yesterday Y m d echo ET 甚至语法颜色也表明有问题 并且有这个错误 Subject Cron
  • VS Code 有没有办法缩进到左括号?

    我希望修改 VS Code 的缩进行为 这样如果我在输入如下行后按 Enter 键 variable function param1 它将缩进到左括号的水平 以便我可以轻松地格式化代码 如下所示 variable function para
  • 如何在 Aurelia 中设置复选框绑定

    我有一个复选框列表 当用户选中其中一个复选框时 会在 js 文件中调用一个函数 然后调用一个方法 dataservice js 来调用 webapi 控制器 这一切都工作正常并返回正确的数据 当该过程完成时 会发生的情况是触发序列的复选框未
  • 存储指向 std::string 数据的指针是否安全?

    我的问题围绕复制构造和重新分配的机制 我有一堂课 收集字符串 将字符串添加到集合后 该字符串将被复制并存储在向量中 但因为我还需要访问所有字符串的集合const char const 我还通过以下方式存储指向每个字符串数据的指针 c str
  • sbt - 仅在发布期间排除某些依赖项

    我正在构建一个实用程序库 可以与 Apache Spark 1 0 1 1 1 2 版本之一一起使用 由于它们都是二进制向后兼容的 我想让用户决定使用哪个 Spark 版本 通过手动添加spark core将首选版本作为我的库的依赖项 并且
  • MATLAB 是否执行公共子表达式消除?

    MATLAB 的优化器是否对 MATLAB 代码执行公共子表达式消除 例如 if max val gt minVal max val lt maxVal maxVal max val end 多久一次max val 在那里评价 将中间值存储
  • AppFabric 安装错误代码 1603

    我意识到这个问题已经被问到 但迄今为止发布的所有解决方案尚未取得巨大成功 这是 3 个日志中的 2 个 我很可能在这里遗漏了一些东西 但非常感谢您的帮助 应用服务器设置 2013 05 20 18 14 31 Information Set
  • 如何使用计时器运行 php 脚本?

    我有 foreach 函数来打印学生姓名 names array Alex Brad Tom foreach names as name echo name br sleep 3 我如何打印每个名字 每 3 秒一次 后 echo name
  • 如何使用 bash 脚本安装包含变量的 bash 函数? [复制]

    这个问题在这里已经有答案了 我正在尝试创建一个 bash 脚本 该脚本允许我在多台计算机上安装相同的 bash 函数 此特定函数在备份目录中创建带有时间戳的文件副本 filebackup cp filebackup date Y m d H
  • ASP.NET MVC3 WebGrid 帮助程序和模型元数据

    我正在尝试使用 ASP NET MVC 3 中的 WebGrid html 帮助程序根据 ModelMetadata 中找到的信息自动生成列 例如 接受对象列表的视图中的代码将是 var grid new WebGrid Model gri
  • 两个列表的交集,在第一个列表中保留重复项

    我有两个平面列表 其中之一包含重复值 例如 array1 1 4 4 7 10 10 10 15 16 17 18 20 array2 4 6 7 8 9 10 我需要在 array1 中查找也在 array2 中的值 将重复项保留在 ar
  • 在 ActionScript 3 中将一系列函数“链接”在一起

    我正在调用一个函数 并在该函数返回一些数据时添加一个侦听器 当数据返回时我需要调用另一个函数等等 是否有一种简单的方法将这些函数 链接 在一起 以便第一个函数触发 等待侦听器 然后触发第二个函数 为其创建侦听器 依此类推 直到最后一个函数调
  • SSRS 传递报告参数

    我度过了艰难的一天 试图解决这个问题的根本问题 我有一个用户输入信息的表单 该信息通过 URL 传递到 SSRS 我收到错误 An error has occurred during report processing rsProcessi
  • UITextField 中的 UITextPosition

    有什么方法可以让我通过文本字段的 UITextRange 对象获取 UITextField 当前的插入符位置吗 UITextField 返回的 UITextRange 有什么用吗 UITextPosition 的公共接口没有任何可见成员 昨
  • 基于 Restful 的视频流

    使用 spring boot 我想制作基于 RESTful 的视频播放器 我的文件浏览器中有 mp4 扩展名的视频 如何通过创建休息端点在前端提供这些视频 我已经尝试过这个方法 http shazsterblog blogspot com
  • 如何在 Three.js 中更改脸部颜色

    我正在尝试更改网格单个面上的颜色 这是在 WebGL 上下文中 我可以改变整个网格的颜色 但不能改变单个面的颜色 相关代码如下 Updated Per Lee var camera this camera var projector new
  • 如何编写语法类似Python缩进的语言?

    我正在使用类似于 Python 的内置语言编写一个工具 我想让缩进在语法中有意义 以便行开头的制表符和空格代表命令的嵌套 做这个的最好方式是什么 我之前写过递归下降和有限自动机解析器 目前的CPython http en wikipedia