como desarrollar un nuevo lenguaje de programación en prolog


26 de Septiembre del 2019

hola 

estoy investignado como hacer un nuevo lenguaje de progamacion pero usando prolog, es decir, poder realizar operaciones y consultas con mis propios terminos Eje: write(X)  que se pueda decir Escribe(X).


David Carrero
12 de Agosto del 2026

Depende de qué tipo de sintaxis nueva quieras exactamente. Hay dos casos distintos y se resuelven de forma diferente en Prolog:

Caso 1: solo quieres un nombre distinto para un predicado ya existente (tu ejemplo de Escribe(X) en vez de write(X)). Esto no necesita nada especial, es un predicado normal que simplemente delega en el original:

escribe(X) :- write(X).

Con eso ya puedes escribir escribe(hola). en vez de write(hola). en cualquier programa que cargue este fichero.

Caso 2: quieres sintaxis de operador (por ejemplo, poder escribir X escribe en vez de escribe(X), con la palabra después del argumento, como si fuera un operador postfijo). Para esto sí necesitas op/3:

:- op(700, xf, escribe).
escribe(X) :- write(X).

El 700 es la prioridad (cuanto más bajo, más se liga el operador), y xf indica que es postfijo y no asociativo. Con eso, X escribe se interpreta internamente exactamente igual que escribe(X), es solo azúcar sintáctico que el lector de Prolog reescribe antes de evaluar la cláusula.

Para un "lenguaje nuevo" completo (varios términos con su propia sintaxis) normalmente se combinan varias declaraciones op/3 con predicados normales por debajo, no hace falta nada más exótico que eso salvo que quieras cambiar la gramática de forma mucho más profunda (ahí ya entrarías en DCGs, que es otra historia).

David