我需要使用包含存储过程,视图和函数的大量pl / sql文件,并将它们全部拆分为单个文件。
示例:
create or replace function practice_function(hello in table.hello%type) return varchar2 as
hello2 varchar2(6);
begin
if hello is not null then
hello2 := "hi";
end if;
return hello2;
end practice_function
/
这只是存储函数的一个示例。该文件可能包含10或20个带有注释和阻止注释的文件等。有人可以就我应该如何处理它以及如何编写解析器给我建议。
目前我正在使用Java逐行读取文件并在每行进入时解析。例如,当我需要忽略具有块注释的代码时,这会导致问题。
任何建议都会很棒
答案 0 :(得分:1)
编写PL / SQL或几乎任何其他解析器是一项具有挑战性的任务。基本上你需要:
即使从代码中删除评论的任务也可能变得非常具有挑战性。走这棵树并删除注释节点应该没问题。当您想要打印新树时,可能会出现困难,因为自然行走顺序可能与正确的文本顺序不同。
您可以尝试使用existing ANTLR parser。这将完成前两个步骤。
关于如何从ANTLR开始的文章:antlr: is there a simple example?