removed: statements: [if-index ...] [is ...] and [is-no ...]

we can provide a user definied function which does the same
added:   to FunInfo<>:
         Stack * stack_tab
         size_t stack_index
         a stack table and an index to the current stack item



git-svn-id: svn://ttmath.org/publicrep/ezc/trunk@988 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
2014-11-02 17:26:56 +00:00
parent 6f1e2eb518
commit b519c79a3e
7 changed files with 30 additions and 226 deletions

View File

@@ -685,28 +685,6 @@ void PatternParser::ReadDirectiveIfoneno(Item & item)
void PatternParser::ReadDirectiveIs(Item & item)
{
item.type = Item::item_is;
ReadFunctions(item);
if( item.functions.size() != 2 )
item.type = Item::item_err;
}
void PatternParser::ReadDirectiveIsno(Item & item)
{
item.type = Item::item_isno;
ReadFunctions(item);
if( item.functions.size() != 2 )
item.type = Item::item_err;
}
void PatternParser::ReadDirectiveEnd(Item & item)
{
item.type = Item::item_end;
@@ -721,26 +699,6 @@ void PatternParser::ReadDirectiveElse(Item & item)
void PatternParser::ReadDirectiveIfindex(Item & item)
{
item.type = Item::item_err;
item.functions.clear();
temp_function.Clear();
// reading: odd, even, first or a number (without quotes)
if( !ReadName(temp_function.name) )
return;
if( temp_function.name != L"odd" && temp_function.name != L"even" &&
temp_function.name != L"first" && !IsPositiveNumber(temp_function.name) )
return;
item.functions.push_back(temp_function);
item.type = Item::item_ifindex;
}
void PatternParser::ReadDirectiveFor(Item & item)
{
item.type = Item::item_for;
@@ -869,9 +827,6 @@ std::wstring name;
else if( name == L"if-one" ) ReadDirectiveIfone(item);
else if( name == L"if-any-no" ) ReadDirectiveIfanyno(item);
else if( name == L"if-one-no" ) ReadDirectiveIfoneno(item);
else if( name == L"if-index" ) ReadDirectiveIfindex(item);
else if( name == L"is" ) ReadDirectiveIs(item);
else if( name == L"is-no" ) ReadDirectiveIsno(item);
else if( name == L"end" ) ReadDirectiveEnd(item);
else if( name == L"else" ) ReadDirectiveElse(item);
else if( name == L"for" ) ReadDirectiveFor(item);
@@ -1043,10 +998,7 @@ void PatternParser::CreateTree(Item & item)
pitem->type == Item::item_ifany ||
pitem->type == Item::item_ifone ||
pitem->type == Item::item_ifanyno ||
pitem->type == Item::item_ifoneno ||
pitem->type == Item::item_ifindex ||
pitem->type == Item::item_is ||
pitem->type == Item::item_isno )
pitem->type == Item::item_ifoneno )
CreateTreeReadIf(*pitem);
if( pitem->type == Item::item_for ||