************************************************************* * JLex README Version 1.2 * ************************************************************* Written by Elliot Berk [edited by A. Appel] [revised by C. Scott Ananian]. Contact cananian@alumni.princeton.edu with any problems relating to JLex. The following steps describe the compilation and usage of JLex. (1) Choose some directory that is on your CLASSPATH, where you install Java utilities such as JLex. I will refer to this directory as "J", for example. (2) Make a directory "J/JLex" and put the sourcefile Main.java in J/JLex. (3) Compile Main.java as you would any Java source file: javac Main.java This should produce a number of Java class files, including Main.class, in the "J/JLex" directory, where "J" is in your CLASSPATH. (4) To run JLex with a JLex specification file, the usage is: java JLex.Main where is the name of the JLex specification file. If java complains that it can't find JLex.Main, then the directory "J" (which contains the subdirectory "JLex" which contains the class files) isn't in your CLASSPATH; go back and read steps 1-3 more carefully, please. JLex will produce diagnostic output to inform you of its progress and, upon completion, will produce a Java source file that contains the lexical analyzer. The name of the lexical analyzer file will be the name of the JLex specification file, with the string ".java" added to the end. (So if the JLex specification file is called foo.lex, the lexical analyzer source file that JLex produces will be called foo.lex.java.) (5) The resulting lexical analyzer source file should be compiled with the Java compiler: javac where is the name of the lexical analyzer source file. This produces a lexical analyzer class file, which can then be used in your applications. If the default settings have not been changed, the lexical analyzer class will be called Yylex and the classs files will named Yylex.class and Yytoken.class. (6) As an example, there is a sample lexical specification on the JLex web site: http://www.cs.princeton.edu/~appel/modern/java/JLex/ named 'sample.lex'. Transfer this to your system and use the command: java JLex.Main sample.lex to generate a file named 'sample.lex.java'. Compile this with: javac -d J sample.lex.java where "J" is the above mentioned path to a directory in your CLASSPATH. If '.' is in your CLASSPATH, you can use "-d .". Run the generated lexer with: java Sample which expects input on stdin. The lexer parses tokens that resemble those for a typical programming language; whitespace is generally ignored. Java buffers input from stdin a line at a time, so you won't see any output until you type enter. Try inputting things like: an_identifier "a string" 123124 (1+2) { /* comment */ a := b & c; } Look at the sample.lex input file for more information on the operation of this example scanner.