grammar SimpleLogic

rule expression
  infix_operation / primary
end

rule infix_operation
  lhs:infix_operation_chain rhs:primary <InfixOperation>
end

rule infix_operation_chain
  (primary space operator space)+ <InfixOperationChain>
end

rule space
  " "*
end

rule operator
  "&&" / "||"
end

rule primary
  variable / "!" primary <NegationOperator> / '(' expression ')'
end

rule variable
  name:[\w]+ <Variable>
end

end