/src/org/ooc/frontend/parser/DeclarationParser.java

http://github.com/nddrylliog/ooc · Java · 37 lines · 27 code · 10 blank · 0 comment · 10 complexity · f18a970ec40f20c7bfee2157f493b0ac MD5 · raw file

  1. package org.ooc.frontend.parser;
  2. import org.ooc.frontend.model.ClassDecl;
  3. import org.ooc.frontend.model.CoverDecl;
  4. import org.ooc.frontend.model.Declaration;
  5. import org.ooc.frontend.model.FunctionDecl;
  6. import org.ooc.frontend.model.Module;
  7. import org.ooc.frontend.model.OpDecl;
  8. import org.ooc.frontend.model.VariableDecl;
  9. import org.ooc.frontend.model.tokens.TokenReader;
  10. import org.ubi.SourceReader;
  11. public class DeclarationParser {
  12. public static Declaration parse(Module module, SourceReader sReader, TokenReader reader) {
  13. int mark = reader.mark();
  14. VariableDecl varDecl = VariableDeclParser.parseSingle(module, sReader, reader);
  15. if(varDecl != null) return varDecl;
  16. OpDecl opDecl = OpDeclParser.parse(module, sReader, reader);
  17. if(opDecl != null) return opDecl;
  18. FunctionDecl funcDecl = FunctionDeclParser.parse(module, sReader, reader, false);
  19. if(funcDecl != null) return funcDecl;
  20. ClassDecl classDecl = ClassDeclParser.parse(module, sReader, reader);
  21. if(classDecl != null) return classDecl;
  22. CoverDecl coverDecl = CoverDeclParser.parse(module, sReader, reader);
  23. if(coverDecl != null) return coverDecl;
  24. reader.reset(mark);
  25. return null;
  26. }
  27. }