Hex Artifact Content
Not logged in

Artifact ec0e00bb40d202e71ed3410bfb05b669aa83fb26:


0000: 2f 2a 2a 0d 0a 20 2a 20 41 75 74 68 6f 72 73 3a  /**.. * Authors:
0010: 20 6b 2e 69 6e 61 62 61 0d 0a 20 2a 20 4c 69 63   k.inaba.. * Lic
0020: 65 6e 73 65 3a 20 4e 59 53 4c 20 30 2e 39 39 38  ense: NYSL 0.998
0030: 32 20 68 74 74 70 3a 2f 2f 77 77 77 2e 6b 6d 6f  2 http://www.kmo
0040: 6e 6f 73 2e 6e 65 74 2f 6e 79 73 6c 2f 0d 0a 20  nos.net/nysl/.. 
0050: 2a 0d 0a 20 2a 20 44 65 66 69 6e 69 74 69 6f 6e  *.. * Definition
0060: 20 6f 66 20 63 6f 6e 73 74 61 6e 74 73 20 72 65   of constants re
0070: 6c 61 74 65 64 20 74 6f 20 74 68 65 20 6c 61 79  lated to the lay
0080: 65 72 73 2e 0d 0a 20 2a 2f 0d 0a 6d 6f 64 75 6c  ers... */..modul
0090: 65 20 70 6f 6c 65 6d 79 2e 6c 61 79 65 72 3b 0d  e polemy.layer;.
00a0: 0a 69 6d 70 6f 72 74 20 70 6f 6c 65 6d 79 2e 5f  .import polemy._
00b0: 63 6f 6d 6d 6f 6e 3b 0d 0a 0d 0a 2f 2f 2f 20 54  common;..../// T
00c0: 79 70 65 20 66 6f 72 20 74 68 65 20 6c 61 79 65  ype for the laye
00d0: 72 20 49 44 0d 0a 0d 0a 61 6c 69 61 73 20 73 74  r ID....alias st
00e0: 72 69 6e 67 20 4c 61 79 65 72 3b 0d 0a 0d 0a 65  ring Layer;....e
00f0: 6e 75 6d 20 3a 20 4c 61 79 65 72 0d 0a 7b 0d 0a  num : Layer..{..
0100: 09 53 79 73 74 65 6d 4c 61 79 65 72 20 20 20 3d  .SystemLayer   =
0110: 20 22 28 73 79 73 74 65 6d 29 22 2c 20 20 20 2f   "(system)",   /
0120: 2f 2f 20 50 72 65 64 65 66 69 6e 65 64 20 6c 61  // Predefined la
0130: 79 65 72 20 66 6f 72 20 69 6e 74 65 72 6e 61 6c  yer for internal
0140: 20 64 61 74 61 0d 0a 09 56 61 6c 75 65 4c 61 79   data...ValueLay
0150: 65 72 20 20 20 20 3d 20 22 40 76 61 6c 75 65 22  er    = "@value"
0160: 2c 20 20 20 20 20 2f 2f 2f 20 50 72 65 64 65 66  ,     /// Predef
0170: 69 6e 65 64 20 6c 61 79 65 72 20 66 6f 72 20 6e  ined layer for n
0180: 6f 72 6d 61 6c 20 72 75 6e 0d 0a 09 4d 61 63 72  ormal run...Macr
0190: 6f 4c 61 79 65 72 20 20 20 20 3d 20 22 40 6d 61  oLayer    = "@ma
01a0: 63 72 6f 22 2c 20 20 20 20 20 2f 2f 2f 20 50 72  cro",     /// Pr
01b0: 65 64 65 66 69 6e 65 64 20 6c 61 79 65 72 20 66  edefined layer f
01c0: 6f 72 20 6d 61 63 72 6f 20 72 75 6e 20 28 40 6c  or macro run (@l
01d0: 61 79 28 29 20 63 68 61 6e 67 65 73 20 6c 61 79  ay() changes lay
01e0: 65 72 29 0d 0a 09 52 61 77 4d 61 63 72 6f 4c 61  er)...RawMacroLa
01f0: 79 65 72 20 3d 20 22 28 72 61 77 6d 61 63 72 6f  yer = "(rawmacro
0200: 29 22 2c 20 2f 2f 2f 20 50 72 65 64 65 66 69 6e  )", /// Predefin
0210: 65 64 20 6c 61 79 65 72 20 66 6f 72 20 6d 61 63  ed layer for mac
0220: 72 6f 20 72 75 6e 20 28 40 6c 61 79 28 29 20 62  ro run (@lay() b
0230: 65 63 6f 6d 65 73 20 41 53 54 29 0d 0a 09 41 73  ecomes AST)...As
0240: 74 4c 61 79 65 72 20 20 20 20 20 20 3d 20 22 28  tLayer      = "(
0250: 61 73 74 29 22 2c 20 20 20 20 20 20 2f 2f 2f 20  ast)",      /// 
0260: 50 72 65 64 65 66 69 6e 65 64 20 6c 61 79 65 72  Predefined layer
0270: 20 66 6f 72 20 6d 61 63 72 6f 20 72 75 6e 20 28   for macro run (
0280: 6e 65 76 65 72 20 69 6e 76 6f 6b 65 20 6d 61 63  never invoke mac
0290: 72 6f 29 0d 0a 7d 0d 0a 0d 0a 2f 2f 2f 20 54 72  ro)..}..../// Tr
02a0: 75 65 20 69 66 20 69 74 20 69 73 20 6d 61 63 72  ue if it is macr
02b0: 6f 2d 6c 69 6b 65 20 6c 61 79 65 72 20 74 68 61  o-like layer tha
02c0: 74 20 62 61 73 69 63 61 6c 6c 79 20 67 65 6e 65  t basically gene
02d0: 72 61 74 65 73 20 73 79 6e 74 61 78 20 74 72 65  rates syntax tre
02e0: 65 0d 0a 0d 0a 62 6f 6f 6c 20 69 73 41 53 54 4c  e....bool isASTL
02f0: 61 79 65 72 28 20 4c 61 79 65 72 20 6c 61 79 20  ayer( Layer lay 
0300: 29 0d 0a 7b 0d 0a 09 72 65 74 75 72 6e 20 6c 61  )..{...return la
0310: 79 3d 3d 4d 61 63 72 6f 4c 61 79 65 72 20 7c 7c  y==MacroLayer ||
0320: 20 6c 61 79 3d 3d 52 61 77 4d 61 63 72 6f 4c 61   lay==RawMacroLa
0330: 79 65 72 20 7c 7c 20 6c 61 79 3d 3d 41 73 74 4c  yer || lay==AstL
0340: 61 79 65 72 3b 0d 0a 7d 0d 0a 0d 0a 75 6e 69 74  ayer;..}....unit
0350: 74 65 73 74 0d 0a 7b 0d 0a 09 61 73 73 65 72 74  test..{...assert
0360: 28 20 21 69 73 41 53 54 4c 61 79 65 72 28 53 79  ( !isASTLayer(Sy
0370: 73 74 65 6d 4c 61 79 65 72 29 20 29 3b 0d 0a 09  stemLayer) );...
0380: 61 73 73 65 72 74 28 20 21 69 73 41 53 54 4c 61  assert( !isASTLa
0390: 79 65 72 28 56 61 6c 75 65 4c 61 79 65 72 29 20  yer(ValueLayer) 
03a0: 29 3b 0d 0a 09 61 73 73 65 72 74 28 20 69 73 41  );...assert( isA
03b0: 53 54 4c 61 79 65 72 28 4d 61 63 72 6f 4c 61 79  STLayer(MacroLay
03c0: 65 72 29 20 29 3b 0d 0a 09 61 73 73 65 72 74 28  er) );...assert(
03d0: 20 69 73 41 53 54 4c 61 79 65 72 28 52 61 77 4d   isASTLayer(RawM
03e0: 61 63 72 6f 4c 61 79 65 72 29 20 29 3b 0d 0a 09  acroLayer) );...
03f0: 61 73 73 65 72 74 28 20 69 73 41 53 54 4c 61 79  assert( isASTLay
0400: 65 72 28 41 73 74 4c 61 79 65 72 29 20 29 3b 0d  er(AstLayer) );.
0410: 0a 7d 0d 0a 0d 0a 2f 2f 2f 20 54 72 75 65 20 69  .}..../// True i
0420: 66 20 69 6e 20 74 68 65 20 73 70 65 63 69 66 69  f in the specifi
0430: 65 64 20 6c 61 79 65 72 20 40 6c 61 79 28 2e 2e  ed layer @lay(..
0440: 2e 29 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74  .) has no effect
0450: 20 61 6e 64 20 6d 65 72 65 6c 79 20 70 72 6f 64   and merely prod
0460: 75 63 65 73 20 61 20 73 79 6e 74 61 78 20 74 72  uces a syntax tr
0470: 65 65 0d 0a 0d 0a 62 6f 6f 6c 20 69 73 4e 6f 4c  ee....bool isNoL
0480: 61 79 65 72 43 68 61 6e 67 65 4c 61 79 65 72 28  ayerChangeLayer(
0490: 20 4c 61 79 65 72 20 6c 61 79 20 29 0d 0a 7b 0d   Layer lay )..{.
04a0: 0a 09 72 65 74 75 72 6e 20 6c 61 79 3d 3d 52 61  ..return lay==Ra
04b0: 77 4d 61 63 72 6f 4c 61 79 65 72 20 7c 7c 20 6c  wMacroLayer || l
04c0: 61 79 3d 3d 41 73 74 4c 61 79 65 72 3b 0d 0a 7d  ay==AstLayer;..}
04d0: 0d 0a 0d 0a 75 6e 69 74 74 65 73 74 0d 0a 7b 0d  ....unittest..{.
04e0: 0a 09 61 73 73 65 72 74 28 20 21 69 73 4e 6f 4c  ..assert( !isNoL
04f0: 61 79 65 72 43 68 61 6e 67 65 4c 61 79 65 72 28  ayerChangeLayer(
0500: 53 79 73 74 65 6d 4c 61 79 65 72 29 20 29 3b 0d  SystemLayer) );.
0510: 0a 09 61 73 73 65 72 74 28 20 21 69 73 4e 6f 4c  ..assert( !isNoL
0520: 61 79 65 72 43 68 61 6e 67 65 4c 61 79 65 72 28  ayerChangeLayer(
0530: 56 61 6c 75 65 4c 61 79 65 72 29 20 29 3b 0d 0a  ValueLayer) );..
0540: 09 61 73 73 65 72 74 28 20 21 69 73 4e 6f 4c 61  .assert( !isNoLa
0550: 79 65 72 43 68 61 6e 67 65 4c 61 79 65 72 28 4d  yerChangeLayer(M
0560: 61 63 72 6f 4c 61 79 65 72 29 20 29 3b 0d 0a 09  acroLayer) );...
0570: 61 73 73 65 72 74 28 20 69 73 4e 6f 4c 61 79 65  assert( isNoLaye
0580: 72 43 68 61 6e 67 65 4c 61 79 65 72 28 52 61 77  rChangeLayer(Raw
0590: 4d 61 63 72 6f 4c 61 79 65 72 29 20 29 3b 0d 0a  MacroLayer) );..
05a0: 09 61 73 73 65 72 74 28 20 69 73 4e 6f 4c 61 79  .assert( isNoLay
05b0: 65 72 43 68 61 6e 67 65 4c 61 79 65 72 28 41 73  erChangeLayer(As
05c0: 74 4c 61 79 65 72 29 20 29 3b 0d 0a 7d 0d 0a 0d  tLayer) );..}...
05d0: 0a 2f 2f 2f 20 54 72 75 65 20 69 66 20 64 6f 20  ./// True if do 
05e0: 6d 61 63 72 6f 20 65 78 70 61 6e 73 74 69 6f 6e  macro expanstion
05f0: 0d 0a 0d 0a 62 6f 6f 6c 20 69 73 4d 61 63 72 6f  ....bool isMacro
0600: 4c 61 79 65 72 28 20 4c 61 79 65 72 20 6c 61 79  Layer( Layer lay
0610: 20 29 0d 0a 7b 0d 0a 09 72 65 74 75 72 6e 20 6c   )..{...return l
0620: 61 79 3d 3d 4d 61 63 72 6f 4c 61 79 65 72 20 7c  ay==MacroLayer |
0630: 7c 20 6c 61 79 3d 3d 52 61 77 4d 61 63 72 6f 4c  | lay==RawMacroL
0640: 61 79 65 72 3b 0d 0a 7d 0d 0a 0d 0a 75 6e 69 74  ayer;..}....unit
0650: 74 65 73 74 0d 0a 7b 0d 0a 09 61 73 73 65 72 74  test..{...assert
0660: 28 20 21 69 73 4d 61 63 72 6f 4c 61 79 65 72 28  ( !isMacroLayer(
0670: 53 79 73 74 65 6d 4c 61 79 65 72 29 20 29 3b 0d  SystemLayer) );.
0680: 0a 09 61 73 73 65 72 74 28 20 21 69 73 4d 61 63  ..assert( !isMac
0690: 72 6f 4c 61 79 65 72 28 56 61 6c 75 65 4c 61 79  roLayer(ValueLay
06a0: 65 72 29 20 29 3b 0d 0a 09 61 73 73 65 72 74 28  er) );...assert(
06b0: 20 69 73 4d 61 63 72 6f 4c 61 79 65 72 28 4d 61   isMacroLayer(Ma
06c0: 63 72 6f 4c 61 79 65 72 29 20 29 3b 0d 0a 09 61  croLayer) );...a
06d0: 73 73 65 72 74 28 20 69 73 4d 61 63 72 6f 4c 61  ssert( isMacroLa
06e0: 79 65 72 28 52 61 77 4d 61 63 72 6f 4c 61 79 65  yer(RawMacroLaye
06f0: 72 29 20 29 3b 0d 0a 09 61 73 73 65 72 74 28 20  r) );...assert( 
0700: 21 69 73 4d 61 63 72 6f 4c 61 79 65 72 28 41 73  !isMacroLayer(As
0710: 74 4c 61 79 65 72 29 20 29 3b 0d 0a 7d 0d 0a     tLayer) );..}..