gpt4 book ai didi

java - 这个程序已经是解析器了吗?

转载 作者:行者123 更新时间:2023-12-02 04:40:22 25 4
gpt4 key购买 nike

我编写了一个程序,该程序读取包含注释的 Java 文件并输出不带注释的文件。

我考虑行注释//和 block 注释/* */。但是,我只使用不以任何其他方式包含这四个字符的文件:没有字符串文字,也没有 Unicode 转义序列。它仅适用于专门使用这些字符进行注释的文件。这个程序可以称为解析器吗?语法(// 然后某事或 /* 然后某事然后 */)是常规的,对吗?

我实际上只使用 switch case 语句,即实现有限状态机。没有构建树,也没有堆栈。我认为程序在处理上下文无关语言并且至少有一个堆栈时只是一个解析器,即实现下推自动机。但我感觉解析器这个词的使用相当随意。

澄清一下:我并不是在寻找使该程序能够处理任何 Java 文件的方法,我只是对正确的术语感兴趣。

最佳答案

不,从 Java 代码中删除注释只涉及正则表达式(有限状态自动机),不能称为“解析器”...... DFA(确定性有限自动机)是编程语言编译器,因为一些预处理,如注释删除、标识符(变量/函数/类名)识别可以用 DFA 完成。事实上,编译器开发人员广泛使用 lex 工具(DFA 生成器)来实现特定于编程语言的 DFA,例如C和C++中注释识别的DFA是不同的。

下一步是为给定的高级代码生成中间代码。为此,必须使用上下文无关语法。通常使用移位归约解析器为代码构建带注释的解析树。用于此任务的最常用工具是yacc

关于java - 这个程序已经是解析器了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30257401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com