All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.st.p2012.mind.adl.parser.ADLParser Maven / Gradle / Ivy

The newest version!
/**
   \file com/st/p2012/mind/parser/ADLParser.java
   \brief An adl parser component using the JTBProcessor extension for adding documentation
   comments in semantic AST nodes.


   
   \n
   This file is part of the Platform 2012 program,
   a cooperation between STMicroelectronics and CEA.\n
   Redistribution of this file to outside parties is
   strictly prohibited without the written consent
   of the module owner indicated below.\n
   

   \par  Module owner: [email protected]


   \par  Copyright (C) 2009 STMicroelectronics

   \par  Authors: [email protected]

   \par  Id: $Id$
   \par  Date: $Date$
   \par  Revision: $Rev$

 */

package com.st.p2012.mind.adl.parser;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Map;

import org.objectweb.fractal.adl.ADLErrors;
import org.objectweb.fractal.adl.ADLException;
import org.objectweb.fractal.adl.Definition;
import org.objectweb.fractal.adl.error.BasicErrorLocator;
import org.objectweb.fractal.adl.error.ErrorLocator;
import org.objectweb.fractal.mind.InputResourcesHelper;
import org.objectweb.fractal.mind.adl.jtb.ParseException;
import org.objectweb.fractal.mind.adl.jtb.Parser;
import org.objectweb.fractal.mind.adl.jtb.syntaxtree.ADLFile;

public class ADLParser extends org.objectweb.fractal.mind.adl.parser.ADLParser {

  // --------------------------------------------------------------------------
  // -
  // Implementation of the Loader interface
  // --------------------------------------------------------------------------
  // -

  @Override
  public Definition load(final String name, final Map context)
      throws ADLException {
    final URL adlFile = locateADL(name, context);

    Definition d;
    try {
      d = readADL(adlFile.openStream(), adlFile.getPath());
    } catch (final IOException e) {
      throw new ADLException(ADLErrors.IO_ERROR, e, adlFile.getPath());
    } catch (final ParseException e) {
      final ErrorLocator locator = new BasicErrorLocator(adlFile.getPath(),
          e.currentToken.beginLine, e.currentToken.beginColumn);
      throw new ADLException(ADLErrors.PARSE_ERROR, locator, e.getMessage());
    }

    InputResourcesHelper.addInputResource(d, adlLocatorItf
        .toInputResource(name));

    return d;
  }

  @Override
  protected Definition readADL(final InputStream is, final String fileName)
      throws IOException, ParseException, ADLException {
    final Parser parser = new Parser(is);
    final JTBProcessor processor = new JTBProcessor(nodeFactoryItf, DTD,
        fileName);
    final ADLFile content = parser.ADLFile();
    return processor.toDefinition(content);
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy