Есть ли у fsyacc способ работать с операторами, которые вводятся во время разбора?Я пытаюсь создать парсер для Kaleidoscope, который является игрушечным языком и используется в качестве примера для учебника LLVM .Калейдоскоп позволяет определять операторов вместе с уровнями приоритета.Например:
# Logical unary not.
def unary!(v)
if v then
0
else
1;
# Define > with the same precedence as <.
def binary> 10 (LHS RHS)
RHS < LHS;
# Binary "logical or", (note that it does not "short circuit")
def binary| 5 (LHS RHS)
if LHS then
1
else if RHS then
1
else
0;
# Define = with slightly lower precedence than relationals.
def binary= 9 (LHS RHS)
!(LHS < RHS | LHS > RHS);