attributes work
This commit is contained in:
parent
8d8b77bfe9
commit
6810550c32
27
main.l
27
main.l
@ -25,19 +25,18 @@ static const char ATTRIBUTE_VALUE_END[] = "'";
|
|||||||
|
|
||||||
bool push_tag() {
|
bool push_tag() {
|
||||||
if (tag_candidate == "") {
|
if (tag_candidate == "") {
|
||||||
|
exit(3);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::trim(tag_candidate);
|
boost::trim(tag_candidate);
|
||||||
tag_stack.push(tag_candidate);
|
tag_stack.push(tag_candidate);
|
||||||
ECHOS(("<" + tag_stack.top() + ">").c_str());
|
|
||||||
tag_candidate = "";
|
tag_candidate = "";
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool pop_tag() {
|
bool pop_tag() {
|
||||||
ECHOS(("</" + tag_stack.top() + ">").c_str());
|
|
||||||
tag_stack.pop();
|
tag_stack.pop();
|
||||||
tag_candidate = "";
|
tag_candidate = "";
|
||||||
|
|
||||||
@ -68,20 +67,23 @@ identifier [A-z][A-z0-9]*
|
|||||||
BEGIN COMMENT_MULTILINE;
|
BEGIN COMMENT_MULTILINE;
|
||||||
ECHOS(COMMENT_START);
|
ECHOS(COMMENT_START);
|
||||||
}
|
}
|
||||||
{identifier}{wsnl}+ {
|
{identifier}{wsnl}* {
|
||||||
ECHO_CANDIDATE;
|
ECHO_CANDIDATE;
|
||||||
tag_candidate = yytext;
|
tag_candidate = yytext;
|
||||||
//BEGIN SWALLOW;
|
//BEGIN SWALLOW;
|
||||||
}
|
}
|
||||||
\( {
|
\( {
|
||||||
push_tag();
|
push_tag();
|
||||||
|
ECHOS(("<" + tag_stack.top() + " ").c_str());
|
||||||
BEGIN HEAD;
|
BEGIN HEAD;
|
||||||
}
|
}
|
||||||
\{ {
|
\{ {
|
||||||
push_tag();
|
push_tag();
|
||||||
|
ECHOS(("<" + tag_stack.top() + ">").c_str());
|
||||||
}
|
}
|
||||||
\} {
|
\} {
|
||||||
ECHO_CANDIDATE;
|
ECHO_CANDIDATE;
|
||||||
|
ECHOS(("</" + tag_stack.top() + ">").c_str());
|
||||||
pop_tag();
|
pop_tag();
|
||||||
}
|
}
|
||||||
.|{wsnl} {
|
.|{wsnl} {
|
||||||
@ -124,20 +126,33 @@ identifier [A-z][A-z0-9]*
|
|||||||
}
|
}
|
||||||
|
|
||||||
<HEAD>{
|
<HEAD>{
|
||||||
\){wsnl}\{ {
|
\){wsnl}*\{ {
|
||||||
|
ECHOS(">");
|
||||||
BEGIN BODY;
|
BEGIN BODY;
|
||||||
}
|
}
|
||||||
: {
|
:{wsnl}* {
|
||||||
ECHOS("=");
|
ECHOS("=");
|
||||||
ECHOS(ATTRIBUTE_VALUE_START);
|
ECHOS(ATTRIBUTE_VALUE_START);
|
||||||
BEGIN HEAD_VALUE;
|
BEGIN HEAD_VALUE;
|
||||||
}
|
}
|
||||||
.* {
|
.|\n {
|
||||||
ECHO;
|
ECHO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
<HEAD_VALUE>{
|
<HEAD_VALUE>{
|
||||||
|
, {
|
||||||
|
ECHOS(ATTRIBUTE_VALUE_END);
|
||||||
|
BEGIN HEAD;
|
||||||
|
}
|
||||||
|
\) {
|
||||||
|
ECHOS(ATTRIBUTE_VALUE_END);
|
||||||
|
yyless(0);
|
||||||
|
BEGIN HEAD;
|
||||||
|
}
|
||||||
|
.|\n {
|
||||||
|
ECHO;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
Loading…
x
Reference in New Issue
Block a user