| summaryrefslogtreecommitdiff | 
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-07-17 10:13:31 +0200 | 
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-07-17 10:13:31 +0200 | 
| commit | 3e019d57fab57afe7aad373385f32a23bd178941 (patch) | |
| tree | c11e3440e4f199c8da54e649f01f9598df87e46b /instr-to-kodkod/src/QuickParser.java | |
Initial commit.
Diffstat (limited to 'instr-to-kodkod/src/QuickParser.java')
| -rw-r--r-- | instr-to-kodkod/src/QuickParser.java | 58 | 
1 files changed, 58 insertions, 0 deletions
| diff --git a/instr-to-kodkod/src/QuickParser.java b/instr-to-kodkod/src/QuickParser.java new file mode 100644 index 0000000..47cea27 --- /dev/null +++ b/instr-to-kodkod/src/QuickParser.java @@ -0,0 +1,58 @@ +/* FIXME: Finer imports */ +import java.io.*; +import java.util.regex.*; +import java.util.*; + +public class QuickParser +{ +   private static final Pattern instr_pattern; +   private final BufferedReader buffered_reader; + +   static +   { +      instr_pattern = Pattern.compile("\\((?<list>[a-z_0-9 \"]+)\\)"); +   } +   public QuickParser (final String filename) +   throws FileNotFoundException +   { +      buffered_reader = new BufferedReader(new FileReader(filename)); +   } + +   public void finalize () +   throws IOException +   { +      buffered_reader.close(); +   } + +   public String[] parse_line () +   throws IOException +   { +      final List<String> result; +      final Matcher matcher; +      String line; + +      do +      { +         line = buffered_reader.readLine(); + +         if (line == null) +         { +            return new String[0]; +         } + +         line = line.replaceAll("\\s+"," "); +      } +      while (line.length() < 3 || line.startsWith(";")); + +      matcher = instr_pattern.matcher(line); + +      if (!matcher.find()) +      { +         System.err.println("[E] Invalid instruction \"" + line + "\""); + +         return null; +      } + +      return matcher.group(1).split(" |\t"); +   } +} | 


