2010-03-16 13 views
2

J'essaie de créer un langage de script par moi-même (ce n'est pas forcément parfait - bien que ce soit génial si c'était le cas), surtout parce que je le fais pour m'amuser et apprendre comment ils sont créés etc.Nouveau langage de script

Selon la réponse ici: Creating a scripting language ce que je suis censé regarder est: http://msdn.microsoft.com/en-us/library/xawadt95%28VS.85%29.aspx. Mais, je n'ai absolument aucune idée de ce que cette page MSDN est sur le sujet.

Quelqu'un peut-il vous aider?

P.S. Existe-t-il des langages de script gratuits/open source qui ciblent l'hôte Windows Script, qui disposent également d'un code source complet avec lequel je peux jouer?

Merci

+0

duplication possible de [Ecriture d'une langue pour Windows Scripting Host (WSH)] (http://stackoverflow.com/questions/174240/writing-a-language-for-the-windows-scripting-host- wsh) – Helen

+0

Non. Je n'étais pas satisfait des réponses là-bas, pas de ce que je cherchais. Je connaissais déjà ces sites répertoriés. –

+0

'même si ce serait génial si c'était [parfait]' De grandes attentes là-bas hein? :) –

Répondre

4

J'ai commencé à écrire un guide sur la façon d'implémenter votre propre moteur de langage pour Windows Script Host, mais j'ai manqué de souffle et je n'ai jamais fini.

http://blogs.msdn.com/ericlippert/archive/tags/SimpleScript/default.aspx

+1

Effrayant. Pas surpris, vous avez manqué de vapeur! Mais c'était intéressant à regarder; Merci. +1 –

+0

Merci tas pour le lien, semble intéressant! Je suis prêt à aller là-bas maintenant pour le vérifier :-) –

3

Si vous faites cela pour le plaisir et pour apprendre comment les langues sont créées, je vous conseille de rester loin, loin de Windows Script Host. Au lieu de cela, essayez d'apprendre à partir de meilleurs exemples. Une bonne première étape serait de vous mettre à http://www.lua.org/, d'étudier la langue, de lire comment elle est implémentée et de lancer la vôtre. Un autre langage qui est horrible d'un point de vue linguistique, mais très facile à mettre en œuvre est Tcl. Commencez avec le papier Usenix original d'Ousterhout.

Je voudrais pouvoir vous recommander un bon livre sur la conception et la mise en œuvre de votre propre langage de programmation. Je n'en ai jamais vu. (J'ai vu quelques mauvais livres dans ce sens, mais ne voulant pas manquer de respect aux auteurs, je ne vais pas les identifier.) Mais si vous pouvez passer du bon temps dans une bonne bibliothèque universitaire, vous serez en mesure de trouver des papiers. Vous pourriez également trouver intéressant de consulter notre livre Friedman and Wand Essentials of Programming Languages — bien que ce soit très technique, il a quelques bonnes choses à propos de l'écriture d'interprètes. Il y a aussi un bon (mais très vieux) livre de P. J. Brown appelé Writing Interactive Compilers and Interpreters.

+2

Windows Script Host n'est pas une langue, c'est un hôte de script. Les moteurs de script standard qu'il prend en charge sont VBScript et JScript, mais il existe également un moteur Perl tiers. Ce qui me laisse perplexe, c'est pourquoi Windows Script Host est un problème dans un sens ou dans l'autre.Normalement, vous créez un moteur de script doté d'une API lui permettant d'être intégré dans un certain nombre de programmes. Ce lien MSDN pointe vers une discussion de l'API qu'un moteur Windows Script doit prendre en charge. – Bob77

+0

@Bob: En effet. C'est juste que si OP a du mal à suivre le lien MSDN, alors j-t-s est probablement mieux de construire quelque chose de autonome et d'acquérir de l'expérience avant de commencer à se battre avec l'API. J'ai eu un peu de mal à me frayer un chemin à travers la documentation de l'API moi-même, et je ne suis pas un débutant ... –

+0

Merci, Norman :) –

0

La façon easist de faire un interrupteur simple script est par spliting votre code source par le caractère de saut de ligne dans un tableau et le vélo à travers chaque membre. Voici un exemple chaîne source = @ " impression Bonjour monde! arrêt "); foreach (chaîne a dans source.split ('\ n')) { si (a.StartsWith ("print")) { Console.WriteLine (a.Substring (6)); } si (a == "stop") { Console.ReadLine(); }