Tutoriales o introducciones para escribir un lenguaje de scripting simple?

Sé que hay algunas preguntas flotando por aquí sobre el tema, pero era difícil encontrar algo útil para lo que busco …

También sé que probablemente terminará siendo bastante la tarea para completar, pero realmente quiero hacer un lenguaje de scripting simple para los motores de juego … Quiero usarlo en C + + y mis motores de juegos Android Java … pero yo no No sé por dónde empezar … He intentado buscar tutoriales en línea, pero mucho requiere convertir cosas a código de bytes, máquinas virtuales y tal …

Realmente sólo quiero crear un lenguaje de scripting simple que se puede leer desde el motor, tienen un simple "si / else" lógica … funciones simples que se pueden llamar de otros scripts y así sucesivamente … Tal vez incluso más simple para las primeras Versiones … Realmente no sé por dónde empezar, pero sé que esto es algo que necesito para comenzar a estudiar y entender.

Si alguien me podría señalar en la dirección correcta y señalar algunos enlaces a muy simple "hacer un lenguaje de scripting simple para los juegos" tipo de tutorial o incluso señalar algunos conceptos clave que debería mirar en … Me gustaría ser muy agradecido .

Preferiría un lenguaje de scripting basado en C minimalista, pero supongo que los detalles entrarán en él una vez que haya aprendido más sobre él.

Gracias por cualquier ayuda que alguien pueda dar.

He intentado buscar tutoriales en línea, pero requiere mucho convertir las cosas a código de bytes, las máquinas virtuales y tales

Sí. Este es realmente el enfoque, incluso para un lenguaje simple y muerto. Ejecutar el código fuente directamente será mucho más complicado, la forma en que esto se hace es primero analizar el código fuente y digerirlo en código de byte, a continuación, tener una máquina virtual interpretar el código de bytes.

Es posible que desee ver idiomas existentes para aprender acerca de su diseño.

Este tutorial de flipcode construye un lenguaje sencillo e incluye todo el código, por lo que podría ser útil.

También puede echar un vistazo al código fuente de Lua .

Parte de mi trabajo es mantener un lenguaje de scripting de juegos propietario. No soy consciente de ningún "cómo-a" libros sobre el tema en su sentido estricto. Hay un interesante artículo de Bruce Wilcox sobre la escritura de tales idiomas. No discute el detalle de la implementación, pero entra algo en el proceso de diseño.

http://www.gamasutra.com/view/feature/1570/reflections_on_building_three_.php

Escribir un lenguaje de scripting es como escribir cualquier idioma e implica todos los mismos principios y preguntas de diseño. Necesita pensar en qué conceptos debe girar su lenguaje, necesita definir una gramática, entonces necesita escribir un compilador o traductor y / o un intérprete. Que usted elige y los detalles de sus implementaciones son totalmente de usted, y no hay una o mejor manera de lograr estas cosas.

Hay formas estándar de pensar cuando se trata de analizar sintaxis y definir gramáticas de lenguaje. Las expresiones regulares son su amigo aquí. Afortunadamente, C ++ 11 incluye la librería <regex> (originalmente de boost). Podría ayudar a recoger un libro en los compiladores para empezar en los conceptos importantes, si realmente quieres entrar en el tema en profundidad. Cuando estaba en la universidad tomando un curso de compiladores, este era mi libro de texto, que he guardado conmigo hasta el día de hoy, así que lo recomiendo.

http://www.amazon.com/Compilers-Principles-Techniques-Alfred-Aho/dp/0201100886/ref=sr_1_2?ie=UTF8&qid=1326618572&sr=8-2

Escribir un idioma es un maravilloso ejercicio en informática. Sin embargo, si esto es para un proyecto o producto real, entonces como otros que ya han comentado, mi consejo profesional es: No lo hagas si realmente no tienes que hacerlo. Esta es una enorme inversión de tiempo potencial que usted está considerando, y usted tiene que preguntarse: ¿Qué beneficios obtendré de mi propio idioma que no puedo encontrar en los idiomas existentes libres de uso como Lua y Python, y Son los beneficios de los meses de tiempo extra que va a tomar para implementar?

Y no olvides las herramientas. Si está escribiendo un idioma que desea que otros utilicen, necesita mucha documentación y herramientas, herramientas y herramientas. Es casi seguro que desea un depurador de nivel de origen al menos, y escribir un buen depurador puede tomar tanto tiempo como escribir el propio lenguaje!

Si todo lo que quieres es un lenguaje para la lógica del juego de prototipado rápido, entonces Lua es probablemente más que adecuado para sus necesidades, y viene con un montón de documentación existente, la literatura y las herramientas.

Unos cuantos artículos viejos siguen siendo buenos leídos, si usted los puede encontrar:

  • M. Abrash, D. Illowsky, "Desarrolla tus propios minilenguajes con mini-intérpretes", Dr. Dobb's Journal 14 (9) (Sep 1989) 52-72.
  • J. Bentley, "Programación de perlas: pequeñas lenguas", Comunicaciones de la ACM 29 (1986) 711-721.
  • D. Betz, "Embedded languages", Byte 13 # 12 (Nov 1988) 409-416.
  • D. Betz, "Su pequeño lenguaje orientado a objetos", Dr. Dobb's Journal 16 (9) (Sep 1991) 26-33.
  • N. Franks, "Añadiendo un lenguaje de extensión a su software", Dr. Dobb's Journal 16 (9) (Sep 1991) 34-43.
  • R. Valdés, "Pequeñas lenguas, grandes interrogantes", Dr. Dobb's Journal 16 (9) (Sep 1991) 16-25.

Véase también Bob: Un pequeño lenguaje orientado a objetos de Betz. Las últimas fuentes de BOB están disponibles en http://www.xlisp.org/ .

  • Pasar referencias a la intención de la actividad
  • Utilizar Qt / C ++ para llamar al código Java a través de JNI. FindClass no encuentra clase
  • Android convierte matriz de bytes de la API de cámara para colorear objeto Mat openCV
  • Biblioteca nativa de C ++ - ¿quién tiene que liberar la memoria y cómo?
  • Biblioteca OCR para reconocer números en el dispositivo de medición
  • Cómo construir / utilizar sharpen de XobotOS?
  • ¿Cómo puedo compilar mi propia biblioteca de C ++ para Android?
  • Rápido abrir miles de archivos en linux / c
  • ¿Qué es Native Android con java?
  • Problemas al escalar una imagen YUV utilizando la biblioteca libyuv
  • ¿Hay una manera de escribir iphone y aplicaciones de Android usando Visual Studio y c #?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.