fix marker after ref bug + handle dos newlines
This commit is contained in:
parent
7b8c4be9ab
commit
ce2feef7f6
|
@ -53,13 +53,14 @@
|
|||
%option extra-type="HMML_ParseState*"
|
||||
%option noyywrap
|
||||
|
||||
S [\t ]*
|
||||
S [\t \r]*
|
||||
ATTR_SIMPLE [^\" \]\t\r\n][^ \]\t\r\n]*
|
||||
ATTR_ALNUM [0-9a-zA-Z][0-9a-zA-Z_]*
|
||||
ATTR_QUOTED \"([^\n\"\\]|\\.)*\"
|
||||
TAG_VIDEO_OPEN \[video
|
||||
TIMECODE \[[0-9]{1,2}(:[0-5][0-9]){1,2}\]
|
||||
BAD_TIMECODE \[[0-9]{1,2}(:[6-9][0-9]){1,2}\]
|
||||
TEXT_BREAK [^\\:@~\[\]\r\n\t ]
|
||||
LB \[
|
||||
RB \]
|
||||
|
||||
|
@ -80,7 +81,7 @@ RB \]
|
|||
%%
|
||||
|
||||
<<EOF>> { HMML_ERR("Unexpected EOF, video close tag not found."); }
|
||||
\n { yyextra->line++; }
|
||||
\r\n|\n { yyextra->line++; }
|
||||
|
||||
<INITIAL>{TAG_VIDEO_OPEN} { BEGIN(VIDEO); }
|
||||
<INITIAL>. { HMML_ERR("Missing video tag."); }
|
||||
|
@ -113,19 +114,19 @@ RB \]
|
|||
<TEXT_START>{LB} { yyless(0); BEGIN(TEXT); }
|
||||
<TEXT_START>. { HMML_ERR("Unknown character '%c' after timecode.", *yytext); }
|
||||
|
||||
<TEXT>[^\\:@~\]\n\[ ]+ { memcpy(sb_add(yyextra->an.text, yyleng), yytext, yyleng); }
|
||||
<TEXT>\\. { CHECKESCAPE(yytext[1]); memcpy(sb_add(yyextra->an.text, yyleng-1), yytext+1, yyleng-1); }
|
||||
<TEXT>[ ]: { sb_push(yyextra->an.text, ' '); M_(CATEGORY, TEXT); BEGIN(MARKER); }
|
||||
<TEXT>[ ]@ { sb_push(yyextra->an.text, ' '); M_(MEMBER , TEXT); BEGIN(MARKER); }
|
||||
<TEXT>[ ]~ { sb_push(yyextra->an.text, ' '); M_(PROJECT , TEXT); BEGIN(MARKER); }
|
||||
<TEXT>{LB}: { M_(CATEGORY, MARKER_XTRA); BEGIN(MARKER); }
|
||||
<TEXT>{LB}@ { M_(MEMBER , MARKER_XTRA); BEGIN(MARKER); }
|
||||
<TEXT>{LB}~ { M_(PROJECT , MARKER_XTRA); BEGIN(MARKER); }
|
||||
<TEXT>\] { BEGIN(AFTERTEXT); }
|
||||
<TEXT>{LB}ref { yyextra->ref.offset = sb_count(yyextra->an.text); BEGIN(REF); }
|
||||
<TEXT>{TEXT_BREAK}+ { memcpy(sb_add(yyextra->an.text, yyleng), yytext, yyleng); }
|
||||
<TEXT>\\. { CHECKESCAPE(yytext[1]); memcpy(sb_add(yyextra->an.text, yyleng-1), yytext+1, yyleng-1); }
|
||||
<TEXT>[ \r\t]+: { sb_push(yyextra->an.text, ' '); M_(CATEGORY, TEXT); BEGIN(MARKER); }
|
||||
<TEXT>[ \r\t]+@ { sb_push(yyextra->an.text, ' '); M_(MEMBER , TEXT); BEGIN(MARKER); }
|
||||
<TEXT>[ \r\t]+~ { sb_push(yyextra->an.text, ' '); M_(PROJECT , TEXT); BEGIN(MARKER); }
|
||||
<TEXT>{LB}: { M_(CATEGORY, MARKER_XTRA); BEGIN(MARKER); }
|
||||
<TEXT>{LB}@ { M_(MEMBER , MARKER_XTRA); BEGIN(MARKER); }
|
||||
<TEXT>{LB}~ { M_(PROJECT , MARKER_XTRA); BEGIN(MARKER); }
|
||||
<TEXT>\] { BEGIN(AFTERTEXT); }
|
||||
<TEXT>{LB}ref { yyextra->ref.offset = sb_count(yyextra->an.text); BEGIN(REF); }
|
||||
<TEXT>{LB}
|
||||
<TEXT>{S}{S} { sb_push(yyextra->an.text, ' '); }
|
||||
<TEXT>. { sb_push(yyextra->an.text, *yytext); }
|
||||
<TEXT>[ \r\t]{1,2} { sb_push(yyextra->an.text, ' '); }
|
||||
<TEXT>. { sb_push(yyextra->an.text, *yytext); }
|
||||
|
||||
<MARKER>{ATTR_ALNUM} { M_ADD(yytext , yyleng ); BEGIN(yyextra->mnext); };
|
||||
<MARKER>{ATTR_QUOTED} { M_ADD(yytext+1, yyleng-2); BEGIN(yyextra->mnext); };
|
||||
|
@ -135,7 +136,7 @@ RB \]
|
|||
<MARKER_XTRA>\] { BEGIN(TEXT); }
|
||||
<MARKER_XTRA>.
|
||||
|
||||
<REF>[\t ]
|
||||
<REF>{S}
|
||||
<REF>site{S}= { yyextra->attr = R_(site); BEGIN(R_ATTR); }
|
||||
<REF>page{S}= { yyextra->attr = R_(page); BEGIN(R_ATTR); }
|
||||
<REF>url{S}= { yyextra->attr = R_(url); BEGIN(R_ATTR); }
|
||||
|
|
Loading…
Reference in New Issue