001/*-------------------------------------------------------------------------+
002|                                                                          |
003| Copyright 2005-2011 the ConQAT Project                                   |
004|                                                                          |
005| Licensed under the Apache License, Version 2.0 (the "License");          |
006| you may not use this file except in compliance with the License.         |
007| You may obtain a copy of the License at                                  |
008|                                                                          |
009|    http://www.apache.org/licenses/LICENSE-2.0                            |
010|                                                                          |
011| Unless required by applicable law or agreed to in writing, software      |
012| distributed under the License is distributed on an "AS IS" BASIS,        |
013| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
014| See the License for the specific language governing permissions and      |
015| limitations under the License.                                           |
016+-------------------------------------------------------------------------*/
017package eu.cqse.check.framework.shallowparser;
018
019import java.util.List;
020
021import eu.cqse.check.framework.scanner.IToken;
022import eu.cqse.check.framework.shallowparser.framework.ShallowEntity;
023
024/**
025 * Interface for a shallow parser. All shallow parsers are sufficiently robust
026 * to support parsing even of non-compiling code and arbitrary code snippets.
027 */
028public interface IShallowParser {
029
030        /**
031         * Shallow parses the given list of tokens and returns all entities found.
032         * The tokens provided are expected to represent an entire top-level element
033         * of the language (typically a file).
034         */
035        List<ShallowEntity> parseTopLevel(List<IToken> tokens);
036
037        /**
038         * Shallow parses the given list of tokens and returns all entities found.
039         * The tokens provided may be from an arbitrary contiguous chunk of source
040         * code.
041         */
042        List<ShallowEntity> parseFragment(List<IToken> tokens);
043}