;; Define a 3 fields structure
struct point
xx db 4
yy db 5
zz db 6
endstruct
assert point == 3
assert point.xx == 0
assert point.yy == 1
assert point.zz == 2
point 1, 2 , 3
point ,,8
point 9
; force values
; : after label name allows to disambiguate parser that does not try to check if label is a macro (less errors/faster)
my_point1: point 1, 2, 3
; use all default values
my_point2: point
; use default at the end
my_point3: point 1
; use default at the beginning
my_point4: point ,,1
p1: point 1, 2 , 3
p2: point ,,8
p3: point 9
struct triangle
p1 point 1, 2 , 3
p2 point ,,8
p3 point 9 ; third point
endstruct
assert triangle == 9
assert triangle.p1 == 0
assert triangle.p2 == 3
assert triangle.p3 == 6
my_triangle2: triangle [1, 2, 3], [4, 5, 6], [7, 8 , 9]
if 0
my_triangle1. triangle
my_triangle2: triangle [1, 2, 3], , [7, 8 , 9]
endif