Index: branches/apertium-separable/src/transducer.cpp =================================================================== --- branches/apertium-separable/src/transducer.cpp (nonexistent) +++ branches/apertium-separable/src/transducer.cpp (revision 80255) @@ -0,0 +1,135 @@ +#include +#include +#include +#include +#include +// #include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +int main (int argc, char** argv) { + Alphabet alphabet; + Transducer t; + + LtLocale::tryToSetLocale(); + + alphabet.includeSymbol(L""); + alphabet.includeSymbol(L""); + alphabet.includeSymbol(L""); + alphabet.includeSymbol(L""); + alphabet.includeSymbol(L""); + alphabet.includeSymbol(L""); + alphabet.includeSymbol(L""); + alphabet.includeSymbol(L""); + + alphabet.includeSymbol(L""); + alphabet.includeSymbol(L"&"); + alphabet.includeSymbol(L"$"); + + int vblex_sym = alphabet(L""); + int n_sym = alphabet(L""); + int adj_sym = alphabet(L""); + int det_sym = alphabet(L""); + int prn_sym = alphabet(L""); + int np_sym = alphabet(L""); + int adv_sym = alphabet(L""); + int pr_sym = alphabet(L""); + + int w_boundary = alphabet(L"<$>"); + int any_tag = alphabet(L""); + + int initial = t.getInitial(); + + int take_out = initial; //0 + take_out = t.insertSingleTransduction(alphabet(L't',L't'), take_out); //1 + take_out = t.insertSingleTransduction(alphabet(L'a',L'a'), take_out); //2 + take_out = t.insertSingleTransduction(alphabet(L'k',L'k'), take_out); //3 + take_out = t.insertSingleTransduction(alphabet(L'e',L'e'), take_out); //4 + take_out = t.insertSingleTransduction(alphabet(0,L'#'), take_out); //5 + take_out = t.insertSingleTransduction(alphabet(0,L' '), take_out); //6 + take_out = t.insertSingleTransduction(alphabet(0,L'o'), take_out); //7 + take_out = t.insertSingleTransduction(alphabet(0,L'u'), take_out); //8 + take_out = t.insertSingleTransduction(alphabet(0,L't'), take_out); //9 + take_out = t.insertSingleTransduction(alphabet(vblex_sym, vblex_sym), take_out); + // take_out = t.insertSingleTransduction(alphabet(any_tag, any_tag), take_out); + + // ɛ + int loop = take_out; + take_out = t.insertSingleTransduction(alphabet(any_tag, any_tag), loop); + t.linkStates(take_out, loop, 0); + + take_out = t.insertSingleTransduction(alphabet(L' ',0), take_out); + take_out = t.insertSingleTransduction(alphabet(L'o',0), take_out); + take_out = t.insertSingleTransduction(alphabet(L'u',0), take_out); + take_out = t.insertSingleTransduction(alphabet(L't',0), take_out); + take_out = t.insertSingleTransduction(alphabet(any_tag, 0), take_out); + + // take_out = t.insertSingleTransduction(alphabet(L'^',L'^'), take_out); + // take_out = t.insertSingleTransduction(alphabet(L'&',L'&'), take_out); + // take_out = t.insertSingleTransduction(alphabet(L'$',L'$'), take_out); + + t.setFinal(take_out); + + FILE* fst = fopen("takeout.fst", "w+"); + + // First write the letter symbols of the alphabet + Compression::wstring_write(L"aekout", fst); + // Then write the multicharacter symbols + alphabet.write(fst); + // Then write then number of transducers + Compression::multibyte_write(1, fst); + // Then write the name of the transducer + Compression::wstring_write(L"main@standard", fst); + // Then write the transducer + t.write(fst); + fclose(fst); + + + + State* state = new State(); + State current_state = *state; //points to initial state + + Node* initial_node = new Node(); //points to the initial node of the transducer + state->init(initial_node); + + state->step('t'); + cout << "state size = " << state->size() << endl; + + + Node* final_node = new Node(); + /* + processing + */ + + cout << "give a string input: \n" << endl; + + char in; + cin.get(in); //get one character from stdin + + int line_number = 0; + bool accepted = true; + + while (true) { + if (accepted) { + line_number++; + } + int current_state = -1; + + + set final_nodes = set; + if (state->isFinal(final_nodes) == true) { + cout << line_number << " " << input; + accepted = true + } + } + + return 0; +} Index: branches/apertium-separable/src/transducer.py =================================================================== --- branches/apertium-separable/src/transducer.py (nonexistent) +++ branches/apertium-separable/src/transducer.py (revision 80255) @@ -0,0 +1,189 @@ +#usage: python transducer.py testfile.txt + +import sys + +transitions = { + (-1,'^') : 0, + (0,'t') : 1, + (1,'a') : 2, + (2,'k') : 3, + (3,'e') : 4, + (4,'') : 5, + (5,'') : 6, + (6,'') : 7, + (6,'$') : 8, + (7,'') : 7, + (7,'$'): 8, + (8,' ') : 9, + (9,'^') : 10, + (10,'&') : 11, + (11,'&') : 11, + (11,'') : 12, + (11,'') : 13, + (11,'') : 14, + (11,'') : 15, + (11,''): 16, + (12,'') : 200, + (200,'') : 201, + (200,'$') : 17, + (201,'') : 201, + (201,'$') : 17, + (13,'') : 225, + (13,'$') : 250, + (225,'') : 225, + (225,'$') : 250, + (250,' '):251, + (251,'^'):252, + (252,'&'):253, + (253,'&'):253, + (253,''):12, + (253,''):13, + (14,'') : 275, + (275,'') : 276, + (275,'$') : 250, + (276,'') : 276, + (276,'$') : 250, + (15,'') : 200, + (16,''): 200, + (100,'') : 100, + (100,'$') : 17, + (17,' ') : 18, #do not go to state 17 unless you are expecting 'out' to be the next word + (18,'^') : 19, + (19,'o') : 20, + (20,'u') : 21, + (21,'t') : 22, + (22,'') : 23, + (22,'') : 24, + (23,'$') : 25, + (24,'$') : 25, + (25,'') : 26, + (25,' ') : 26, + (25,'\n') : 26, + (25,'^') : 27, + (27,'.') : 28, + (28,'') : 29, + (29,'$') : 25 +} + +# is required +# is optional +states = { + -1 : '', + 0 : '^', + 1 : 't', + 2 : 'a', + 3 : 'k', + 4 : 'e', + 5 : '', + 6 : '', #secondary tag is necessary + 7 : '', #third, fourth, fifth...tags are optional + 8 : '$', + 9 : ' ', + 10 : '^', + 11 : '&', #represents any character 'ANY_CHAR + 12 : '', + 13 : '', + 14 : '', + 15 : '', + 16 : '', + 100: '', + 200: '', + 201: '', + 225: '', + 250: '$', + 251: ' ', + 252: '^', + 253: '&', + 275: '', + 276: '', + 17 : '$', + 18 : ' ', + 19 : '^', + 20 : 'o', + 21 : 'u', + 22 : 't', + 23 : '', + 24 : '', + 25 : '$', + 26 : '\n', + 27 : '^', + 28 : '.', + 29 : '', + +} + +def next_token(file, subsequent_tag, in_lemma, in_take, in_out): + original_token = file.read(1) + modified_token = original_token + if original_token == '<': #if in tag + in_lemma = False + c = '' + while c != '>': + c = file.read(1) + original_token += c + modified_token += c + if subsequent_tag: + modified_token = '' + if in_lemma and not in_take and not in_out: + modified_token = '&' #ANY_CHAR + return original_token, modified_token + +def step(state, token): #token is at the next state + next_state = transitions.get((state,token)) + output_token = states.get(next_state) + return next_state, output_token #return the next state, or None if it doesn't exist + +def main(): + f = open(sys.argv[1]) + line_number = 0 + accepted = True + while True: + line = '' + if accepted: + line_number += 1 + current_state = -1 + + subsequent_tag = False + in_lemma = False + in_take = False + in_out = False + + while states.get(current_state) != None and current_state != 26: + original_token, modified_token = next_token(f, subsequent_tag, in_lemma, in_take, in_out) + if current_state == -1 and modified_token == '': + print('successfully reached end of file') + exit(0) + elif current_state == -1 and modified_token == '\n': + accepted = True + break + elif modified_token == '\n': + accepted = True + + current_state, output_token = step(current_state, modified_token) + if output_token == None: + break + + line += original_token + + subsequent_tag = current_state in [5, 6, 7, 12, 13, 14, 15, 16, 100, 200, 201, 225, 275, 276] + in_lemma = current_state in [1, 2, 3, 10, 11, 252, 253, 19, 20, 21, 22] + in_take = current_state in [1, 2, 3, 4] + if current_state == 19: + pos = f.tell() #store the current buffer position + peek = f.read(4) #read in the next 4 chars + f.seek(pos) #return to the original position + if peek == 'out<': + in_out = True + + if current_state == 26: + print str(line_number) + ' ' + line + accepted = True + else: + if accepted: + print str(line_number) + ' string not accepted \n' + accepted = False + current_state = -1 + line_number += 1 + +if __name__ == '__main__': + main() \ No newline at end of file Index: branches/apertium-separable/testing/testfile.txt =================================================================== --- branches/apertium-separable/testing/testfile.txt (revision 80254) +++ branches/apertium-separable/testing/testfile.txt (nonexistent) @@ -1,102 +0,0 @@ - ----- SHOULD ALL BE SUCCESSFUL ---- -(1) n* -^take$ ^birdog$ ^out$ -^take$ ^birdog$ ^out$ -^take$ ^birdog$ ^out$ -^take$ ^birdog$ ^out$ -^take$ ^birdog$ ^out$ -^take$ ^birdog$ ^out$ -^take$ ^birdog$ ^out$ -^take$ ^birdog$ ^out$ -^take$ ^birdog$ ^out$ -^take$ ^birdog$ ^out$ - -(2.1) adj n* -^take$ ^big$ ^birdog$ ^out$ -^take$ ^big$ ^birdog$ ^out$ -^take$ ^big$ ^birdog$ ^out$ -^take$ ^big$ ^birdog$ ^out$ -^take$ ^big$ ^birdog$ ^out$ -^take$ ^big$ ^birdog$ ^out$ -^take$ ^big$ ^birdog$ ^out$ -^take$ ^big$ ^birdog$ ^out$ -^take$ ^big$ ^birdog$ ^out$ -^take$ ^big$ ^birdog$ ^out$ - -(2.2) adj* n* -^take$ ^big$ ^birdog$ ^out$ -^take$ ^big$ ^birdog$ ^out$ -^take$ ^big$ ^birdog$ ^out$ -^take$ ^big$ ^birdog$ ^out$ -^take$ ^big$ ^birdog$ ^out$ -^take$ ^big$ ^birdog$ ^out$ -^take$ ^big$ ^birdog$ ^out$ -^take$ ^big$ ^birdog$ ^out$ -^take$ ^big$ ^birdog$ ^out$ -^take$ ^big$ ^birdog$ ^out$ - -(2.3) adj* adj* (adj* ...) n* -^take$ ^big$ ^round$ ^birdog$ ^out$ -^take$ ^big$ ^round$ ^birdog$ ^out$ -^take$ ^big$ ^round$ ^birdog$ ^out$ -^take$ ^big$ ^round$ ^birdog$ ^out$ -^take$ ^big$ ^round$ ^birdog$ ^out$ -^take$ ^big$ ^round$ ^birdog$ ^out$ -^take$ ^big$ ^round$ ^birdog$ ^out$ -^take$ ^big$ ^round$ ^birdog$ ^out$ -^take$ ^big$ ^round$ ^birdog$ ^out$ -^take$ ^big$ ^round$ ^birdog$ ^out$ - -(3.1) det* n* -^take$ ^my$ ^birdog$ ^out$ -^take$ ^my$ ^birdog$ ^out$ -^take$ ^my$ ^birdog$ ^out$ -^take$ ^my$ ^birdog$ ^out$ -^take$ ^my$ ^birdog$ ^out$ -^take$ ^my$ ^birdog$ ^out$ -^take$ ^my$ ^birdog$ ^out$ -^take$ ^my$ ^birdog$ ^out$ -^take$ ^my$ ^birdog$ ^out$ -^take$ ^my$ ^birdog$ ^out$ - -(3.2) det* adj(*) n* -^take$ ^my$ ^big$ ^round$ ^birdog$ ^out$ -^take$ ^my$ ^big$ ^round$ ^birdog$ ^out$ -^take$ ^my$ ^big$ ^round$ ^birdog$ ^out$ -^take$ ^my$ ^big$ ^round$ ^birdog$ ^out$ -^take$ ^my$ ^big$ ^round$ ^birdog$ ^out$ -^take$ ^my$ ^big$ ^round$ ^birdog$ ^out$ -^take$ ^my$ ^big$ ^round$ ^birdog$ ^out$ -^take$ ^my$ ^big$ ^round$ ^birdog$ ^out$ -^take$ ^my$ ^big$ ^round$ ^birdog$ ^out$ -^take$ ^my$ ^big$ ^round$ ^birdog$ ^out$ - -(4.1) prn.pers.* -^take$ ^prpers$ ^out$ -^take$ ^prpers$ ^out$ -^take$ ^prpers$ ^out$ -^take$ ^prpers$ ^out$ -^take$ ^prpers$ ^out$ -^take$ ^prpers$ ^out$ -^take$ ^prpers$ ^out$ -^take$ ^prpers$ ^out$ -^take$ ^prpers$ ^out$ -^take$ ^prpers$ ^out$ -^take$ ^prpers$ ^out$ - -(4.2) np* -^take$ ^Mary$ ^out$ - ----- INCORRECT: NONE OF THE FOLLOWING SHOULD BE ACCEPTED ---- -(1) incorrect tag count -^take$ ^birdog$ ^out$ -^take$ ^birdog$ ^out$ -^big$ ^birdog ^out$ - -(2) incorrect word phrase -^take$ ^big$ ^out$ - -(3) counterexamples -^take$ ^birdog$ ^to$ ^the ^park$ ^out$ ^there$ -^prpers$ ^take$ ^one$ ^out of$ ^ten$ ^try$ Index: branches/apertium-separable/testing/transducer.py =================================================================== --- branches/apertium-separable/testing/transducer.py (revision 80254) +++ branches/apertium-separable/testing/transducer.py (nonexistent) @@ -1,194 +0,0 @@ -#usage: python transducer.py testfile.txt - -import sys - -""" -noun phrase acceptor: - n.* - adj n.* - adj.* n - adj.* adj.* n.* - det.* n.* - det.* adj n.* - prn* - np* -""" - -transitions = { - (-1,'^') : 0, - (0,'t') : 1, - (1,'a') : 2, - (2,'k') : 3, - (3,'e') : 4, - (4,'') : 5, - (5,'') : 6, - (6,'') : 7, - (6,'$') : 8, - (7,'') : 7, - (7,'$'): 8, - (8,' ') : 9, - (9,'^') : 10, - (10,'&') : 11, - (11,'&') : 11, - (11,'') : 12, - (11,'') : 13, - (11,'') : 14, - (11,'') : 15, - (11,''): 16, - (12,'') : 200, - (200,'') : 201, - (200,'$') : 17, - (201,'') : 201, - (201,'$') : 17, - (13,'') : 225, - (13,'$') : 250, - (225,'') : 225, - (225,'$') : 250, - (250,' '):251, - (251,'^'):252, - (252,'&'):253, - (253,'&'):253, - (253,''):12, - (253,''):13, - (14,'') : 275, - (275,'') : 276, - (275,'$') : 250, - (276,'') : 276, - (276,'$') : 250, - (15,'') : 200, - (16,''): 200, - (100,'') : 100, - (100,'$') : 17, - (17,' ') : 18, #do not go to state 17 unless you are expecting 'out' to be the next word - (18,'^') : 19, - (19,'o') : 20, - (20,'u') : 21, - (21,'t') : 22, - (22,'') : 23, - (22,'') : 24, - (23,'$') : 25, - (24,'$') : 25, - (25,'') : 26, - (25,' ') : 26, - (25,'\n') : 26 -} - -# is required -# is optional -states = { - -1 : '', - 0 : '^', - 1 : 't', - 2 : 'a', - 3 : 'k', - 4 : 'e', - 5 : '', - 6 : '', #secondary tag is necessary - 7 : '', #third, fourth, fifth...tags are optional - 8 : '$', - 9 : ' ', - 10 : '^', - 11 : '&', #represents any character 'ANY_CHAR - 12 : '', - 13 : '', - 14 : '', - 15 : '', - 16 : '', - 100: '', - 200: '', - 201: '', - 225: '', - 250: '$', - 251: ' ', - 252: '^', - 253: '&', - 275: '', - 276: '', - 17 : '$', - 18 : ' ', - 19 : '^', - 20 : 'o', - 21 : 'u', - 22 : 't', - 23 : '', - 24 : '', - 25 : '$', - 26 : '\n' -} - -def next_token(file, subsequent_tag, in_lemma, in_take, in_out): - original_token = file.read(1) - modified_token = original_token - if original_token == '<': #if in tag - in_lemma = False - c = '' - while c != '>': - c = file.read(1) - original_token += c - modified_token += c - if subsequent_tag: - modified_token = '' - if in_lemma and not in_take and not in_out: - modified_token = '&' #ANY_CHAR - return original_token, modified_token - -def step(state, token): #token is at the next state - next_state = transitions.get((state,token)) - output_token = states.get(next_state) - return next_state, output_token #return the next state, or None if it doesn't exist - -def main(): - f = open(sys.argv[1]) - line_number = 0 - accepted = True - while True: - line = '' - if accepted: - line_number += 1 - current_state = -1 - - subsequent_tag = False - in_lemma = False - in_take = False - in_out = False - - while states.get(current_state) != None and current_state != 26: - original_token, modified_token = next_token(f, subsequent_tag, in_lemma, in_take, in_out) - i - f current_state == -1 and modified_token == '': - print('successfully reached end of file') - exit(0) - elif current_state == -1 and modified_token == '\n': - accepted = True - break - elif modified_token == '\n': - accepted = True - - current_state, output_token = step(current_state, modified_token) - if output_token == None: - break - - line += original_token - - subsequent_tag = current_state in [5, 6, 7, 12, 13, 14, 15, 16, 100, 200, 201, 225, 275, 276] - in_lemma = current_state in [1, 2, 3, 10, 11, 252, 253, 19, 20, 21, 22] - in_take = current_state in [1, 2, 3, 4] - if current_state == 19: - pos = f.tell() #store the current buffer position - peek = f.read(4) #read in the next 4 chars - f.seek(pos) #return to the original position - if peek == 'out<': - in_out = True - - if current_state == 26: - print str(line_number) + ' ' + line - accepted = True - else: - if accepted: - print str(line_number) + ' string not accepted \n' - accepted = False - current_state = -1 - line_number += 1 - -if __name__ == '__main__': - main() \ No newline at end of file Index: branches/apertium-separable/testing/transducer.cpp =================================================================== --- branches/apertium-separable/testing/transducer.cpp (revision 80254) +++ branches/apertium-separable/testing/transducer.cpp (nonexistent) @@ -1,104 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -int main (int argc, char** argv) { - Alphabet alphabet; - Transducer t; - - LtLocale::tryToSetLocale(); - - alphabet.includeSymbol(L""); - alphabet.includeSymbol(L""); - alphabet.includeSymbol(L""); - alphabet.includeSymbol(L""); - alphabet.includeSymbol(L""); - alphabet.includeSymbol(L""); - alphabet.includeSymbol(L""); - alphabet.includeSymbol(L""); - - alphabet.includeSymbol(L""); - alphabet.includeSymbol(L"&"); - alphabet.includeSymbol(L"$"); - - int vblex_sym = alphabet(L""); - int n_sym = alphabet(L""); - int adj_sym = alphabet(L""); - int det_sym = alphabet(L""); - int prn_sym = alphabet(L""); - int np_sym = alphabet(L""); - int adv_sym = alphabet(L""); - int pr_sym = alphabet(L""); - int w_boundary = alphabet(L"<$>"); - int any_tag = alphabet(L""); - - int initial = t.getInitial(); - // int current_state = initial; - - int take_out = initial; - take_out = t.insertSingleTransduction(alphabet(L't',L't'), take_out); - take_out = t.insertSingleTransduction(alphabet(L'a',L'a'), take_out); - take_out = t.insertSingleTransduction(alphabet(L'k',L'k'), take_out); - take_out = t.insertSingleTransduction(alphabet(L'e',L'e'), take_out); - take_out = t.insertSingleTransduction(alphabet(0,L'#'), take_out); - take_out = t.insertSingleTransduction(alphabet(0,L' '), take_out); - take_out = t.insertSingleTransduction(alphabet(0,L'o'), take_out); - take_out = t.insertSingleTransduction(alphabet(0,L'u'), take_out); - take_out = t.insertSingleTransduction(alphabet(0,L't'), take_out); - take_out = t.insertSingleTransduction(alphabet(vblex_sym, vblex_sym), take_out); - int loop = take_out; - take_out = t.insertSingleTransduction(alphabet(any_tag, any_tag), loop); - t.linkStates(take_out, loop, 0); - take_out = t.insertSingleTransduction(alphabet(L' ',0), take_out); - take_out = t.insertSingleTransduction(alphabet(L'o',0), take_out); - take_out = t.insertSingleTransduction(alphabet(L'u',0), take_out); - take_out = t.insertSingleTransduction(alphabet(L't',0), take_out); - take_out = t.insertSingleTransduction(alphabet(any_tag, 0), take_out); - - // take_out = t.insertSingleTransduction(alphabet(L'^',L'^'), take_out); - // take_out = t.insertSingleTransduction(alphabet(L'&',L'&'), take_out); - // take_out = t.insertSingleTransduction(alphabet(L'$',L'$'), take_out); - - t.setFinal(take_out); - - FILE* fst = fopen("takeout.fst", "w+"); - - // First write the letter symbols of the alphabet - Compression::wstring_write(L"aekout", fst); - // Then write the multicharacter symbols - alphabet.write(fst); - // Then write then number of transducers - Compression::multibyte_write(1, fst); - // Then write the name of the transducer - Compression::wstring_write(L"main@standard", fst); - // Then write the transducer - t.write(fst); - fclose(fst); - - // fst = fopen("takeout.fst", "r"); - // - // TransExe te; - // te.read(fst, alphabet); - // fclose(fst); - // - // State *initial_state = new State(); - // initial_state->init(te.getInitial()); - // State current_state = *initial_state; - - // cout << initial << endl; - // cout << "running" << endl; - return 0; -} Index: branches/apertium-separable/testing/correct_testfile.txt =================================================================== --- branches/apertium-separable/testing/correct_testfile.txt (nonexistent) +++ branches/apertium-separable/testing/correct_testfile.txt (revision 80255) @@ -0,0 +1,72 @@ +^take$ ^birdog$ ^out$ +^take$ ^birdog$ ^out$ +^take$ ^birdog$ ^out$ +^take$ ^birdog$ ^out$ +^take$ ^birdog$ ^out$ +^take$ ^birdog$ ^out$ +^take$ ^birdog$ ^out$ +^take$ ^birdog$ ^out$ +^take$ ^birdog$ ^out$ +^take$ ^birdog$ ^out$ +^take$ ^big$ ^birdog$ ^out$ +^take$ ^big$ ^birdog$ ^out$ +^take$ ^big$ ^birdog$ ^out$ +^take$ ^big$ ^birdog$ ^out$ +^take$ ^big$ ^birdog$ ^out$ +^take$ ^big$ ^birdog$ ^out$ +^take$ ^big$ ^birdog$ ^out$ +^take$ ^big$ ^birdog$ ^out$ +^take$ ^big$ ^birdog$ ^out$ +^take$ ^big$ ^birdog$ ^out$ +^take$ ^big$ ^birdog$ ^out$ +^take$ ^big$ ^birdog$ ^out$ +^take$ ^big$ ^birdog$ ^out$ +^take$ ^big$ ^birdog$ ^out$ +^take$ ^big$ ^birdog$ ^out$ +^take$ ^big$ ^birdog$ ^out$ +^take$ ^big$ ^birdog$ ^out$ +^take$ ^big$ ^birdog$ ^out$ +^take$ ^big$ ^birdog$ ^out$ +^take$ ^big$ ^birdog$ ^out$ +^take$ ^big$ ^round$ ^birdog$ ^out$ +^take$ ^big$ ^round$ ^birdog$ ^out$ +^take$ ^big$ ^round$ ^birdog$ ^out$ +^take$ ^big$ ^round$ ^birdog$ ^out$ +^take$ ^big$ ^round$ ^birdog$ ^out$ +^take$ ^big$ ^round$ ^birdog$ ^out$ +^take$ ^big$ ^round$ ^birdog$ ^out$ +^take$ ^big$ ^round$ ^birdog$ ^out$ +^take$ ^big$ ^round$ ^birdog$ ^out$ +^take$ ^big$ ^round$ ^birdog$ ^out$ +^take$ ^my$ ^birdog$ ^out$ +^take$ ^my$ ^birdog$ ^out$ +^take$ ^my$ ^birdog$ ^out$ +^take$ ^my$ ^birdog$ ^out$ +^take$ ^my$ ^birdog$ ^out$ +^take$ ^my$ ^birdog$ ^out$ +^take$ ^my$ ^birdog$ ^out$ +^take$ ^my$ ^birdog$ ^out$ +^take$ ^my$ ^birdog$ ^out$ +^take$ ^my$ ^birdog$ ^out$ +^take$ ^my$ ^big$ ^round$ ^birdog$ ^out$ +^take$ ^my$ ^big$ ^round$ ^birdog$ ^out$ +^take$ ^my$ ^big$ ^round$ ^birdog$ ^out$ +^take$ ^my$ ^big$ ^round$ ^birdog$ ^out$ +^take$ ^my$ ^big$ ^round$ ^birdog$ ^out$ +^take$ ^my$ ^big$ ^round$ ^birdog$ ^out$ +^take$ ^my$ ^big$ ^round$ ^birdog$ ^out$ +^take$ ^my$ ^big$ ^round$ ^birdog$ ^out$ +^take$ ^my$ ^big$ ^round$ ^birdog$ ^out$ +^take$ ^my$ ^big$ ^round$ ^birdog$ ^out$ +^take$ ^prpers$ ^out$ +^take$ ^prpers$ ^out$ +^take$ ^prpers$ ^out$ +^take$ ^prpers$ ^out$ +^take$ ^prpers$ ^out$ +^take$ ^prpers$ ^out$ +^take$ ^prpers$ ^out$ +^take$ ^prpers$ ^out$ +^take$ ^prpers$ ^out$ +^take$ ^prpers$ ^out$ +^take$ ^prpers$ ^out$ +^take$ ^Mary$ ^out$ \ No newline at end of file Index: branches/apertium-separable/testing/incorrect_testfile.txt =================================================================== --- branches/apertium-separable/testing/incorrect_testfile.txt (nonexistent) +++ branches/apertium-separable/testing/incorrect_testfile.txt (revision 80255) @@ -0,0 +1,6 @@ +^take$ ^birdog$ ^out$ +^take$ ^birdog$ ^out$ +^big$ ^birdog ^out$ +^take$ ^big$ ^out$ +^take$ ^birdog$ ^to$ ^the ^park$ ^out$ ^there$ +^prpers$ ^take$ ^one$ ^out of$ ^ten$ ^try$ Index: branches/apertium-separable/testing/small_testfile.txt =================================================================== --- branches/apertium-separable/testing/small_testfile.txt (nonexistent) +++ branches/apertium-separable/testing/small_testfile.txt (revision 80255) @@ -0,0 +1,3 @@ +^take$ ^birdog$ ^out$^.$ +^take$ ^birdog$ ^out$ +^take$ ^birdog$ ^out$ \ No newline at end of file