/* * Copyright (c) 2007 BUSINESS OBJECTS SOFTWARE LIMITED * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * * Neither the name of Business Objects nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * package-info.java * Creation date: Aug 16, 2004. * By: Edward Lam */ /** * Provides classes for interacting with the CAL compiler - please also see the * {@link org.openquark.cal.services services} package for the * top-level API for accessing the compiler's functionality. * <h2>Key classes in this package</h2> * <dl> * <dt>{@link org.openquark.cal.compiler.SourceModel} and its * inner classes</dt> * <dd> * These classes provide a programmatic mechanism for constructing fragments of * CAL source. The compiler API provides the ability to compile new CAL modules * and to evaluate CAL expressions defined via <code>SourceModel</code>s. * <p> * Also available to work with <code>SourceModel</code>s are visitor classes * ({@link org.openquark.cal.compiler.SourceModelVisitor}, * {@link org.openquark.cal.compiler.SourceModelTraverser}, * {@link org.openquark.cal.compiler.SourceModelCopier}) and * utility classes ({@link org.openquark.cal.compiler.SourceModelUtilities} * and its subclasses).</p> * </dd> * </dl> * <dl> * <dt>{@link org.openquark.cal.compiler.ModuleTypeInfo} and * related classes: {@link org.openquark.cal.compiler.Function}, * {@link org.openquark.cal.compiler.TypeConstructor}, * {@link org.openquark.cal.compiler.DataConstructor}, * {@link org.openquark.cal.compiler.TypeClass}, * {@link org.openquark.cal.compiler.ClassMethod}, * {@link org.openquark.cal.compiler.ClassInstance}, * {@link org.openquark.cal.compiler.CALDocComment}</dt> * <dd> * These classes provide a reflection API with which one can query information * about CAL modules loaded into the runtime and the entities declared in these * modules. * </dd> * </dl> * <dl> * <dt>{@link org.openquark.cal.compiler.TypeExpr}</dt> * <dd> * A <code>TypeExpr</code> is the representation of a CAL type * expression, such as <code>a -> b</code>, <code>Int</code>, <code>(Int, a -> * Boolean)</code>. * </dd> * </dl> * <dl> * <dt>{@link org.openquark.cal.compiler.QualifiedName}</dt> * <dd> * The Java representation of a qualified name in CAL, e.g. <code>List.map</code>. * See also the {@link org.openquark.cal.module module} package for * binding classes containing <code>QualifiedName</code> constants for entities * defined in modules which form the CAL API. * </dd> * </dl> * <dl> * <dt>{@link org.openquark.cal.compiler.MessageLogger}</dt> * <dd> * Many methods in this package accept a <code>MessageLogger</code> argument for * logging messages related to the compilation process (parsing, static analysis, * type-checking, code generation). * </dd> * </dl> * <dl> * <dt>{@link org.openquark.cal.compiler.CALSourceGenerator}</dt> * <dd> * The <code>CALSourceGenerator</code> can be used to generate CAL source for * {@link org.openquark.gems.client.Gem Gem}s. * </dd> * </dl> * * @author Joseph Wong * @author Edward Lam */ package org.openquark.cal.compiler;