Parsing 如何将源代码解析为英语?
我必须采取什么步骤来建立这样的计划 我想有一个程序,将一个简单(有限)的java关键字转换成英语人类语言 e、 g 至 声明HelloWorld类Parsing 如何将源代码解析为英语?,parsing,common-lisp,Parsing,Common Lisp,我必须采取什么步骤来建立这样的计划 我想有一个程序,将一个简单(有限)的java关键字转换成英语人类语言 e、 g 至 声明HelloWorld类 声明主方法 声明变量x 声明变量y 打印单词“你好,世界” 闭合花括号 闭花括号 程序将逐行读取源代码 我试着使用cl-ppcre,但问题是,我想不出该如何把一个词带到temp e、 g 声明HelloWord,然后添加“class”单词 不是声明类HelloWorld,而是声明HelloWorld类 或者,很难在打印结束时替换“;”。因为另一个词
声明主方法
声明变量x
声明变量y
打印单词“你好,世界”
闭合花括号
闭花括号 程序将逐行读取源代码
- 我试着使用
,但问题是,我想不出该如何把一个词带到temp e、 g 声明cl-ppcre
,然后添加“class”单词 不是HelloWord
,而是声明类HelloWorld
声明HelloWorld类
- 或者,很难在打印结束时替换“;”。因为另一个词必须被替换
(with-open-file (input "~/test.java")
(loop for line = (read-line input nil)
while line do (format t "~a~%" (parse-laporan line))))
然后解析它
(defun parse-laporan (isi)
(cond
((cl-ppcre:scan "int " isi)
(cl-ppcre:regex-replace "int" isi "Declare variable"))
((cl-ppcre:scan "System.out.print+" isi)
(cl-ppcre:regex-replace "System.out.print+" isi "print word "))
((cl-ppcre:scan "System.out.println+" isi)
(cl-ppcre:regex-replace "System.out.println+" isi "print word "))
((cl-ppcre:scan "(" isi)
(cl-ppcre:regex-replace "()" isi " "))
((cl-ppcre:scan "public class" isi)
(cl-ppcre:regex-replace "public class" isi "Declare Kelas "))))
但效果并不理想
我必须阅读文件的所有内容并建立一个抽象语法树吗?(就像翻译一样)
或者我可以通过逐字替换来实现它
我必须阅读文件的所有内容并建立一个抽象语法树吗
当然可以
你可能希望它不仅仅是一棵树,而是一些树
因此,您可能希望保留源代码的多个表示形式。你可能想要几张通行证
你的问题可能比你想象的更难。我会考虑一些方法。非常有趣的项目,由蚂蚁NIO MeeZes LeIT AO o,你在代码中所做的与解析无关。你所要做的就是用一个字符串替换每行的文本模式。是的,没错。这样我就不会在回购协议中给出任何“解析”名称。我不得不中止这个想法。它认为我可以通过像
awk
或RegEx
那样在这里或那里替换单词来实现它。但正如所说,“你的问题可能比你想象的更难”。我认为这是对的。所以在完成PCL和PAIP后,我会回到这个想法。
(defun parse-laporan (isi)
(cond
((cl-ppcre:scan "int " isi)
(cl-ppcre:regex-replace "int" isi "Declare variable"))
((cl-ppcre:scan "System.out.print+" isi)
(cl-ppcre:regex-replace "System.out.print+" isi "print word "))
((cl-ppcre:scan "System.out.println+" isi)
(cl-ppcre:regex-replace "System.out.println+" isi "print word "))
((cl-ppcre:scan "(" isi)
(cl-ppcre:regex-replace "()" isi " "))
((cl-ppcre:scan "public class" isi)
(cl-ppcre:regex-replace "public class" isi "Declare Kelas "))))