summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chapter04/src/test/java/com/seaofnodes/simple/Chapter04Test.java6
-rw-r--r--chapter05/src/test/java/com/seaofnodes/simple/Chapter04Test.java6
-rw-r--r--chapter06/src/test/java/com/seaofnodes/simple/Chapter04Test.java6
-rw-r--r--chapter07/src/test/java/com/seaofnodes/simple/Chapter04Test.java6
-rw-r--r--chapter08/src/test/java/com/seaofnodes/simple/Chapter04Test.java6
-rw-r--r--chapter09/src/test/java/com/seaofnodes/simple/Chapter04Test.java6
-rw-r--r--chapter10/src/test/java/com/seaofnodes/simple/Chapter04Test.java6
-rw-r--r--chapter11/src/test/java/com/seaofnodes/simple/Chapter04Test.java6
-rw-r--r--chapter12/src/test/java/com/seaofnodes/simple/Chapter04Test.java6
-rw-r--r--chapter13/src/test/java/com/seaofnodes/simple/Chapter04Test.java6
-rw-r--r--chapter14/src/test/java/com/seaofnodes/simple/Chapter04Test.java6
-rw-r--r--chapter15/src/main/java/com/seaofnodes/simple/node/SubFNode.java2
-rw-r--r--chapter15/src/main/java/com/seaofnodes/simple/node/SubNode.java2
-rw-r--r--chapter15/src/test/java/com/seaofnodes/simple/Chapter04Test.java6
-rw-r--r--chapter16/src/test/java/com/seaofnodes/simple/Chapter04Test.java6
-rw-r--r--chapter17/src/main/java/com/seaofnodes/simple/Parser.java2
-rw-r--r--chapter17/src/test/java/com/seaofnodes/simple/Chapter04Test.java6
17 files changed, 88 insertions, 2 deletions
diff --git a/chapter04/src/test/java/com/seaofnodes/simple/Chapter04Test.java b/chapter04/src/test/java/com/seaofnodes/simple/Chapter04Test.java
index 9f1535b3..faae0aee 100644
--- a/chapter04/src/test/java/com/seaofnodes/simple/Chapter04Test.java
+++ b/chapter04/src/test/java/com/seaofnodes/simple/Chapter04Test.java
@@ -124,4 +124,10 @@ public class Chapter04Test {
assertEquals("return (-arg);", ret.print());
}
+ @Test
+ public void testBug5() {
+ Parser parser = new Parser("return arg--2;");
+ ReturnNode ret = parser.parse();
+ assertEquals("return (arg--2);", ret.print());
+ }
}
diff --git a/chapter05/src/test/java/com/seaofnodes/simple/Chapter04Test.java b/chapter05/src/test/java/com/seaofnodes/simple/Chapter04Test.java
index cde23324..9b8fa73f 100644
--- a/chapter05/src/test/java/com/seaofnodes/simple/Chapter04Test.java
+++ b/chapter05/src/test/java/com/seaofnodes/simple/Chapter04Test.java
@@ -125,4 +125,10 @@ public class Chapter04Test {
assertEquals("return (-arg);", ret.print());
}
+ @Test
+ public void testBug5() {
+ Parser parser = new Parser("return arg--2;");
+ ReturnNode ret = parser.parse();
+ assertEquals("return (arg--2);", ret.print());
+ }
}
diff --git a/chapter06/src/test/java/com/seaofnodes/simple/Chapter04Test.java b/chapter06/src/test/java/com/seaofnodes/simple/Chapter04Test.java
index 2b6b5ae2..98878ca6 100644
--- a/chapter06/src/test/java/com/seaofnodes/simple/Chapter04Test.java
+++ b/chapter06/src/test/java/com/seaofnodes/simple/Chapter04Test.java
@@ -125,4 +125,10 @@ public class Chapter04Test {
assertEquals("return (-arg);", ret.print());
}
+ @Test
+ public void testBug5() {
+ Parser parser = new Parser("return arg--2;");
+ StopNode ret = parser.parse();
+ assertEquals("return (arg--2);", ret.print());
+ }
}
diff --git a/chapter07/src/test/java/com/seaofnodes/simple/Chapter04Test.java b/chapter07/src/test/java/com/seaofnodes/simple/Chapter04Test.java
index 2b6b5ae2..98878ca6 100644
--- a/chapter07/src/test/java/com/seaofnodes/simple/Chapter04Test.java
+++ b/chapter07/src/test/java/com/seaofnodes/simple/Chapter04Test.java
@@ -125,4 +125,10 @@ public class Chapter04Test {
assertEquals("return (-arg);", ret.print());
}
+ @Test
+ public void testBug5() {
+ Parser parser = new Parser("return arg--2;");
+ StopNode ret = parser.parse();
+ assertEquals("return (arg--2);", ret.print());
+ }
}
diff --git a/chapter08/src/test/java/com/seaofnodes/simple/Chapter04Test.java b/chapter08/src/test/java/com/seaofnodes/simple/Chapter04Test.java
index e23a10b1..2e2abb25 100644
--- a/chapter08/src/test/java/com/seaofnodes/simple/Chapter04Test.java
+++ b/chapter08/src/test/java/com/seaofnodes/simple/Chapter04Test.java
@@ -125,4 +125,10 @@ public class Chapter04Test {
assertEquals("return (-arg);", ret.print());
}
+ @Test
+ public void testBug5() {
+ Parser parser = new Parser("return arg--2;");
+ StopNode ret = parser.parse();
+ assertEquals("return (arg--2);", ret.print());
+ }
}
diff --git a/chapter09/src/test/java/com/seaofnodes/simple/Chapter04Test.java b/chapter09/src/test/java/com/seaofnodes/simple/Chapter04Test.java
index e23a10b1..2e2abb25 100644
--- a/chapter09/src/test/java/com/seaofnodes/simple/Chapter04Test.java
+++ b/chapter09/src/test/java/com/seaofnodes/simple/Chapter04Test.java
@@ -125,4 +125,10 @@ public class Chapter04Test {
assertEquals("return (-arg);", ret.print());
}
+ @Test
+ public void testBug5() {
+ Parser parser = new Parser("return arg--2;");
+ StopNode ret = parser.parse();
+ assertEquals("return (arg--2);", ret.print());
+ }
}
diff --git a/chapter10/src/test/java/com/seaofnodes/simple/Chapter04Test.java b/chapter10/src/test/java/com/seaofnodes/simple/Chapter04Test.java
index e23a10b1..2e2abb25 100644
--- a/chapter10/src/test/java/com/seaofnodes/simple/Chapter04Test.java
+++ b/chapter10/src/test/java/com/seaofnodes/simple/Chapter04Test.java
@@ -125,4 +125,10 @@ public class Chapter04Test {
assertEquals("return (-arg);", ret.print());
}
+ @Test
+ public void testBug5() {
+ Parser parser = new Parser("return arg--2;");
+ StopNode ret = parser.parse();
+ assertEquals("return (arg--2);", ret.print());
+ }
}
diff --git a/chapter11/src/test/java/com/seaofnodes/simple/Chapter04Test.java b/chapter11/src/test/java/com/seaofnodes/simple/Chapter04Test.java
index 70f38dd6..80cdb3f2 100644
--- a/chapter11/src/test/java/com/seaofnodes/simple/Chapter04Test.java
+++ b/chapter11/src/test/java/com/seaofnodes/simple/Chapter04Test.java
@@ -125,4 +125,10 @@ public class Chapter04Test {
assertEquals("return (-arg);", ret.print());
}
+ @Test
+ public void testBug5() {
+ Parser parser = new Parser("return arg--2;");
+ StopNode ret = parser.parse();
+ assertEquals("return (arg--2);", ret.print());
+ }
}
diff --git a/chapter12/src/test/java/com/seaofnodes/simple/Chapter04Test.java b/chapter12/src/test/java/com/seaofnodes/simple/Chapter04Test.java
index 70f38dd6..80cdb3f2 100644
--- a/chapter12/src/test/java/com/seaofnodes/simple/Chapter04Test.java
+++ b/chapter12/src/test/java/com/seaofnodes/simple/Chapter04Test.java
@@ -125,4 +125,10 @@ public class Chapter04Test {
assertEquals("return (-arg);", ret.print());
}
+ @Test
+ public void testBug5() {
+ Parser parser = new Parser("return arg--2;");
+ StopNode ret = parser.parse();
+ assertEquals("return (arg--2);", ret.print());
+ }
}
diff --git a/chapter13/src/test/java/com/seaofnodes/simple/Chapter04Test.java b/chapter13/src/test/java/com/seaofnodes/simple/Chapter04Test.java
index 70f38dd6..80cdb3f2 100644
--- a/chapter13/src/test/java/com/seaofnodes/simple/Chapter04Test.java
+++ b/chapter13/src/test/java/com/seaofnodes/simple/Chapter04Test.java
@@ -125,4 +125,10 @@ public class Chapter04Test {
assertEquals("return (-arg);", ret.print());
}
+ @Test
+ public void testBug5() {
+ Parser parser = new Parser("return arg--2;");
+ StopNode ret = parser.parse();
+ assertEquals("return (arg--2);", ret.print());
+ }
}
diff --git a/chapter14/src/test/java/com/seaofnodes/simple/Chapter04Test.java b/chapter14/src/test/java/com/seaofnodes/simple/Chapter04Test.java
index 70f38dd6..80cdb3f2 100644
--- a/chapter14/src/test/java/com/seaofnodes/simple/Chapter04Test.java
+++ b/chapter14/src/test/java/com/seaofnodes/simple/Chapter04Test.java
@@ -125,4 +125,10 @@ public class Chapter04Test {
assertEquals("return (-arg);", ret.print());
}
+ @Test
+ public void testBug5() {
+ Parser parser = new Parser("return arg--2;");
+ StopNode ret = parser.parse();
+ assertEquals("return (arg--2);", ret.print());
+ }
}
diff --git a/chapter15/src/main/java/com/seaofnodes/simple/node/SubFNode.java b/chapter15/src/main/java/com/seaofnodes/simple/node/SubFNode.java
index 335b5f10..b591718d 100644
--- a/chapter15/src/main/java/com/seaofnodes/simple/node/SubFNode.java
+++ b/chapter15/src/main/java/com/seaofnodes/simple/node/SubFNode.java
@@ -1,4 +1,4 @@
-epackage com.seaofnodes.simple.node;
+package com.seaofnodes.simple.node;
import com.seaofnodes.simple.type.Type;
import com.seaofnodes.simple.type.TypeFloat;
diff --git a/chapter15/src/main/java/com/seaofnodes/simple/node/SubNode.java b/chapter15/src/main/java/com/seaofnodes/simple/node/SubNode.java
index 8ecdf13e..009fb30e 100644
--- a/chapter15/src/main/java/com/seaofnodes/simple/node/SubNode.java
+++ b/chapter15/src/main/java/com/seaofnodes/simple/node/SubNode.java
@@ -1,4 +1,4 @@
-y!package com.seaofnodes.simple.node;
+package com.seaofnodes.simple.node;
import com.seaofnodes.simple.Parser;
import com.seaofnodes.simple.type.Type;
diff --git a/chapter15/src/test/java/com/seaofnodes/simple/Chapter04Test.java b/chapter15/src/test/java/com/seaofnodes/simple/Chapter04Test.java
index 70f38dd6..80cdb3f2 100644
--- a/chapter15/src/test/java/com/seaofnodes/simple/Chapter04Test.java
+++ b/chapter15/src/test/java/com/seaofnodes/simple/Chapter04Test.java
@@ -125,4 +125,10 @@ public class Chapter04Test {
assertEquals("return (-arg);", ret.print());
}
+ @Test
+ public void testBug5() {
+ Parser parser = new Parser("return arg--2;");
+ StopNode ret = parser.parse();
+ assertEquals("return (arg--2);", ret.print());
+ }
}
diff --git a/chapter16/src/test/java/com/seaofnodes/simple/Chapter04Test.java b/chapter16/src/test/java/com/seaofnodes/simple/Chapter04Test.java
index 70f38dd6..80cdb3f2 100644
--- a/chapter16/src/test/java/com/seaofnodes/simple/Chapter04Test.java
+++ b/chapter16/src/test/java/com/seaofnodes/simple/Chapter04Test.java
@@ -125,4 +125,10 @@ public class Chapter04Test {
assertEquals("return (-arg);", ret.print());
}
+ @Test
+ public void testBug5() {
+ Parser parser = new Parser("return arg--2;");
+ StopNode ret = parser.parse();
+ assertEquals("return (arg--2);", ret.print());
+ }
}
diff --git a/chapter17/src/main/java/com/seaofnodes/simple/Parser.java b/chapter17/src/main/java/com/seaofnodes/simple/Parser.java
index 1cdf27fb..570ae67e 100644
--- a/chapter17/src/main/java/com/seaofnodes/simple/Parser.java
+++ b/chapter17/src/main/java/com/seaofnodes/simple/Parser.java
@@ -1412,6 +1412,7 @@ public class Parser {
// Next oper= character, or 0.
// As a convenience, mark "++" as a char 1 and "--" as char -1 (65535)
+ // Disallow e.g. "arg--1" which should parse as "arg - -1"
public char matchOperAssign() {
skipWhiteSpace();
if( _position+2 >= _input.length ) return 0;
@@ -1419,6 +1420,7 @@ public class Parser {
if( "+-/*&|^".indexOf(ch0) == -1 ) return 0;
char ch1 = (char)_input[_position+1];
if( ch1 == '=' ) { _position += 2; return ch0; }
+ if( Character.isDigit(_input[_position+2]) ) return 0;
if( ch0 == '+' && ch1 == '+' ) { _position += 2; return (char) 1; }
if( ch0 == '-' && ch1 == '-' ) { _position += 2; return (char)-1; }
return 0;
diff --git a/chapter17/src/test/java/com/seaofnodes/simple/Chapter04Test.java b/chapter17/src/test/java/com/seaofnodes/simple/Chapter04Test.java
index 24612fee..0db3afde 100644
--- a/chapter17/src/test/java/com/seaofnodes/simple/Chapter04Test.java
+++ b/chapter17/src/test/java/com/seaofnodes/simple/Chapter04Test.java
@@ -125,4 +125,10 @@ public class Chapter04Test {
assertEquals("return (-arg);", ret.print());
}
+ @Test
+ public void testBug5() {
+ Parser parser = new Parser("return arg--2;");
+ StopNode ret = parser.parse();
+ assertEquals("return (arg--2);", ret.print());
+ }
}