Vytvoření překladového programu – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vytvoření překladového programu – C / C++ – Fórum – Programujte.comVytvoření překladového programu – C / C++ – Fórum – Programujte.com

 

Sheldon0
Newbie
7. 5. 2016   #1
-
0
-

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.

Nahlásit jako SPAM
IP: 141.0.12.–
BDS+3
Věrný člen
7. 5. 2016   #2
-
0
-

#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.

Nahlásit jako SPAM
IP: 185.69.69.–
W11 :)
Sheldon0
Newbie
8. 5. 2016   #3
-
0
-
Nahlásit jako SPAM
IP: 82.145.221.–
BDS
~ Anonymní uživatel
753 příspěvků
8. 5. 2016   #4
-
0
-

#3 Sheldon
sice nechápu smysl tvého snažení, ale se kterou částí nedokážeš poradit?

(určitě ti to tu nikdo nebude dělat komplet)

Nahlásit jako SPAM
IP: 185.69.69.–
Sheldon0
Newbie
8. 5. 2016   #5
-
0
-

no mě jde o to jak ten JS kod upravit tak aby mito nepřekladalo jen slova ale třeba i věty...Nechci aby mi to někdo udělal to bych byl proti svému snažení jen mi stačí poradit co tam třeba přidat nebo změnit.

Nahlásit jako SPAM
IP: 141.0.12.–
Kit+15
Guru
8. 5. 2016   #6
-
0
-

#5 Sheldon
Ty chceš Javascript interpretovat v C++?

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Sheldon0
Newbie
8. 5. 2016   #7
-
0
-

o c++ jsem nic nepsal..nebo ano?...

Nahlásit jako SPAM
IP: 141.0.12.–
Kit+15
Guru
8. 5. 2016   #8
-
0
-

#7 Sheldon
Napsal jsi to do kategorie C++ a z toho soudím, že to chceš řešit v C++ a ten Javascript jsi uvedl jen jako ukázku toho, jak by se to mělo chovat.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Sheldon0
Newbie
8. 5. 2016   #9
-
0
-

ouuu tak to se omlouvám že jsem to dal do špatného vlákna, nic méně to by také mohlo být schůdné řešení, ale asi by to bylo pracnější....

Nahlásit jako SPAM
IP: 141.0.12.–
peter
~ Anonymní uživatel
4016 příspěvků
9. 5. 2016   #10
-
0
-

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.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:2dde:c0...–
peter
~ Anonymní uživatel
4016 příspěvků
9. 5. 2016   #11
-
0
-

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>
Nahlásit jako SPAM
IP: 2001:718:2601:26c:2dde:c0...–
Sheldon0
Newbie
9. 5. 2016   #12
-
0
-

#11 peter
diky ale tohle je script na nejaký chat :-D

Nahlásit jako SPAM
IP: 82.145.221.–
Sheldon0
Newbie
9. 5. 2016   #13
-
0
-

Tak jsem o tom přemýšlel a myslím že nejlepší bude když se to vytvoří v C-ku

Nahlásit jako SPAM
IP: 82.145.221.–
Sheldon0
Newbie
9. 5. 2016   #14
-
0
-

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;
}
Nahlásit jako SPAM
IP: 82.145.221.–
vitamin+8
Grafoman
9. 5. 2016   #15
-
0
-

#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>
Nahlásit jako SPAM
IP: 195.28.77.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Sheldon0
Newbie
9. 5. 2016   #16
-
0
-

#15 vitamin
tole asi není to co potřebuji...potřebuji aby sem si tam mohl zapsat databázy slov které se pak budou překládat, ale dík za snahu

Nahlásit jako SPAM
IP: 82.145.221.–
peter
~ Anonymní uživatel
4016 příspěvků
9. 5. 2016   #17
-
0
-

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 :)

Nahlásit jako SPAM
IP: 2001:718:2601:26c:2dde:c0...–
peter
~ Anonymní uživatel
4016 příspěvků
9. 5. 2016   #18
-
0
-

teda, oprava, tam ma byt text=ahoj
alert(link('ahoj','http://yko.cz')); // vyrobi <a rel="nofollow" rel="nofollow" href="yko.cz">ahoj</a>

Nahlásit jako SPAM
IP: 2001:718:2601:26c:2dde:c0...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 38 hostů

Podobná vlákna

Vytvoření programu — založil Kubiku

Vytvoření repete — založil Montezo

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý