Парскек Хаскеля соответствует if (3) как будто (3 > 0)
Я использую Parsec и пример версии boolExpr http://hpaste.org/86299 на данный момент. Я собираю на Windows через GHC.
Код выше будет соответствовать логическому выражению, как 3 < 4
или же a not 3
Однако это не будет соответствовать выражению, как 3
, true
или же (((3 < 1)))
, Может ли кто-нибудь дать мне совет о том, как сопоставить такие выражения, как 3
а также (((3 < 1)))
такой же как 3 > 0
а также (((3 < 1))) > 0
где>0 предполагается / добавляется автоматически в выражениях без RHS?
1 ответ
Похоже, вы пытаетесь вставить семантику вашего языка в синтаксический анализатор. "Правильная" вещь, которую нужно делать с точки зрения языков программирования, - это принимать как числовые, так и логические значения в вашем синтаксическом дереве. Затем на более позднем этапе - реконструкция типа без разбора - решите, что для числовых выражений добавляется один "> 0", а для логических выражений - нет.