package org.antlr.tml; import antlr.TokenStreamException; import antlr.Token; import java.util.Vector; import java.io.StringReader; import java.io.Reader; public class DefaultTMLEngine extends TMLLexer { public DefaultTMLEngine(Reader in, TMLContext context) { super(in, context); } public DefaultTMLEngine(Reader in) { super(in); } /** Begin on-the-fly syntax-directed translation */ public void translate(TMLTranslator translator) throws TokenStreamException { if ( translator!=null ) { this.translator = translator; } boolean done = false; Token t = null; int saveSectionLevel = context.sectionLevel; if ( !context.isNestedTranslator() ) { translator.begin(); } while ( !done ) { t=nextToken(); if ( t.getType() == Token.EOF_TYPE ) { done = true; } else { // System.out.println("token=="+t); } } captureText(); closeAllLists(); closeSectionsToLevel(saveSectionLevel); if ( !context.isNestedTranslator() ) { translator.end(); } } protected void closeAllLists() { closeAllLists(0); } protected void closeAllLists(int level) { while ( context.listTypeStack.size()>level ) { translator.endListItem(context.listTypeStack.size()); closeList(); } } protected void closeList() { String e = (String)context.listTypeStack.pop(); if ( e.equalsIgnoreCase("UL") ) { int level = context.listTypeStack.size()+1; translator.end_ul(level); } else if ( e.equalsIgnoreCase("OL") ) { int level = context.listTypeStack.size()+1; translator.end_ol(level); } } protected void captureText() { if ( context.textBetweenMarkup.length()>0 ) { translator.text(context.textBetweenMarkup.toString()); context.textBetweenMarkup.setLength(0); } } protected void ul(int level) { if ( context.listTypeStack.size()level; i--) { // System.out.println("i=="+i); translator.endSection(i); translator.endSectionList(i); } } protected void section(String text, int level) { // System.out.println("section("+text+", "+level+") context.Level="+context.sectionLevel); closeAllLists(); if ( level>context.sectionLevel ) { translator.beginSectionList(level); } else if ( level> from front/back */ private String trim2(String t) { if ( t!=null ) { return t.substring(2,t.length()-2); } return null; } /* public void uponEOF() throws TokenStreamException, CharStreamException { System.out.println("uponEOF"); } */ }