使用Javascript从源文件解析Java类名

时间:2014-06-20 16:14:11

标签: java javascript regex scala parsing

给定源文件(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]?

1 个答案:

答案 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以达到这些目的(取决于你对内部类的决定)。