blob: 73357e320af27ce112542bbaa9104f5b9e89c6ec [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 buildlexer;
import java.io.File ;
import java.lang.reflect.Method ;
import java.util.Iterator ;
import org.apache.jena.iri.IRI ;
import org.apache.jena.iri.IRIFactory ;
import org.apache.jena.iri.Violation ;
import org.apache.jena.iri.impl.BuildViolationCodes ;
/** Misc support for building the java files with JFlex.
* The distribution includes pre-built files - you do not need to perform this
* stage to rebuild the IRI library from it's source.
*/
public class MainGenerateLexers
{
static public void main(String args[]) throws Exception
{
/* File built:
LexerHost.java
LexerPath.java
LexerPort.java
LexerQuery.java
LexerScheme.java
LexerUserinfo.java
LexerXHost.java
*/
// violation.xml ==> ViolationCodes
BuildViolationCodes.main(args) ;
// host.jflex
PatternCompilerBuilder.main(args) ;
// Other jflex files
AbsLexerBuilder.main(args) ;
// Now refresh and rebuild.
// Need to edit result to remove "private" on yytext in each subparser
// Then add all the @Overrides (Eclipse quick fix) to remove warnings.
try {
new File("tmp.jflex").delete() ;
} catch (Throwable ex) {}
}
static void checkOne(String s)
{
IRI iri = IRIFactory.iriImplementation().create(s) ;
System.out.println(">> "+iri) ;
for ( Iterator<Violation> iter = iri.violations(true) ; iter.hasNext() ; )
{
Violation v = iter.next();
System.out.println(v.getShortMessage()) ;
}
System.out.println("<< "+iri) ;
System.out.println() ;
}
public static void runJFlex(String[] strings)
{
Method main = null ;
try
{
Class<? > jflex = Class.forName("JFlex.Main") ;
main = jflex.getMethod("main", new Class[]{strings.getClass()}) ;
} catch (Exception e)
{
System.err.println("Please include JFlex.jar on the classpath.") ;
System.exit(1) ;
}
try
{
main.invoke(null, new Object[]{strings}) ;
} catch (Exception e)
{
System.err.println("Problem interacting with JFlex") ;
e.printStackTrace() ;
System.exit(2) ;
}
}
}