java - 将 Java 代码拆分为 Token

标签 java parsing split

我需要能够将 Java 代码拆分为单独的标记,其中标记是不依赖于空格的代码字符串。

例如,以下 Java 代码:

if (method(a, b).equals("C, C++, Java"))

将分为:

['if', '(', 'method', '(', 'a', ',', 'b', ')', '.', 'equals', '(', '"C, C++, Java"', ')', ')'] 

基本上,我需要一个可以用空格填充(或取消填充)而不改变代码执行的标记列表。如果我采用前面的代码示例,我可以添加和删除标记周围的空格以形成类似以下内容的内容:

if   (method    ( a,b)   . equals   ( "C, C++, Java")       )

我仍然会得到相同的结果。

我猜这只能通过一些外部库来实现,但我不知道有什么。

最佳答案

像antlr或javacc这样的解析器生成器有完整的java语法作为示例。您可以重复使用生成的分词器来实现您的目标。

您也可以使用正则表达式实现某种标记化。但这并不是 100% java token 。

关于java - 将 Java 代码拆分为 Token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44374537/

相关文章:

python - 如何在python中根据静音分割音频文件并重叠最后说2秒

java - 如何定义自定义分析器以使用 hibernate-search 和 elasticsearch 进行全局搜索

java - 如果没有捕获异常如何处理?

java - @KafkaListener 正常关闭,批处理 Kakfa 监听器不工作

bash - 从 Bash 中的配置文件解析变量

java - java中如果字符串后面有两个或多个空格/空格,如何分割字符串?

java - 检查ArrayList中数据类中的字符串字段是否具有给定值

algorithm - 提高单词匹配(向前看?)算法性能

parsing - 示例解析器以学习如何编写它们

r - 拆分数据帧内一行中的列字符串元素