Zdravím mohl by mi někdo poradit jak vytvořit program do kterého něco zadám a on to vykoná...Resp. zadám do něj např. "tělo" a on mi to přeloží do "body".Chtěl bych si vytvořit něco jako HTML jazyk do kterého bych nemusel tagy zadávat v angl. ale v českém jazyce.
Fórum › C / C++
Vytvoření překladového programu
#1 Sheldon
Jestli to není vtip, tak se na to rovnou vykašli. Budeš s tím mít víc práce, než kdyby ses učil html. Navíc na to, abys vytvořil nějaký nový typ html, se stejně budeš muset naučit klasické html (nebo něco) do čeho výsledek přeložíš, aby se tvé výtvory kamarádily s prohlížeči. Takže pro tebe to nebude mít žádný přínos, a s tím, že tvůj jazyk bude používat někdo jiný bych už vůbec nepočítal.
#2 BDS
myslím že té práce až tak nebudu mít stačí když se koukneš:http://kod.djpw.cz/orxb
Hele, pokud chces resit strukturu tagu, tak to chce nejaky parsovaci program. Dal by se pouzit high-light syntax kod. Ten program ti to pak rozdeluje na tagy, parametry, text a jen bys upravil, ze to nema zabarvovat, ale prekladat.
Mozna by se dal take vyuzit JSON. Ktery umi prevest string '{tag:text}' na js pole a zpet.
A kdysi jsem si psal renderovaci program, protoze mne stval bordel v html, kdyz ruzne tagy maji ruzna pravidla pro zapis stejne vlastnosti. Takovy priklad:
input.value <input value="text">,
textarea.value <textarea>text</textarea> a
div.innerHTML <div>text</div>
<script>
function drawhtml()
{
this.templates =
{
'input': '<input type="text" size="6" name="%%%name%%%" value="%%%value%%%" onchange="%%%func%%%"/>',
'th' : "\n"+'<th>%%%text%%%<\/th>',
'td' : "\n"+'<td%%%bg%%%%%%fg%%%>%%%text%%%<\/td>',
}
this.draw = function (str,data)
{
for (i in data)
{
str = str.replace('%%%'+i+'%%%',data[i]);
}
return str;
}
this.drawTpl = function (name,data)
{
if (this.templates && this.templates[name])
{
return(this.draw(this.templates[name],data));
}
return '';
}
}
myrender = new drawhtml();
alert(myrender.drawTpl('td',{'bg':1,'fg':2,'text':'ahoj'}));
'td' je nazev templatu, tagu a to dalsi jsou parametry. Ale ty chces nejspis i ty parametry pocestit, tak si to budes muset doplnit.
Jeste jsem objevil jakysi dalsi kod na renderovani. Ale nevim, jak moc je to funkcni. Treba se ti to bude hodit.
<script>
function serialize(data,separ)
{
var arr,key;
var sep = separ ? separ : [' ','=','"'];
arr = [];
for (key in data)
{
arr[arr.length] = data[key]!='' ? key + sep[1] + sep[2] + data[key] + sep[2] : '';
}
return arr.join(sep[0]);
}
function classHtml()
{
var that = this;
//caption:function(){},thead:function(){},tr:function(){},th:function(){},td:function(){},tbody:function(){},tfoot:function(){},
this.func = {
link :function(text,url,params){params = that.check(params); params['href'] = url; return that.draw('double','a',params,text);},
anchor :function(name,params){params = that.check(params); params['name'] = name; params['id'] = name; return that.draw('double','a',params);},
code :function(text,params){return that.draw('double','pre',params,text);},
image :function(url,params){params = that.check(params); params['src'] = url; return that.draw('single','img',params);},
audio :function(){},
video :function(){},
text :function(text,params){return that.draw('input','text',params,text);},
textarea:function(text,params){return that.draw('double','textarea',params,text);},
hidden :function(text,params){return that.draw('input','hidden',params,text);},
check :function(text,params){return that.draw('input','checkbox',params,text);},
radio :function(text,params){return that.draw('inputlabel','radio',params,text);},
checkgroup :function(data,params){},
radiogroup :function(data,params){},
button :function(text,params){return that.draw('double','button',params,text);},
buttonjs:function(text,params){return that.draw('input','text',params,text);},
div :function(text,params){return that.draw('double','div',params,text);},
span :function(text,params){return that.draw('double','span',params,text);},
header :function(text,params){return that.draw('double','h1',params,text);},
p :function(text,params){return that.draw('double','p',params,text);},
br :function(params){return that.draw('single','br',params);},
hr :function(params){return that.draw('single','hr',params);},
sub :function(text,params){return that.draw('double','sub',params,text);},
sup :function(text,params){return that.draw('double','sup',params,text);},
list :function(){}, //ul //ol , li
table :function(data,params){},
form :function(text,params){return that.draw('double','form',params,text);},
label :function(text,params){return that.draw('double','textarea',params,text);},
select :function(data,params){},
//option :function(){},
fieldset:function(text,params){return that.draw('double','fieldset',params,text);},
legend :function(text,params){return that.draw('double','legend',params,text);},
iframe :function(url,params){params = that.check(params); params['src'] = url; return that.draw('double','iframe',params,text);},
base :function(params){return that.draw('single','hr',params);},
object :function(){}
//script :function(str){}
};
this.check = function (params)
{
return (params && typeof(params)=='object' ? params : {});
};
this.draw = function (type,name,params,text)
{
params = this.check(params);
switch (type)
{
case 'single' : return '<'+name+' ' + serialize(params) + '/>'; break; // single tag
case 'input' : return '<input type="'+name+'" ' + serialize(params) + '\/>'; break;
case 'inputlabel': return '<input type="'+name+'" ' + serialize(params) + '\/>'+this.draw('double','label', {onclick: params.onclick, title: params.title}, text); break;
case 'double' : return '<'+name+' '+serialize(params)+'>'+ text +'<\/'+name+'>'; break; // double tag
default : return '';
}
return '';
}
this.init = function ()
{
var i;
for(i in this.func)
{window[i] = this.func[i];}
}
this.init();
/*
this.templates =
{
'input': 'input type="text" size="6" name="%%%name%%%" value="%%%value%%%" onchange="%%%func%%%"/',
'th' : "\n"+'th%%%text%%%\/th',
'td' : "\n"+'td%%%bg%%%%%%fg%%%%%%text%%%\/td',
}
this.draw = function (str,data)
{
for (i in data)
{
str = str.replace('%%%'+i+'%%%',data[i]);
}
return str;
}
this.drawTpl = function (name,data)
{
if (this.templates && this.templates[name])
{
return(this.draw(this.templates[name],data));
}
return '';
}
*/
}
/*
myrender = new drawhtml();
alert(myrender.drawTpl('td',{'bg':1,'fg':2,'text':'ahoj'}));
*/
var html = new classHtml();
document.write(link('ahoj','http://yko.cz'));
document.write(header('Hlavicka'));
document.write(p('Hlavicka'));
/*this.tags = 'link,hook(anchor),image
code (pre)
check (checkbox)
input / button
'
,audio,video,text,hidden,radio,check'.split(',');
div,span,header,p,sub,sup,ul,li,table,caption,thead,tr,th,td,tbody,tfoot,form,label,select,option,fieldset,legend,
iframe,base,object,
br,hr
textarea
script,
'
this.tag_names = 'a,img'.split(',');
*/
</script>
možná by mi stačilo jen poradit kde mám v tomhle kódě chybu že mi to nepřekládá...
#include <utility>
#include <string>
#include <iostream>
#include <vector>
using namespace std;
int main () {
vector<pair<string, string> > translations;
translations.push_back(make_pair("tělo", "body"));
translations.push_back(make_pair("odstavec", "p"));
string line;
string content;
content = "";
while (getline(cin, line)) {
content += line+'\n';
}
for (vector<pair<string, string> >::iterator it = translations.begin() ; it != translations.end(); ++it) {
size_t index = 0;
while (true) {
index = content.find(it->first, index);
if (index == string::npos) {
break;
}
content.replace(index, it->first.length(), it->second);
index += it->second.length();
}
}
cout << content;
}
#14 Sheldon
Nahradzovanie slov ti nebude stačiť..
<html>
<tělo>
<a id="tělo" href="https://cs.wikipedia.org/wiki/T%C4%9Blo">Wiki: tělo</a>
<input id="tělo2" value="<tělo>">
</tělo>
</html>
Si asi nepochopil jeho prispevek. On ti vypsal html kod, ktery obsahuje slovo "
tělo" pouzite pokazde jinak: nazev tagu, text jineho tagu, js id dalsiho tagu.
Muj kod jsi evidentne take nepochopil :) yko.cz je tam jen href odkazu. Shodou okolnosti je to chat. Tak si tam dej seznam.cz.
Ten prvni kod ti dela to nahrazeni. Konkretne pro tebe by se to upravilo...
<script>
data = {telo:'body',radek:'tr'};
str = "<telo><radek>";
alert(str);
for (i in data)
{
str = str.replace('<'+i+'>','<'+data[i]+'>');
}
alert(str);
</script>
Ten druhy kod vytvari html tagy. Si tam zmen document.write na alert, pr:
var html = new classHtml();
alert(link('ahoj','http://yko.cz')); // vyrobi <a rel="nofollow" href="yko.cz">yko.cz</a>
Promin, ale jestli nejsi schopen z kodu urcit, co dela, tak mozna bude lepsi povesit programovani na hrebik :)
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Vytvoření programu — založil Kubiku
Vytvoření programu pro instalaci — založil JirkaX
Žádost o vytvoření práce v programu EdSim — založil Tomáš Podmanický
Hledám programátora k vytvoření testovacího programu pro PC — založil remmidemmi
Vytvoření repete — založil Montezo
Moderátoři diskuze