Racket 1转移/减少球拍冲突

Racket 1转移/减少球拍冲突,racket,shift-reduce-conflict,Racket,Shift Reduce Conflict,我正在编写一个球拍代码,我遇到了一个问题,有人能告诉我如何解决它吗?我总是得到:1转变/减少冲突 注:(它是代码的一部分) 提前谢谢 (statement ; a statement is one of these many things ;;; TODO: Add Paper, Pen, Line, Set and Repeat [(PAPER expr) (paper-expr $2 (numeric-expr 100) (numeric-expr 1

我正在编写一个球拍代码,我遇到了一个问题,有人能告诉我如何解决它吗?我总是得到:1转变/减少冲突 注:(它是代码的一部分)

提前谢谢


    (statement
     ; a statement is one of these many things
     ;;; TODO: Add Paper, Pen, Line, Set and Repeat
     [(PAPER expr) (paper-expr $2 (numeric-expr 100) (numeric-expr 100))]
     [(PEN expr) (pen-expr $2)]
     [(REPEAT IDENTIFIER expr expr maybe-newlines block) (repeat-expr $2 $3 $4 $6)]

     ; print, simply prints to the console
     [(PRINT expr ) (print-expr $2)]
     [(SET l-value expr) (assignment-expr $2 $3)]
     [(LINE expr expr expr expr) (line-expr $2 $3 $4 $5)]
     [(VALUE expr) (value-expr $2)]
     
     ......
..........
........


    ; legal l-values in the language
    (l-value
     ;;; TODO: Add variables (they are l-values)
     [(IDENTIFIER) (list $1)]
     [(IDENTIFIER parameters) (cons $1 $2)]
     [(LEFTBRACKET expr expr RIGHTBRACKET) (get-paper-loc $2 $3)])
    
    .........
......
.......

    (rvalues
     [(NUMERICVALUE) (numeric-expr $1)]
     ;;; TODO: the second place you need to add variables, because they can also be r-values
     [(IDENTIFIER) (list $1)]
     [(IDENTIFIER parameters) (cons $1 $2)]
     [(LEFTBRACKET expr expr RIGHTBRACKET) (get-paper-loc $2 $3)]
     [(LESSTHAN TIME expr GREATERTHAN) (time-expr $3)]