0

I'm trying to parse Android log system file. Everything is going OK but it doesn't work when I try to parse parameters from log content. My grammar which provides parsing log content

logcontent : ( parameter|text|SPECIALCHAR|DIGIT|MINUS|EQUAL|COLON|DOT|APOSTROPHE|LEFTBRACKET|RIGHTBRACKET|SLASH|'_'|WS )+;

parameter : text+ EQUAL (integer|floatnumber|exponentfloat) ;

Parameter has text inside the rule so ANTLR says that grammar is ambiguous. I tried with a different rule definitions but it doesn't work. I'd like to parse this fragment of log

acquireWakeLock flags=0x2000000a tag=KEEP_SCREEN_ON_FLAG uid=1000 pid=373

How can I get whole log in string format and list of pairs 'parameter = value'

flags=0x2000000a

tag=KEEP_SCREEN_ON_FLAG

uid=1000

pid=373

4

1 に答える 1

1

代わりに、このタスクには正規表現を使用することを強くお勧めします。このタイプの操作では、より高速で簡単です。

Pattern pattern = Pattern.compile("^(.*?)=(.*)$");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
    String key = matcher.group(1);
    String value = matcher.group(2);
    // do whatever here...
}
于 2013-01-02T19:38:16.320 に答える