Compiler/AST interpreter: Difference between revisions

Content added Content deleted
m (made da_redim - use do while for macros, to avoid potential problems.)
m (Fix C-like division: it always truncates towards 0.)
Line 72: Line 72:
Because of the simple nature of our tiny language, Semantic analysis is not needed.
Because of the simple nature of our tiny language, Semantic analysis is not needed.


Your interpreter should use C like division semantics, for both division and modulus. For
Your interpreter should use C like division semantics, for both division and modulus. For division of positive operands, only the non-fractional portion of the result should be returned. In other words, the result should be truncated towards 0.
division of positive operands, only the non-fractional portion of the result should be
returned. In other words, the result should be truncated towards 0.


This means, for instance, that 3 / 2 should result in 1.
This means, for instance, that 3 / 2 should result in 1.


For division when one of the operands is negative, the result should be truncated away
For division when one of the operands is negative, the result should be truncated towards 0.
from 0.


This means, for instance, that 3 / -2 should result in -1.
This means, for instance, that 3 / -2 should result in -1.