// Path: src/de/unitrier/daalft/pali/phonology/element/Rule.java
// public class Rule {
// 
// 	private String left, right;
// 
// 	////////////////////////////////////////////////////
// 	// Constructors
// 	////////////////////////////////////////////////////
// 	
// 	public Rule() {
// 
// 	}
// 	
// 	public Rule(String l, String r) {
// 		left = l.trim();
// 		right = r.trim().replace("\\", "$");
// 	}
// 
// 	public Rule(Token[] array) {
// 		left = strip(array[0]).trim();
// 		right = strip(array[2]).trim().replace("\\", "$");
// 	}
// 
// 	public Rule(List<Token> ret) {
// 		this(ret.toArray(new Token[3]));
// 	}
// 
// 	////////////////////////////////////////////////////
// 	// Methods
// 	////////////////////////////////////////////////////
// 	
// 	public boolean isApplicable(String s) {
// 		return s.matches(".*"+left+".*");
// 	}
// 
// 	public String applyFirst(String s) {
// 		return s.replaceFirst(left, right);
// 	}
// 
// 	public String applyAll(String s) {
// 		return s.replaceAll(left, right);
// 	}
// 
// 	@Override
// 	public String toString () {
// 		return left + " -> " + right;
// 	}
// 
// 	private String strip(Token t) {
// 		String tr = t.toString();
// 		int l = tr.length()-1;
// 		return tr.substring(1, l);
// 	}
// }
// 
// Path: src/de/unitrier/daalft/pali/phonology/tools/interfaces/LineReader.java
// public interface LineReader {
// 
// 	public List<Token> parse(String line);
// 	
// }


import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import de.general.simpletokenizing.Token;
import de.general.simpletokenizing.TokenValidator;
import de.general.simpletokenizing.TokenValidator.ShortType;
import de.unitrier.daalft.pali.phonology.element.Rule;
import de.unitrier.daalft.pali.phonology.tools.interfaces.LineReader;

package de.unitrier.daalft.pali.phonology.tools;



public class SandhiFileReader {

	private LineReader lr;
	private String commentCharacter = "#";
	
	public SandhiFileReader() {
		lr = new SandhiLineReader();
	}
	
	public SandhiFileReader(String commentChar) {
		this();
		commentCharacter = commentChar;
	}
	

// Path: src/de/unitrier/daalft/pali/phonology/element/Rule.java
// public class Rule {
// 
// 	private String left, right;
// 
// 	////////////////////////////////////////////////////
// 	// Constructors
// 	////////////////////////////////////////////////////
// 	
// 	public Rule() {
// 
// 	}
// 	
// 	public Rule(String l, String r) {
// 		left = l.trim();
// 		right = r.trim().replace("\\", "$");
// 	}
// 
// 	public Rule(Token[] array) {
// 		left = strip(array[0]).trim();
// 		right = strip(array[2]).trim().replace("\\", "$");
// 	}
// 
// 	public Rule(List<Token> ret) {
// 		this(ret.toArray(new Token[3]));
// 	}
// 
// 	////////////////////////////////////////////////////
// 	// Methods
// 	////////////////////////////////////////////////////
// 	
// 	public boolean isApplicable(String s) {
// 		return s.matches(".*"+left+".*");
// 	}
// 
// 	public String applyFirst(String s) {
// 		return s.replaceFirst(left, right);
// 	}
// 
// 	public String applyAll(String s) {
// 		return s.replaceAll(left, right);
// 	}
// 
// 	@Override
// 	public String toString () {
// 		return left + " -> " + right;
// 	}
// 
// 	private String strip(Token t) {
// 		String tr = t.toString();
// 		int l = tr.length()-1;
// 		return tr.substring(1, l);
// 	}
// }
// 
// Path: src/de/unitrier/daalft/pali/phonology/tools/interfaces/LineReader.java
// public interface LineReader {
// 
// 	public List<Token> parse(String line);
// 	
// }


// Path: src/de/unitrier/daalft/pali/phonology/tools/SandhiFileReader.java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import de.general.simpletokenizing.Token;
import de.general.simpletokenizing.TokenValidator;
import de.general.simpletokenizing.TokenValidator.ShortType;
import de.unitrier.daalft.pali.phonology.element.Rule;
import de.unitrier.daalft.pali.phonology.tools.interfaces.LineReader;

package de.unitrier.daalft.pali.phonology.tools;



public class SandhiFileReader {

	private LineReader lr;
	private String commentCharacter = "#";
	
	public SandhiFileReader() {
		lr = new SandhiLineReader();
	}
	
	public SandhiFileReader(String commentChar) {
		this();
		commentCharacter = commentChar;
	}
	

	public List<Rule> parse (File file) throws Exception {
