Fix bug in integer encoding of associativities in PYACC.Section1Or2.Precedence
authorNick Downing <downing.nick@gmail.com>
Wed, 18 Jul 2018 23:40:27 +0000 (09:40 +1000)
committerNick Downing <downing.nick@gmail.com>
Wed, 18 Jul 2018 23:40:27 +0000 (09:40 +1000)
src/parse-gram.c
src/parse-gram.y

index 77aca2b..0aaba2c 100644 (file)
@@ -2580,7 +2580,7 @@ yyreduce:
  insert_after(2, "</PYACC_Section1Or2_Precedence>");
  insert_after(2, "</PYACC_Section1Or2_TaggedSymbols>");
  insert_before(1, "<PYACC_Section1Or2_TaggedSymbols>");
- sprintf(gram_piece_temp, "<PYACC_Section1Or2_Precedence type=\"%d\">", (yyvsp[-2].assoc)); 
+ sprintf(gram_piece_temp, "<PYACC_Section1Or2_Precedence type=\"%d\">", ((yyvsp[-2].assoc) & 3) - 1); /* -1 precedence, 0 right, 1 left, 2 nonassoc */
  insert_before(0, gram_piece_temp);
     }
 #line 2554 "src/parse-gram.c" /* yacc.c:1648  */
index c742abe..30898db 100644 (file)
@@ -618,7 +618,7 @@ precedence_declaration:
  insert_after(2, "</PYACC_Section1Or2_Precedence>");
  insert_after(2, "</PYACC_Section1Or2_TaggedSymbols>");
  insert_before(1, "<PYACC_Section1Or2_TaggedSymbols>");
- sprintf(gram_piece_temp, "<PYACC_Section1Or2_Precedence type=\"%d\">", $1); 
+ sprintf(gram_piece_temp, "<PYACC_Section1Or2_Precedence type=\"%d\">", ($1 & 3) - 1); /* -1 precedence, 0 right, 1 left, 2 nonassoc */
  insert_before(0, gram_piece_temp);
     }
 ;