Package com.intellij.coldFusion.model.parsers

Source Code of com.intellij.coldFusion.model.parsers.CfmlParserDefinition

/*
* Copyright 2000-2013 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.coldFusion.model.parsers;

import com.intellij.coldFusion.model.CfmlLanguage;
import com.intellij.coldFusion.model.files.CfmlFile;
import com.intellij.coldFusion.model.lexer.CfmlLexer;
import com.intellij.coldFusion.model.lexer.CfmlTokenTypes;
import com.intellij.coldFusion.model.lexer.CfscriptTokenTypes;
import com.intellij.coldFusion.model.psi.CfmlCompositeElementType;
import com.intellij.coldFusion.model.psi.impl.CfmlComponentImpl;
import com.intellij.coldFusion.model.psi.impl.CfmlTagComponentImpl;
import com.intellij.lang.ASTNode;
import com.intellij.lang.ParserDefinition;
import com.intellij.lang.PsiParser;
import com.intellij.lexer.Lexer;
import com.intellij.openapi.project.Project;
import com.intellij.psi.FileViewProvider;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.tree.IFileElementType;
import com.intellij.psi.tree.TokenSet;
import org.jetbrains.annotations.NotNull;

/**
* Created by Lera Nikolaenko
* Date: 09.10.2008
*/
public class CfmlParserDefinition implements ParserDefinition {

  private static final TokenSet myCommentTypes =
    TokenSet.create(CfmlTokenTypes.COMMENT, CfscriptTokenTypes.COMMENT, CfmlTokenTypes.VAR_ANNOTATION);

  @NotNull
  public Lexer createLexer(Project project) {
    return new CfmlLexer(false, project);
  }

  public PsiParser createParser(Project project) {
    return new CfmlParser();
  }

  public IFileElementType getFileNodeType() {
    return CfmlElementTypes.CFML_FILE;
  }

  @NotNull
  public TokenSet getWhitespaceTokens() {
    return TokenSet.create(CfmlTokenTypes.WHITE_SPACE, CfscriptTokenTypes.WHITE_SPACE);
  }

  @NotNull
  public TokenSet getCommentTokens() {
    return myCommentTypes;
  }

  @NotNull
  public TokenSet getStringLiteralElements() {
    return TokenSet.create(CfmlTokenTypes.STRING_TEXT,
                           CfmlTokenTypes.SINGLE_QUOTE, CfmlTokenTypes.DOUBLE_QUOTE,
                           CfmlTokenTypes.SINGLE_QUOTE_CLOSER, CfmlTokenTypes.DOUBLE_QUOTE_CLOSER,
                /*CfmlTokenTypes.STRING_TEXT,*/
                CfmlTokenTypes.SINGLE_QUOTE, CfmlTokenTypes.SINGLE_QUOTE_CLOSER,
                CfmlTokenTypes.DOUBLE_QUOTE, CfmlTokenTypes.DOUBLE_QUOTE_CLOSER);
  }

  @NotNull
  public PsiElement createElement(ASTNode node) {
    final IElementType type = node.getElementType();

    if (type instanceof CfmlCompositeElementType) {
      return ((CfmlCompositeElementType)type).createPsiElement(node);
    }
    else if (type == CfmlElementTypes.COMPONENT_DEFINITION) {
      return new CfmlComponentImpl(node);
    }
    else if (type == CfmlElementTypes.COMPONENT_TAG) {
      return new CfmlTagComponentImpl(node);
    }
    throw new AssertionError("Unknown type: " + type);


        /*if (type == CfmlElementTypes.FUNCTION_CALL_NAME) {
            return new CfmlFunctionCallExpression(node, false);
            // return new CfmlReferenceExpression(node);
        } else if (type == CfmlElementTypes.FUNCTION_DEFINITION_NAME) {
            return new CfmlFunctionImpl(node, false);
            // return new CfmlDefinitionExpression(node);
        } else if (type == CfscriptElementTypes.FUNCTION_CALL_NAME) {
            return new CfmlFunctionCallExpression(node, true);
            // return new CfmlReferenceExpression(node);
        } else if (type == CfscriptElementTypes.FUNCTION_DEFINITION_NAME) {
            return new CfmlFunctionImpl(node, true);
            //return new CfmlDefinitionExpression(node);
        } else if (type == CfscriptElementTypes.FUNCTION_DEFINITION) {
            return new CfscriptFunction(node);
        } else if (type == CfmlElementTypes.NAMED_ATTRIBUTE) {
            return new CfmlVariableDefinition(node, false);
        } else if (type == CfmlElementTypes.REFERENCE) {
            return new CfmlVariableUsing(node, true);
        } else if (type == CfscriptElementTypes.VAR_DEF) {
            return new CfmlVariableDefinition(node, true);
        } else if (type == CfmlElementTypes.ARGUMENT_LIST) {
            return new CfmlArgumentList(node);
        }
        */
    // return new CfmlElementImpl(node);
  }

  public PsiFile createFile(FileViewProvider viewProvider) {
    return new CfmlFile(viewProvider, CfmlLanguage.INSTANCE);
  }

  public SpaceRequirements spaceExistanceTypeBetweenTokens(ASTNode left, ASTNode right) {
    return SpaceRequirements.MAY;
  }

  public String toString() {
    return "CfmlParserDefinition";
  }
}
TOP

Related Classes of com.intellij.coldFusion.model.parsers.CfmlParserDefinition

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.