在Java中检测和删除代码中的单行注释

在Java中检测和删除代码中的单行注释,java,compiler-construction,Java,Compiler Construction,所以我制作了这个编译器,它把一个文本文件编译成机器代码,让操作系统从SD卡上读取。代码如下所示:Ra text_to_store,它将文本存储在字符串槽a中。这其中的大部分似乎是可行的 mystring=mystring.replace("String ","R"); mystring=mystring.replace("=",""); mystring=mystring.replace(";",""); //cannot replace " with nothing, how do I get

所以我制作了这个编译器,它把一个文本文件编译成机器代码,让操作系统从SD卡上读取。代码如下所示:Ra text_to_store,它将文本存储在字符串槽a中。这其中的大部分似乎是可行的

mystring=mystring.replace("String ","R");
mystring=mystring.replace("=","");
mystring=mystring.replace(";","");
//cannot replace " with nothing, how do I get around this?
当这变成字符串a=文本存储时;输入正确的代码

但当然,并不是所有这些都可以做到。例如,我需要去掉注释//注释过的东西,这些东西在.replace中是不可行的,还有其他一些东西。这可能很简单,但我找不到


p、 您还可以提供文本格式的链接/帮助吗?例如int-var;需要转换为RAM插槽的编号。提前谢谢

使用mystring.replaceAll,它使用正则表达式,例如

mystring = mystring.replaceAll("//.*$","");

从//到行尾的替换不带任何内容

您可以使用replaceAll和regex将所有内容放在一行中

mystring=mystring.replaceAll("(?:.|\\s)*String ([\\w]+)=(.*?);(?:.|\\s)*","R$1 $2");

可能需要添加一个注意事项,这可能会使代码出错。e、 g.类似字符串url的源行=http://example.com/...; 换句话说,简单的字符串替换只会让你走到这一步,在某个时候你需要一个合适的lexer…这是真的,它会把事情搞砸。也许检查一下它是否在队伍的最前面。我假设这是理论上的,因为你永远不会想用string.replace做一个编译器。无论如何,我不会使用URL,但它可以工作!谢谢现在,我们来看看如何使用vars…根据netbeans,有4个非法转义字符,但它可以运行。但是,它对文本没有任何影响。嗯。。。仍然对文本没有影响。你的mystring中有多行,我想我已经修复了它,直到什么都没有。代码:{static String stuff=String stuff=String ness;\n//我是一条注释;public static void mainString[]args{String mystring=stuff.replaceAllString[\\w]+=[\\w\\s]+;[]*?://[\\d\\d]*?,R$1$2;System.out.printlnmystring;}}您的字符串中有一个“-”,我编写的正则表达式只查找字母和空格,因为这就是您的示例,现在添加了对任何内容的支持