org.comedia.util.scanner
Class CXmlScanner

java.lang.Object
  |
  +--org.comedia.util.scanner.CScanner
        |
        +--org.comedia.util.scanner.CXmlScanner

public class CXmlScanner
extends CScanner

Performs lexical scanning for XML-like languages.

Example of scanner usage:

 System.out.println("*********** Xml Scanner Test *************");

 CXmlScanner scanner = new CXmlScanner();
 scanner.setBuffer("param+0.1=\"xxx\">\"www\" +=11 labmda");
 scanner.setShowEol(true);
 scanner.setShowSpace(true);
 scanner.setShowComment(true);

 // Tests string convertions
 String str = "The test \'string\'";
 System.out.println("Start string: " + str);
 str = scanner.wrapString(str);
 System.out.println("Wrapped string: " + str);
 str = scanner.unwrapString(str);
 System.out.println("Unwrapped string: " + str);

 System.out.println();
 System.out.println("Initial string: " + scanner.getBuffer());

 while (scanner.lex() != EOF) {
   switch (scanner.getTokenType()) {
     case UNKNOWN: System.out.print("Type: Unknown "); break;
     case COMMENT: System.out.print("Type: Comment "); break;
     case KEYWORD: System.out.print("Type: Keyword "); break;
     case TYPE: System.out.print("Type: Type "); break;
     case IDENT: System.out.print("Type: Ident "); break;
     case ALPHA: System.out.print("Type: Alpha "); break;
     case OPERATOR: System.out.print("Type: Operator "); break;
     case BRACE: System.out.print("Type: Brace "); break;
     case SEPARATOR: System.out.print("Type: Separator "); break;
     case EOL: System.out.print("Type: Eol "); break;
     case LF: System.out.print("Type: Lf "); break;
     case SPACE: System.out.print("Type: Space "); break;
     case INT: System.out.print("Type: Int "); break;
     case FLOAT: System.out.print("Type: Float "); break;
     case STRING: System.out.print("Type: String "); break;
     case BOOL: System.out.print("Type: Bool "); break;
     case EOF: System.out.print("Type: Eof "); break;
   }
   System.out.println("Value: '" + scanner.getToken()
     + "' Pos: " + scanner.getPosition() + " Line: " + scanner.getLineNo());
 }
 
The result:

 *********** Xml Scanner Test *************
 Start string: The test 'string'
 Wrapped string: "The test 'string'"
 Unwrapped string: The test 'string'

 Initial string: param+0.1="xxx">"www" +=11 labmda
 Value: '' Pos: 6 Line: 0
 Type: Ident Value: 'param' Pos: 22 Line: 0
 Value: '+' Pos: 27 Line: 0
 Type: Float Value: '0.1' Pos: 28 Line: 0
 Type: Operator Value: '=' Pos: 31 Line: 0
 Type: String Value: '"xxx"' Pos: 32 Line: 0
 Value: '>' Pos: 37 Line: 0
 Type: Unknown Value: '"www"' Pos: 38 Line: 0
 Type: Space Value: ' ' Pos: 43 Line: 0
 Type: Unknown Value: '+=11' Pos: 44 Line: 0
 Type: Space Value: ' ' Pos: 48 Line: 0
 Type: Unknown Value: 'labmda' Pos: 49 Line: 0
 Value: '' Pos: 59 Line: 0
 


Inner classes inherited from class org.comedia.util.scanner.CScanner
CScanner.Lexem
 
Fields inherited from class org.comedia.util.scanner.CScanner
ALPHA, BOOL, BRACE, buffer, bufferLen, bufferLine, bufferPos, COMMENT, CONST, current, DELIM, EOF, EOL, FLOAT, IDENT, INT, KEYWORD, keywords, LF, next, OPERATOR, operators, SEPARATOR, showComment, showEol, showKeyword, showSpace, showString, showType, SPACE, STRING, TYPE, types, UNKNOWN
 
Constructor Summary
CXmlScanner()
          Constructs this class with default parameters.
 
Method Summary
static int convertHex2Int(java.lang.String s)
          Converts hex decimal string into integer.
 boolean isInsideTag()
          Check is current parsing inside a tag.
protected  int lowRunLex(CScanner.Lexem curr)
          Gets a lowlevel token.
static void main(java.lang.String[] args)
          The main function for test purposes.
 void setBuffer(java.lang.String s)
          Sets a new input buffer and resets buffer pointers.
static java.lang.String unwrapString(java.lang.String s)
          Converts a string from XML-like escape format limited with quotes into oridinary (local) presentation.
static java.lang.String unwrapValue(java.lang.String s)
          Converts a value from XML-like escape format limited with quotes into oridinary (local) presentation.
static java.lang.String wrapString(java.lang.String s)
          Converts a string from ordinary into XML-like escape format limited with quotes.
static java.lang.String wrapValue(java.lang.String s)
          Converts a value from ordinary into XML-like escape format limited with quotes.
 
Methods inherited from class org.comedia.util.scanner.CScanner
extractNextToken, extractToken, getBuffer, getBufferPos, getLineNo, getNextLineNo, getNextPosition, getNextToken, getNextTokenType, getPosition, getToken, getTokenType, gotoNextToken, innerProcCComment, innerProcCString, innerProcIdent, innerProcLineComment, innerProcPasString, innerProcString, innerStartLex, isAlpha, isDelim, isDigit, isEol, isLetter, isQuote, isShowComment, isShowEol, isShowKeyword, isShowSpace, isShowString, isShowType, isWhite, lex, restart, runLex, searchForString, setShowComment, setShowEol, setShowKeyword, setShowSpace, setShowString, setShowType
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CXmlScanner

public CXmlScanner()
Constructs this class with default parameters.
Method Detail

isInsideTag

public boolean isInsideTag()
Check is current parsing inside a tag.

setBuffer

public void setBuffer(java.lang.String s)
Sets a new input buffer and resets buffer pointers.
Overrides:
setBuffer in class CScanner
Parameters:
s - a new input stream.

lowRunLex

protected int lowRunLex(CScanner.Lexem curr)
Gets a lowlevel token. Presents the main parsing process.
Overrides:
lowRunLex in class CScanner
Parameters:
curr - a "Holder" which containes extracted token.

wrapValue

public static java.lang.String wrapValue(java.lang.String s)
Converts a value from ordinary into XML-like escape format limited with quotes.
Parameters:
s - a string in ordinary (local) presentation.

wrapString

public static java.lang.String wrapString(java.lang.String s)
Converts a string from ordinary into XML-like escape format limited with quotes.
Parameters:
s - a string in ordinary (local) presentation.

convertHex2Int

public static int convertHex2Int(java.lang.String s)
Converts hex decimal string into integer.
Parameters:
s - a hex decimal string.

unwrapValue

public static java.lang.String unwrapValue(java.lang.String s)
Converts a value from XML-like escape format limited with quotes into oridinary (local) presentation.
Parameters:
s - a string in XML-like escape format.

unwrapString

public static java.lang.String unwrapString(java.lang.String s)
Converts a string from XML-like escape format limited with quotes into oridinary (local) presentation.
Parameters:
s - a string in XML-like escape format.

main

public static void main(java.lang.String[] args)
The main function for test purposes.