parseAttribute.cxx revision 7c478bd95313f5f23a4c958a745db2134aa03244
// Copyright (c) 1994, 1995 James Clark
// See the file COPYING for copying permission.
#pragma ident "%Z%%M% %I% %E% SMI"
#include "splib.h"
#include "Parser.h"
#include "MessageArg.h"
#include "token.h"
#include "macros.h"
#include "ParserMessages.h"
#ifdef SP_NAMESPACE
namespace SP_NAMESPACE {
#endif
{
unsigned specLength = 0;
return 0;
switch (curParm) {
case AttributeParameter::name:
{
currentLocation());
if (currentMarkup())
return 0;
return 0;
// setup for next attribute
return 0;
}
else {
if (currentMarkup())
return 0;
}
}
break;
case AttributeParameter::nameToken:
{
currentLocation());
return 0;
return 0;
}
break;
{
// Don't treat it as an unquoted attribute value.
if (!atts.handleAsUnterminated(*this))
return 0;
}
return 0;
}
break;
default:
}
}
return 1;
}
unsigned &specLength)
{
unsigned index;
if (atts.handleAsUnterminated(*this))
return 0;
}
}
else {
if (!sd().attributeOmitName())
else if (options().warnMissingAttributeName)
}
return 1;
}
unsigned &specLength,
{
if (markup) {
do {
}
else {
do {
}
}
unsigned index;
if (!implydefAttlist())
new CdataDeclaredValue));
}
switch (token) {
case tokenUnrecognized:
if (reportNonSgmlCharacter())
return 0;
// fall through
case tokenEtago:
case tokenStago:
case tokenNestc:
if (markup)
currentLocation());
break;
case tokenEe:
return 0;
case tokenTagc:
case tokenDsc:
case tokenVi:
return 0;
case tokenNameStart:
case tokenDigit:
case tokenLcUcNmchar:
if (!sd().attributeValueNotLiteral())
else if (options().warnAttributeValueNotLiteral)
: 0,
if (markup)
currentLocation());
break;
case tokenLit:
case tokenLita:
return 0;
if (markup)
break;
default:
}
}
{
if (markup) {
}
}
else {
}
switch (token) {
case tokenUnrecognized:
if (reportNonSgmlCharacter())
return 0;
break;
case tokenEe:
return 0;
case tokenEtago:
case tokenStago:
if (!sd().startTagUnclosed())
currentInput()->ungetToken();
netEnabling = 0;
break;
case tokenNestc:
if (markup)
switch (sd().startTagNetEnable()) {
case Sd::netEnableNo:
break;
case Sd::netEnableImmednet:
currentInput()->ungetToken();
break;
case Sd::netEnableAll:
break;
}
netEnabling = 1;
break;
case tokenTagc:
if (markup)
netEnabling = 0;
break;
case tokenDsc:
if (markup)
break;
case tokenNameStart:
if (markup)
break;
case tokenDigit:
case tokenLcUcNmchar:
if (markup)
break;
case tokenLit:
case tokenLita:
return 0;
case tokenVi:
if (!allowVi) {
return 0;
}
if (markup)
break;
default:
}
return 1;
}
void Parser::extendUnquotedAttributeValue()
{
for (;;) {
|| !syn.isSgmlChar(c)
|| c == InputSource::eE
break;
length++;
}
}
{
: 0);
| (wantMarkup() ? unsigned(literalDelimInfo) : 0),
text)) {
return 1;
}
else
return 0;
}
{
: 0);
| (wantMarkup() ? unsigned(literalDelimInfo) : 0),
text)) {
return 1;
}
else
return 0;
}
{
return 0;
size_t nameMarkupIndex = 0;
if (currentMarkup())
return 0;
if (currentMarkup())
}
switch (token) {
case tokenUnrecognized:
if (!reportNonSgmlCharacter())
return 0;
case tokenEe:
return 0;
case tokenEtago:
case tokenStago:
case tokenNestc:
case tokenTagc:
case tokenDsc:
case tokenVi:
return 0;
case tokenNameStart:
case tokenDigit:
case tokenLcUcNmchar:
if (!sd().attributeValueNotLiteral())
: 0,
if (currentMarkup())
break;
case tokenLit:
case tokenLita:
{
(currentMarkup() ? literalDelimInfo : 0)
text))
return 0;
if (currentMarkup())
}
break;
default:
}
return 0;
}
else {
if (currentMarkup())
if (!sd().attributeOmitName())
}
}
else {
// It's a name token.
return 0;
if (!sd().attributeOmitName())
}
}
if (netEnabling)
return 1;
}
#ifdef SP_NAMESPACE
}
#endif