
Сообщение от
NEO SPECTRUMAN
так же только что нашел такую ошибку
коментарий написанный впритык уничтожает endif
thanks, I will take a look on it, I guess it's about the cloned-parser-code used to parse some special cases like `endif/endlua/....` and similar, not using the main regular parser, so I guess every of those cloned ones is small original and not behaving the same way as regular, I will have to review them all.

Сообщение от
NEO SPECTRUMAN
но хотелось бы использовать вот так
The proposed syntax is already valid in sjasmplus, but has different meaning. The logical or is logical or.
But I get your idea, I will try to search for some nice common way how these things are done, the C++ doesn't have built-in operator for this kind of calculation IIRC, but some languages have them...
I think possible syntax may be like:
Код:
IF long_expression isfrom(0, 1, 5, 7)
ENDIF
I just can't recall what are the common names in other languages for such operator, and I need to check what kind of "array" enclosing is best fit for sjasmplus syntax, I think I can even go with`isfrom[0, 1, 5]` using brackets (I'm a bit worried about parentheses), the brackets can clash only with DEFARRAY, which should be quite safe usage, unless you decide to do `DEFARRAY isfrom` 
BTW, if your "very long label" contains only very limited amout of numbers, like 20 to 29, you can in current/old sjasmplus use the DEFARRAY lookup-table trick:
Код:
very_long_label = 20
DEFARRAY nextIfCheck 1, 1, 0, 0, 0, 1, 1, 0, 0, 0 ; true for: 20, 21, 25, 26
DUP 10
IF nextIfCheck[very_long_label - 20]
DISPLAY /D, very_long_label, " -> true"
ELSE
DISPLAY /D, very_long_label, " -> false"
ENDIF
very_long_label = very_long_label + 1
EDUP