在ada中以自由格式输入读取文件

时间:2014-10-20 19:36:56

标签: file-io ada

我需要从这样的文件中获取输入:

让我们说文件名是test.dat,它是这样的:

keyword1 123456a
keyword2 small hard sour
keyword2 midsize firm bland
keyword2 large hard sour
    keyword1 

         2234567
keyword1 3234567
keyword1 4234567
    keyword2 
        small 
        soft 
        sour
keyword1 123456a
    keyword2 midsize hard bland
keyword1 123456A
    keyword2 large firm sweet
keyword1 AAAAAAA
    keyword2 midsize hard bland
keyword1 BBBBBBA
    keyword2 large firm sweet

我需要检测keyword1并读取接下来的七个字符串然后我需要检测keywords2并读取下三个字符串,依此类推。如您所见,文件中任何字符串前后都可以有任意数量的空格。

我是ada的新手。请帮忙。

1 个答案:

答案 0 :(得分:1)

看看GNAT.AWK。它可能是自动执行此解析的最简单方法之一。类似的东西:

procedure On_Keyword1 is
begin
   Put_Line ("Field1 = " & GNAT.AWK.Field (2));
end On_Keyword1;

procedure On_Keyword2 is
begin
   Put_Line ("Word1=" & GNAT.AWK.Field (2)
             & " Word2=" & GNAT.AWK.Field (3)
             & " Word3=" & GNAT.AWK.Field (4));
end On_Keyword2;

GNAT.AWK.Register (1, "Keyword1", On_Keyword1'Access);
GNAT.AWK.Register (1, "Keyword2", On_Keyword2'Access);