Dev - C++ - ¿Algun experto puede explicarme el funcionamiento de un intérprete en C++ para mi propio lenguaje?

 
Vista:
Imágen de perfil de Augusto Lautaro
Val: 16
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

¿Algun experto puede explicarme el funcionamiento de un intérprete en C++ para mi propio lenguaje?

Publicado por Augusto Lautaro (9 intervenciones) el 30/03/2020 03:59:35
Estoy intentando crear mi lenguaje de programación, ya van 3 intentos.
El intento uno: Funciono el texto, no se podian crear variables.
Intento 2: lo mismo que el intento 1 pero con un mecanismo diferente.
Intento 3: logré separar en tokens, y... eso fue todo.

El verdadero problema: Hay muchas cosas que no aprendí, como por ejemplo el uso de las clases, algo que vi mientras estudiaba otros códigos es la funcion continue(), me imagino que hay que crearla a mano...

Lo que necesito saber: Que conocimientos tengo que tener para crear el intérprete (o qué es lo que tengo que usar para crearlo)..

Muchas gracias!

MODIFICACIÓN
No quiero usar Flex, Bision u otra cosa similar. Quiero conocer todo el código
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

¿Algun experto puede explicarme el funcionamiento de un intérprete en C++ para mi propio lenguaje?

Publicado por Alfil (1444 intervenciones) el 30/03/2020 11:04:35
Las clases forman parte de la programación orientada a objetos, junto con la composición, la herencia, el polimorfismo y las plantillas de clase, son lo que hacen realmente poderoso el lenguaje C++.

Te aconsejaría que antes de embarcarte en un gran proyecto, te leas el libro Pensar C++, tomo 1 y 2, ambos están disponibles es esta misma web.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Algun experto puede explicarme el funcionamiento de un intérprete en C++ para mi propio lenguaje?

Publicado por Nacho (181 intervenciones) el 30/03/2020 15:19:33
No sé si hay alguien que entienda lo que quieres hacer.

Hacer un lenguaje de programación es fácil, no hay más que definir unas palabras clave, una sintaxis... Lo complicado es hacer un compilador para un sistema operativo de ese lenguaje. Un compilador es eso que traduce lo que escribes, que parece inglés, a lo que entiende un sistema operativo y un procesador.

Hacer un compilador de c es que tú tienes unas palabrias escritas en un lenguaje muy cercano al lenguaje tuyo y tienes que hacer un ejecutable para un sistema operativo. Tienes un código como:
1
2
3
4
5
6
7
8
9
int b=1;
MSG msg;
for (int i = 0; i < 100; i += b)
{
	GetMessage(&msg, 0, WM_KEYFIRST, WM_KEYLAST);
	if (i == 50) continue;
	if (i == 99) b = -1;
	if (i == 0)b = 1;
}

Y tienes que sacar algo como
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
00007FF676624A40  mov         dword ptr [rsp+20h],r9d
00007FF676624A45  mov         qword ptr [rsp+18h],r8
00007FF676624A4A  mov         qword ptr [rsp+10h],rdx
00007FF676624A4F  mov         qword ptr [rsp+8],rcx
00007FF676624A54  push        rbp
00007FF676624A55  push        rdi
00007FF676624A56  sub         rsp,698h
00007FF676624A5D  lea         rbp,[rsp+30h]
00007FF676624A62  mov         rdi,rsp
00007FF676624A65  mov         ecx,1A6h
00007FF676624A6A  mov         eax,0CCCCCCCCh
00007FF676624A6F  rep stos    dword ptr [rdi]
00007FF676624A71  mov         rcx,qword ptr [rsp+6B8h]
00007FF676624A79  mov         rax,qword ptr [__security_cookie (07FF676632188h)]
00007FF676624A80  xor         rax,rbp
00007FF676624A83  mov         qword ptr [rbp+650h],rax
00007FF676624A8A  lea         rcx,[__B61A17FB_RemoC++Exe@cpp (07FF67663A09Ah)]
00007FF676624A91  call        __CheckForDebuggerJustMyCode (07FF6766111B3h)
	int b=1;
00007FF676624A96  mov         dword ptr [b],1
	MSG msg;
	for (int i = 0; i < 100; i += b)
00007FF676624A9D  mov         dword ptr [rbp+74h],0
00007FF676624AA4  jmp         WinMain+73h (07FF676624AB3h)
00007FF676624AA6  mov         eax,dword ptr [b]
00007FF676624AA9  mov         ecx,dword ptr [rbp+74h]
00007FF676624AAC  add         ecx,eax
00007FF676624AAE  mov         eax,ecx
00007FF676624AB0  mov         dword ptr [rbp+74h],eax
00007FF676624AB3  cmp         dword ptr [rbp+74h],64h
00007FF676624AB7  jge         WinMain+0B5h (07FF676624AF5h)
	{
		GetMessage(&msg, 0, WM_KEYFIRST, WM_KEYLAST);
00007FF676624AB9  mov         r9d,109h
00007FF676624ABF  mov         r8d,100h
00007FF676624AC5  xor         edx,edx
00007FF676624AC7  lea         rcx,[msg]
00007FF676624ACB  call        qword ptr [__imp_GetMessageW (07FF6766374C8h)]
		if (i == 50) continue;
00007FF676624AD1  cmp         dword ptr [rbp+74h],32h
00007FF676624AD5  jne         WinMain+99h (07FF676624AD9h)
00007FF676624AD7  jmp         WinMain+66h (07FF676624AA6h)
		if (i == 99) b = -1;
00007FF676624AD9  cmp         dword ptr [rbp+74h],63h
00007FF676624ADD  jne         WinMain+0A6h (07FF676624AE6h)
00007FF676624ADF  mov         dword ptr [b],0FFFFFFFFh
		if (i == 0)b = 1;
00007FF676624AE6  cmp         dword ptr [rbp+74h],0
00007FF676624AEA  jne         WinMain+0B3h (07FF676624AF3h)
00007FF676624AEC  mov         dword ptr [b],1
	}
00007FF676624AF3  jmp         WinMain+66h (07FF676624AA6h)

¿Es eso lo que quieres?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 2
Ha disminuido su posición en 7 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

¿Algun experto puede explicarme el funcionamiento de un intérprete en C++ para mi propio lenguaje?

Publicado por Agustin (1 intervención) el 30/03/2020 15:24:24
Me parece que te falta mucha Cindor para lo que querés hacer, capo.

Empezá por hacer un Hello World, y entenderlo de verdad, y de ahí para adelante.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Augusto Lautaro
Val: 16
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

¿Algun experto puede explicarme el funcionamiento de un intérprete en C++ para mi propio lenguaje?

Publicado por Augusto Lautaro (9 intervenciones) el 30/03/2020 20:42:44
JAJAJA, gracias por el aporte, entiendo que creas que soy muy malo programando, yo tambien pensaría lo mismo de alguien que se mete en un proyecto así sin conocer las clases... Si entiendo la sintaxis, solo que estoy acostumbrado a los lenguajes mas nuevos y ni hablar del RTTI que me da vuelta todo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar