summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLena Olson <leolson@google.com>2017-02-05 14:47:37 -0600
committerAndreas Sandberg <andreas.sandberg@arm.com>2017-03-01 11:58:37 +0000
commitefcd8ae0244ec2791b58c749815c2f7a835eb78f (patch)
tree7acec73ecc56ca4a2b2ac4b8cafaff58e262edd7 /src
parent93e20c9a73523f2b95fc65b99a0192f83eb7d8f4 (diff)
downloadgem5-efcd8ae0244ec2791b58c749815c2f7a835eb78f.tar.xz
ruby: fix and/or precedence in slicc
The slicc compiler currently treats && and || with the same precedence. This is highly non-intuitive to people used to C, and was probably an error. This patch makes && bind tighter than ||. For example, previously: if (A || B && C) compiled to: if ((A || B) && C) With this patch, it compiles to: if (A || (B && C)) Change-Id: Idbbd5b50cc86a8d6601045adc14a253284d7b791 Signed-off-by: Lena Olson (leolson@google.com) Reviewed-on: https://gem5-review.googlesource.com/2168 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Reviewed-by: Joe Gross <criusx@gmail.com> Reviewed-by: Sooraj Puthoor <puthoorsooraj@gmail.com> Maintainer: Jason Lowe-Power <jason@lowepower.com> [ Rebased onto master ] Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Diffstat (limited to 'src')
-rw-r--r--src/mem/slicc/parser.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/mem/slicc/parser.py b/src/mem/slicc/parser.py
index 4afe0d367..5c2b212a2 100644
--- a/src/mem/slicc/parser.py
+++ b/src/mem/slicc/parser.py
@@ -1,4 +1,5 @@
# Copyright (c) 2009 The Hewlett-Packard Development Company
+# Copyright (c) 2017 Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -25,6 +26,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Authors: Nathan Binkert
+# Lena Olson
import os.path
import re
@@ -158,7 +160,8 @@ class SLICC(Grammar):
precedence = (
('left', 'INCR', 'DECR'),
- ('left', 'AND', 'OR'),
+ ('left', 'OR'),
+ ('left', 'AND'),
('left', 'EQ', 'NE'),
('left', 'LT', 'GT', 'LE', 'GE'),
('left', 'RIGHTSHIFT', 'LEFTSHIFT'),