alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

What this is

This file is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Other links

The source code

/*
 *                 Sun Public License Notice
 * 
 * The contents of this file are subject to the Sun Public License
 * Version 1.0 (the "License"). You may not use this file except in
 * compliance with the License. A copy of the License is available at
 * http://www.sun.com/
 * 
 * The Original Code is NetBeans. The Initial Developer of the Original
 * Code is Sun Microsystems, Inc. Portions Copyright 1997-2002 Sun
 * Microsystems, Inc. All Rights Reserved.
 */
package org.netbeans.modules.xml.text.syntax;

import org.netbeans.editor.*;
import org.netbeans.modules.xml.text.syntax.javacc.lib.*;
import org.netbeans.modules.xml.text.syntax.javacc.XMLSyntaxConstants;

/**
 * Factory mapping jjID => TokenID.
 *
 * @author  Petr Kuzel
 * @version 1.0
 */
public class XMLSyntaxTokenMapper implements JJMapperInterface, JJConstants, XMLSyntaxConstants {
    
    
    /** Create token for particular ID.  */
    public JJTokenID createToken(int id) {
        
        switch(id) {
            
            case JJ_EOL:
                return XMLTokenContext.EOL;
                
            case JJ_EOF:
                throw new Error("guessToken() must be called for such case."); // NOI18N
                
            case JJ_ERR:
                return XMLTokenContext.ERROR;
                
            //    case RCB:
            case RSB:
            case TAG_START:
            case DECL_START:
            case PI_START:
            case CDATA_START:
            case COND_END_IN_DEFAULT:
            case EQ_IN_TAG_ATTLIST:
            case TAG_END:
            case PI_CONTENT_START:
            case PI_END:
            case PI_CONTENT_END:
            case CDATA_END:
            case COND:
            case DECL_END:
            case ENTITY_END:
            case ELEMENT_END:
            case NOTATION_END:
            case COND_END:
            case ATTLIST_END:
            case DOCTYPE_END:
                
                return XMLTokenContext.SYMBOL;
                
            case TAG_NAME:
                
                return XMLTokenContext.TAG;

            case ERR_IN_GREF:
            case ERR_IN_TAG:
            case ERR_IN_TAG_ATTLIST:
            case ERR_IN_PI:
            case ERR_IN_PI_CONTENT:
            case ERR_IN_DECL:
            case ERR_IN_NOTATION:
            case ERR_IN_COND:
            case ERR_IN_ATTLIST:
            case ERR_IN_DOCTYPE:
            case ERR_IN_DEFAULT:
            case ERR_IN_COMMENT:
                
                return XMLTokenContext.ERROR;
                
            case ATT_NAME:
                
                return XMLTokenContext.ATT;
                
            case PI_TARGET:
            case XML_TARGET:
                
                return XMLTokenContext.TARGET;
                
//            case B_IN_CDATA:
            case TEXT_IN_CDATA:
                
                return XMLTokenContext.CDATA;

            case MARKUP_IN_CDATA:

                return XMLTokenContext.CDATA_MARKUP;
                
            case KW_IN_XML_DECL:                
            case ENTITY:
            case ATTLIST:
            case DOCTYPE:
            case ELEMENT:
            case NOTATION:
            case KW_IN_ENTITY:
            case EMPTY:
            case PCDATA:
            case ANY:
            case SYSTEM_IN_NOTATION:
            case INCLUDE:
            case IGNORE:
            case REQUIRED:
            case IMPLIED:
            case FIXED:
            case ID_IN_ATTLIST:
            case CDATA:
            case IDREF:
            case IDREFS:
            case ENTITY_IN_ATTLIST:
            case ENTITIES:
            case NMTOKEN:
            case NMTOKENS:
            case NOTATION_IN_ATTLIST:
            case PUBLIC:
            case SYSTEM:
                
                return XMLTokenContext.KW;
                
                
            case PREF_START:
            case TEXT_IN_PREF:
            case GREF_END:
            case PREF_END:
            case GREF_START:
            case TEXT_IN_GREF:
                
                return XMLTokenContext.REF;
                                
            case CHARS_START:
            case TEXT_IN_CHARS:
            case CHARS_END:
            case GREF_CHARS_START:
            case TEXT_IN_GREF_CHARS:
            case GREF_CHARS_END:
                
            case STRING_START:
            case TEXT_IN_STRING:
            case STRING_END:            
            case GREF_STRING_START:
            case TEXT_IN_GREF_STRING:
            case GREF_STRING_END:            
                
                return XMLTokenContext.STRING;
                
            case COMMENT_START:
            case TEXT_IN_COMMENT:
            case COMMENT_END:
                
                return XMLTokenContext.COMMENT;
                
                default:
                    return XMLTokenContext.PLAIN;
        }
        
    }
    /** @return token guessed for particular state.  */
    public final JJTokenID guessToken(String token,int state,boolean lastBuffer) {
        
        switch (state) {
            case XMLSyntaxConstants.IN_COMMENT:
                if (!("--".equals(token) || "-".equals(token))) { // NOI18N
                    return XMLTokenContext.COMMENT;
                } else {
                    return cannotGuess(lastBuffer);
                }
                
            case XMLSyntaxConstants.IN_GREF:
            case XMLSyntaxConstants.IN_PREF:
                return XMLTokenContext.REF;
                
            case XMLSyntaxConstants.IN_STRING:
            case XMLSyntaxConstants.IN_CHARS:
            case XMLSyntaxConstants.IN_GREF_STRING:
            case XMLSyntaxConstants.IN_GREF_CHARS:                
                return XMLTokenContext.STRING;
                
            default:
                return cannotGuess(lastBuffer);
        }
    }
    
    private JJTokenID cannotGuess(boolean lastBuffer) {
        return cannotGuess(lastBuffer, XMLTokenContext.PLAIN);
    }
    
    private JJTokenID cannotGuess(boolean lastBuffer, JJTokenID supposed) {
        if (lastBuffer) {
            return supposed;
        } else { 
            //ask for next buffer
            return null;
        }
        
    }
    /** @return supposed token for particular id and state.  */
    public JJTokenID supposedToken(String token,int id,int state) {
        switch (state) {
            case IN_TAG:
                return XMLTokenContext.TAG;
                
            case IN_COMMENT:
                return XMLTokenContext.COMMENT;
                
            default:
                return null;                
        }
    }
    
    
}
... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.