X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;ds=inline;f=helm%2FDEVEL%2Fmathml_editor%2Fsrc%2FTPushParser.cc;h=4a2d1bd79fc5135eb689c4a3d485cca73caea28b;hb=d195deff022235dcb39cc4d5865f5bd3c8d3ca07;hp=ad439908c66a036dd5d0767901ace9c8ba39b477;hpb=a407cfb9bc31c5f9b94eb437d642e7582b641fc4;p=helm.git diff --git a/helm/DEVEL/mathml_editor/src/TPushParser.cc b/helm/DEVEL/mathml_editor/src/TPushParser.cc index ad439908c..4a2d1bd79 100644 --- a/helm/DEVEL/mathml_editor/src/TPushParser.cc +++ b/helm/DEVEL/mathml_editor/src/TPushParser.cc @@ -1,3 +1,27 @@ +/* Copyright (C) 2002-2003, Luca Padovani , + * 2003, Paolo Marinelli . + * + * This file is part of EdiTeX, an editor of mathematical + * expressions based on TeX syntax + * + * EdiTeX is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * EdiTeX is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EdiTeX; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For details, see the EdiTeX World-Wide-Web page, + * http://helm.cs.unibo.it/editex, or send a mail to + * + */ #include "ALogger.hh" #include "TPushParser.hh" @@ -36,12 +60,21 @@ TPushParser::reset() if (factory) factory->documentModified(doc); } -std::string -TPushParser::PRIME() const +TNode +TPushParser::PRIME() { const TDictionary::Entry entry = dictionary.find("prime"); - if (entry.cls == TDictionary::OPERATOR) return entry.value; - else return "?"; + if (entry.cls == TDictionary::OPERATOR) + { + TNode op = doc.createO(entry.value, nextId++); + op["name"] = "prime"; + return op; + } + else + { + TNode op = doc.createO("?", nextId++); + return op; + } } bool @@ -433,7 +466,7 @@ bool TPushParser::isPrimes(const TNode& node) const { assert(node); - return node.isG() && node.last() && node.last().is("o") && node.last()["val"] == PRIME(); + return node.isG() && node.last() && node.last().is("o") && node.last()["name"] == "prime"; } bool @@ -445,14 +478,14 @@ TPushParser::do_apostrophe() { if (prev.isSp() && prev[1] && isPrimes(prev[1])) { - prev[1].append(doc.createO(PRIME(), nextId++)); + prev[1].append(PRIME()); return true; } else if (prev.isSb() && prev[0] && prev[0].isSp() && prev[0][1] && isPrimes(prev[0][1])) { - prev[0][1].append(doc.createO(PRIME(), nextId++)); + prev[0][1].append(PRIME()); return true; } else @@ -462,7 +495,7 @@ TPushParser::do_apostrophe() prev.replace(elem); elem.append(prev); elem.append(g); - g.append(doc.createO(PRIME(), nextId++)); + g.append(PRIME()); return true; } }