git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7283 c06c8d41-db1a-0410-9941-cceddc491573
RZHJQU3Y6KKMNJKGL6P4IXBJTKWFO4YARAQSWYCETXXNSZG4BN7QC NVSFIV2ZKP44XHCSCXG6OZVGL67OIFINC34J2EMKTA4KULCERUEAC OXPTBYASN6QO2YOIVXNSRHD66PMLQEORLUK7AEEEMHKOOYRNEL2AC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC 7Y5HSDFKA5TPLS2TWTRFMQVX6UXUDHXU5MUMXQSDFAIY4THQ3BIQC W52PCSHX72WAMWKG6L4BPUBVMO6E72KYYBNKAA7554KNOTY6V7WQC 34C4U6EQWERY75GZJKUCM5KVGU2OUICETS5LGZF6RMKMZT4R5SQAC AUYQDKLMOG4FGH2T3LACX4TH632DPKVXBNV5VU6PIVUEWSIO4LQQC ZJLJGSB2XSBQU42OFQMXL3EG4CXAQGOYAU6YTV2SAWZEJIPFH2CAC TLO257LZSB6ZO36STDUEWJBO2LETXFKTFGXELA6Y4BZBVAEIIINAC ED62QWGKBPORWVKDFOQRKJXEIWZVNGR3O4KWQBDSRNPT36AYOQYAC 2ZZD6EYMSPVCXZTICL4VGYGGQRRWDLZ24KBCDBVIYC54OZ4C6GGAC JT672SIJK4BOIUAGL2WQ6NR2NF4PSWP3BT6Q4HMNRF25UN6JQ2MAC TLA5UN6LZPXGKERI27EFY4HKIIU3VU5Y7ZU54WXL6ANBUV2VOTMQC JQFQX7IWSJ4TYWVUVXAFMCPSAN67PRMNECDQI5WMON2JFMQVVUEQC IVVTHLTTLOP5TSULXJWUSSXHOKYWVU3OWKYVK45A7RIB6V34MYQAC JDM27QE4HR52AYFSQE763BFF57ANOTF5MXKMO377PP5EXMN7SAOAC ZI6K4LOBYQJKSMHZ766HTJS66AL2KB6IYSBUYPETTKPOKW4ZNK7AC H3552BCIAVBLKAYKE4DHFLBLFW5RGRMYBMRRYHYEB5IPIJRUVU5QC WE3JT43OR4L6675GINGU4B3YDBMURJZHDDYY3VLHUJEBAKH2HYEAC R6XS2HO5QX2FJUGL5UQQRNETKCMYWTUFPHPPS5SYWK3OQA4UDUQQC // Enter a new state, first clearing yylval of junk.#define CBEGIN(x) do { BEGIN(x); clean(); } while (0)static void post_proc_text(char *text, bool trim_right, int strip_trailing){char *s = NULL;if (trim_right){s = text + strlen(text) - 1;while (s >= text && isspace(*s))*s-- = 0;}if (strip_trailing){if (!s)s = text + strlen(text) - 1;while (s >= text && --strip_trailing >= 0)*s-- = 0;}}
char *s = NULL;if (trim_right){s = newstring + strlen(newstring) - 1;while (isspace(*s) && s >= newstring)*s-- = 0;}if (strip_trailing){if (!s)s = newstring + strlen(newstring) - 1;while (s >= newstring && --strip_trailing >= 0)*s-- = 0;}
post_proc_text(newstring, trim_right, strip_trailing);
static void cattext(bool trim_right = false, int strip_trailing = 0){if (!yylval.text)settext(trim_right, strip_trailing);else{bool was_alloced = alloced;char *newbuf = (char*) malloc(strlen(yylval.text) + strlen(yytext) + 1);if (!newbuf)end(1, "Out of memory");alloced = true;strcpy(newbuf, yylval.text);strcat(newbuf, yytext);post_proc_text(newbuf, trim_right, strip_trailing);if (was_alloced)free((void*) yylval.text);yylval.text = newbuf;}}
NAME: { BEGIN(ARGUMENT); return NAME; }default-depth: { BEGIN(ARGUMENT); return DEFAULT_DEPTH; }DEPTH: { BEGIN(ARGUMENT); return DEPTH; }ORIENT: { BEGIN(ARGUMENT); return ORIENT; }PLACE: { BEGIN(ARGUMENT); return PLACE; }WELCOME: { BEGIN(ARGUMENT); return WELCOME; }
NAME: { CBEGIN(ARGUMENT); return NAME; }default-depth: { CBEGIN(ARGUMENT); return DEFAULT_DEPTH; }DEPTH: { CBEGIN(ARGUMENT); return DEPTH; }ORIENT: { CBEGIN(ARGUMENT); return ORIENT; }PLACE: { CBEGIN(ARGUMENT); return PLACE; }WELCOME: { CBEGIN(ARGUMENT); return WELCOME; }
FLAGS: { BEGIN(KEYWORDS); return TAGS; }TAGS: { BEGIN(KEYWORDS); return TAGS; }LFLAGS: { BEGIN(ARGUMENT); return LFLAGS; }BFLAGS: { BEGIN(ARGUMENT); return BFLAGS; }SUBST: { BEGIN(ITEM_LIST); return SUBST; }NSUBST: { BEGIN(ITEM_LIST); return NSUBST; }COLOUR: { BEGIN(ITEM_LIST); return COLOUR; }FLOORCOL: { BEGIN(ARGUMENT); return FLOORCOL; }ROCKCOL: { BEGIN(ARGUMENT); return ROCKCOL; }MONS: { BEGIN(MNAME); return MONS; }ITEM: { BEGIN(ITEM_LIST); return ITEM; }MARKER: { BEGIN(TOEOL); return MARKER; }SHUFFLE: { BEGIN(ITEM_LIST); return SHUFFLE; }
FLAGS: { CBEGIN(KEYWORDS); return TAGS; }TAGS: { CBEGIN(KEYWORDS); return TAGS; }LFLAGS: { CBEGIN(ARGUMENT); return LFLAGS; }BFLAGS: { CBEGIN(ARGUMENT); return BFLAGS; }SUBST: { CBEGIN(ITEM_LIST); return SUBST; }NSUBST: { CBEGIN(ITEM_LIST); return NSUBST; }COLOUR: { CBEGIN(ITEM_LIST); return COLOUR; }FLOORCOL: { CBEGIN(ARGUMENT); return FLOORCOL; }ROCKCOL: { CBEGIN(ARGUMENT); return ROCKCOL; }MONS: { CBEGIN(MNAME); return MONS; }ITEM: { CBEGIN(ITEM_LIST); return ITEM; }MARKER: { CBEGIN(TOEOL); return MARKER; }SHUFFLE: { CBEGIN(ITEM_LIST); return SHUFFLE; }
KFEAT: { BEGIN(ARGUMENT); return KFEAT; }KITEM: { BEGIN(ARGUMENT); return KITEM; }KMONS: { BEGIN(ARGUMENT); return KMONS; }KMASK: { BEGIN(ARGUMENT); return KMASK; }
KFEAT: { CBEGIN(ARGUMENT); return KFEAT; }KITEM: { CBEGIN(ARGUMENT); return KITEM; }KMONS: { CBEGIN(ARGUMENT); return KMONS; }KMASK: { CBEGIN(ARGUMENT); return KMASK; }
MONS: gnoll ; potion of healing | potion of heal wounds . whip ego:reaching |whip good_item no_uniq | spear ego:reaching | glaive . scale mail | chain mail
MONS: gnoll ; potion of healing | potion of heal wounds \. whip ego:reaching |whip good_item no_uniq | spear ego:reaching \| glaive \. scale mail | chain mail
For most map headers, you can split long lines by ending the line thatwill be continued on the next line with \ as:KMONS: * = orc ; katana | quick blade . chain mail | scale mail / \goblin ; daggerIf you're using continuation lines for comma-separated lists of itemsor monsters, split your line after the comma, not before. For example:Wrong:ITEM: potion of healing \, potion of speedRight:ITEM: potion of healing, \potion of speed