]> gitweb.factorcode.org Git - factor.git/commitdiff
peg.expr: fix parse error with numbers in parens.
authorJohn Benediktsson <mrjbq7@gmail.com>
Fri, 8 Jan 2021 17:55:59 +0000 (09:55 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Fri, 8 Jan 2021 17:55:59 +0000 (09:55 -0800)
extra/peg/expr/expr-tests.factor
extra/peg/expr/expr.factor

index 446e5ef9ce7ca541437b6afa451aabad2105539d..2cc3fdd4205a2a29dec940a295b3648dc63c0c21 100644 (file)
@@ -4,22 +4,16 @@
 USING: kernel tools.test peg peg.expr multiline sequences ;
 IN: peg.expr.tests
 
-{ 5 } [
-  "2+3" expr
-] unit-test
+{ 5 } [ "2+3" expr ] unit-test
+{ 5 } [ "2+(3)" expr ] unit-test
+{ 5 } [ "(2)+3" expr ] unit-test
+{ 5 } [ "(2)+(3)" expr ] unit-test
 
-{ 6 } [
-  "2*3" expr
-] unit-test
+{ 6 } [ "2*3" expr ] unit-test
 
-{ 14 } [
-  "2+3*4" expr
-] unit-test
+{ 14 } [ "2+3*4" expr ] unit-test
 
-{ 17 } [
-  "2+3*4+3" expr
-] unit-test
+{ 17 } [ "2+3*4+3" expr ] unit-test
+
+{ 23 } [ "2+3*(4+3)" expr ] unit-test
 
-{ 23 } [
-  "2+3*(4+3)" expr
-] unit-test
index f851065ee1b57213cdb68760e6c2759290a472ff..d0071114ff7a4835a0947421ddc629e9a12fbb9d 100644 (file)
@@ -7,12 +7,12 @@ IN: peg.expr
 
 EBNF: expr [=[
 number   = ([0-9])+         => [[ string>number ]]
-value    =   number 
+value    =   number
            | ("(" exp ")")  => [[ second ]]
 
 fac      =   fac "*" value  => [[ first3 nip * ]]
            | fac "/" value  => [[ first3 nip / ]]
-           | number
+           | value
 
 exp      =   exp "+" fac    => [[ first3 nip + ]]
            | exp "-" fac    => [[ first3 nip - ]]