59 lines
1.3 KiB
Java
59 lines
1.3 KiB
Java
/*
|
|
* @(#)SourceFile.java 2.1 2003/10/07
|
|
*
|
|
* Copyright (C) 1999, 2003 D.A. Watt and D.F. Brown
|
|
* Dept. of Computing Science, University of Glasgow, Glasgow G12 8QQ Scotland
|
|
* and School of Computer and Math Sciences, The Robert Gordon University,
|
|
* St. Andrew Street, Aberdeen AB25 1HG, Scotland.
|
|
* All rights reserved.
|
|
*
|
|
* This software is provided free for educational use only. It may
|
|
* not be used for commercial purposes without the prior written permission
|
|
* of the authors.
|
|
*/
|
|
|
|
package Triangle.SyntacticAnalyzer;
|
|
|
|
public class SourceFile {
|
|
|
|
public static final char EOL = '\n';
|
|
public static final char EOT = '\u0000';
|
|
|
|
java.io.File sourceFile;
|
|
java.io.FileInputStream source;
|
|
int currentLine;
|
|
|
|
public static SourceFile ofPath(String pathname) {
|
|
try {
|
|
return new SourceFile(pathname);
|
|
} catch (java.io.IOException s) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
private SourceFile(String pathname) throws java.io.FileNotFoundException {
|
|
sourceFile = new java.io.File(pathname);
|
|
source = new java.io.FileInputStream(sourceFile);
|
|
currentLine = 1;
|
|
}
|
|
|
|
char getSource() {
|
|
try {
|
|
int c = source.read();
|
|
|
|
if (c == -1) {
|
|
c = EOT;
|
|
} else if (c == EOL) {
|
|
currentLine++;
|
|
}
|
|
return (char) c;
|
|
} catch (java.io.IOException s) {
|
|
return EOT;
|
|
}
|
|
}
|
|
|
|
int getCurrentLine() {
|
|
return currentLine;
|
|
}
|
|
}
|