给定源文件(Java / Scala),如何使用Javascript解析源文件的类名?
具体而言,用户将源代码输入基于浏览器的编辑器。我想从源文本中解析出类名。
例如:
var sourceText =
class TestClass extends MyClass{
// do something
}
class
TestClass2
extends
MyParentClass2
{
}
class TestClass3
extends MyParentClass3 { }
如何编写此功能:
parseClassNameFromSourceText: function (sourceText) {
}
这样如果我传入上面的源文本,它会产生[TestClass,TestClass2,TestClass3]?
答案 0 :(得分:0)
你标题为这个" regex",但你无法用正则表达式来解析这个问题。你必须编写一个适当的(如果简单的)解析器。以下是一些会让您失望的事情:
// class Foo is imaginary
/* class Bar is just an idea */
class Baz {
public class Quux {
public String uhoh() { return "I am an inner class YIKES can you parse strings?!"; }
}
}
class /* comments can go here you know! */ Bippy {}
还有一些Scala特定的:
class Wimble {
val `class YouMustBeJoking` = "Actually, I am a legal identifier!"
val moreProblems = """class is always okay in strings"""
def tricky = s"${class Glath { def iAmARealClass = true }}"
}
Java的完整解析器是this question的主题。你可以扩展它来解析Scala以达到这些目的(取决于你对内部类的决定)。