better test data parser to allow multi row repeats

This commit is contained in:
hneemann 2017-04-19 15:55:17 +02:00
parent d3110c699b
commit 3d6000abe6
3 changed files with 11 additions and 8 deletions

View File

@ -1470,7 +1470,7 @@ loop(n,16)
bits(4,n) 0 1 0
bits(4,n) 1 1 1
bits(4,n) 0 1 1
endloop
end loop
# check all cells are one
repeat(16) bits(4,n) 0 x 1
@ -1480,7 +1480,7 @@ loop(n,16)
bits(4,n) 0 0 1
bits(4,n) 1 0 0
bits(4,n) 0 0 0
endloop
end loop
# check all cells are zero
repeat(16) bits(4,n) 0 x 0

View File

@ -84,8 +84,11 @@ public class Parser {
list.add(parseLine());
break;
case IDENT:
if (tok.getIdent().equals("endloop")) {
if (tok.getIdent().equals("end")) {
tok.consume();
expect(Tokenizer.Token.IDENT);
if (!tok.getIdent().equals("loop"))
throw newUnexpectedToken(t);
if (!loop)
throw newUnexpectedToken(t);
return list.minimize();

View File

@ -11,7 +11,7 @@ import java.io.IOException;
public class ParserLoopTest extends TestCase {
public void testLoop() throws IOException, ParserException {
Parser parser = new Parser("A B\nloop(n,10)\n C (n*2)\nendloop").parse();
Parser parser = new Parser("A B\nloop(n,10)\n C (n*2)\nend loop").parse();
LineCollector td = new LineCollector(parser);
assertEquals(2, td.getNames().size());
@ -24,7 +24,7 @@ public class ParserLoopTest extends TestCase {
}
public void testLoopVar() throws IOException, ParserException {
Parser parser = new Parser("A B\nloop(i,10)\n C (i*2)\nendloop").parse();
Parser parser = new Parser("A B\nloop(i,10)\n C (i*2)\nend loop").parse();
LineCollector td = new LineCollector(parser);
assertEquals(2, td.getNames().size());
@ -37,7 +37,7 @@ public class ParserLoopTest extends TestCase {
}
public void testNested() throws IOException, ParserException {
Parser parser = new Parser("A B\nloop(i,10)\nloop(j,10)\n C ((i+j)*2)\nendloop\nendloop").parse();
Parser parser = new Parser("A B\nloop(i,10)\nloop(j,10)\n C ((i+j)*2)\nend loop\nend loop").parse();
LineCollector td = new LineCollector(parser);
assertEquals(2, td.getNames().size());
@ -53,7 +53,7 @@ public class ParserLoopTest extends TestCase {
}
public void testLoopMultiLines() throws IOException, ParserException {
Parser parser = new Parser("A B\nloop(i,10)\n C (i*2)\n C (i*2+1)\nendloop").parse();
Parser parser = new Parser("A B\nloop(i,10)\n C (i*2)\n C (i*2+1)\nend loop").parse();
LineCollector td = new LineCollector(parser);
assertEquals(2, td.getNames().size());
@ -77,7 +77,7 @@ public class ParserLoopTest extends TestCase {
public void testUnexpectedEndloop() throws IOException, ParserException {
try {
new Parser("A B\n C ((i+j)*2)\nendloop").parse();
new Parser("A B\n C ((i+j)*2)\nend loop").parse();
fail();
} catch (ParserException e) {
}