sdl.SDL_SetVideoMode (800, 600, 16, 0); // color 16
sdl.SDL_Delay (3000);
sdl.SDL_Quit ();
OBS:
Nas próxima versão vou mudar o nome da word ( import ) para não confrontar com o modo WEB.
4. Re: Projeto Sammer Language atualizado !
gokernelusa Linux Mint
Post recolhido
Enviado em 25/08/2018 - 12:17h
Projeto atualizado:
01: if
02: for
03: function
04: # ifdef
05: # endif
06: console.log();
OBS: Não testei no Linux ... soneca ... ;)
Exemplo:
//-----------------------------------------------
//
// Module example using SDL 1.x
//
//-----------------------------------------------
//
int data = 500;
#ifdef WIN32
module ("SDL", "sdl"); // in Windows: "SDL.dll"
#endif
#ifdef __linux__
module ("libSDL", "sdl"); // in Linux: "libSDL.so"
#endif
data = sdl.SDL_SetVideoMode (800, 600, 16, 0); // color 16
sdl.SDL_Delay (3000);
sdl.SDL_Quit ();
display (data);
//-----------------------------------------------
5. Re: Projeto Sammer Language atualizado !
gokernelusa Linux Mint
Post recolhido
Enviado em 25/08/2018 - 17:40h
OPS !!!
Bug encontrado e corrigido no modo JIT !
No arquivo: src/asm.c
Na funcao: static void asm_change_jump (ASM *a);
Falta essa parte:
case ASM_JUMP_JNE:
{
int r = label_pos - jump_pos - 2;
if (r == (char)r) { // 2 bytes
// 75 08 jne 4012b1 < _code + number >
//
*(char*)(a->code+jump_pos) = 0x75;
*(char*)(a->code+jump_pos+1) = r;
} else {
// 0f 85 85 ed bf ff jne 401293 < _code + number >
//
*(char*)(a->code+jump_pos) = 0x0f;
*(char*)(a->code+jump_pos+1) = 0x85;
*(int*) (a->code+jump_pos+2) = (int)(label_pos - jump_pos - 6);
}
}
break;
Um código como esse não rodaria corretamente:
int i = 100;
if (!i) {
printf ("Value i: %d\n", i);
}
Já atualizado no github !!!
6. Re: Projeto Sammer Language atualizado !
tiago4171usa Arch Linux
Post recolhido
Enviado em 25/08/2018 - 17:46h
Olá amigo, gostaria de saber qual o propósito principal do projeto. Não sou desenvolvedor mas tenho alguns amigos que podem se interessar pelo seu projeto.
Se puder me explicar melhor eu ficaria grato.
Obrigado
---
"Pessoas sérias procedem com cautela"
7. Re: Projeto Sammer Language atualizado !
gokernelusa Linux Mint
Post recolhido
Enviado em 26/08/2018 - 02:00h
Olá "tiago4171" !
Esse projeto tem como objetivos:
01: Criar uma linguagem que use pouca codificação para fazer algo;
a: Exemplo para simplesmente imprimir Hello, usa assim:
"Hello";
OBS: não conheço nenhuma linguagem que faça isso ... simples né ?
b: Para rodar na WEB e como programa("compilado"), só precisaria algo como simplesmente isso:
struct LEXER {
char *text;
char name [LEXER_NAME_SIZE];
char token [LEXER_TOKEN_SIZE];
//
int pos; // text [ pos ]
int tok;
int line;
int level; // in: '{' level++; | in '}' level--;
};
//-------------------------------------------------------------------
//
// return tok number or 0.
//
//-------------------------------------------------------------------
//
int lex (LEXER *l) {
register char *p;
register int c;
int next; // next char
p = l->token;
*p = 0;
top:
//
// aqui c "pega" o valor ... mas nao incrementa a "texto" posicao
//
c = l->text[ l->pos ];
//############## REMOVE SPACE #############
//
if (c <= 32) {
if (c == 0) {
l->tok = 0;
return 0;
}
if (c == '\n') l->line++;
l->pos++; //<<<<<<<<<< increment position >>>>>>>>>>
goto top;
}
//################ STRING #################
//
if (c == '"') {
l->pos++; // '"'
//
// acumula o "string"
//
// OBS: se o string for maior que o tamanho do ( LEXER->token ) ... vai dar "problema" ... ENTENDE ?
//
//
while ((c=l->text[l->pos]) && c != '"' && c != '\r' && c != '\n') {
l->pos++;
*p++ = c;
}
*p = 0;
if (c=='"') l->pos++; else printf ("String erro\n");
l->tok = TOK_STRING;
return TOK_STRING;
}
//########## WORD, IDENTIFIER ... #########
//
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == '_') {
for (;;) {
c = l->text[l->pos];
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '_') {
l->pos++;
*p++ = c;
} else break;
}
*p = 0;
if (!strcmp(l->token, "int")) { l->tok = TOK_INT; return TOK_INT; }
if (!strcmp(l->token, "if")) { l->tok = TOK_IF; return TOK_IF; }
if (!strcmp(l->token, "for")) { l->tok = TOK_FOR; return TOK_FOR; }
if (!strcmp(l->token, "break")) { l->tok = TOK_BREAK; return TOK_BREAK; }
if (!strcmp(l->token, "function")) { l->tok = TOK_FUNCTION; return TOK_FUNCTION; }
l->tok = TOK_ID;
return TOK_ID;
}
//################# NUMBER ################
//
if (c >= '0' && c <= '9') {
for (;;) {
c = l->text[l->pos];
if ((c >= '0' && c <= '9') || c == '.') {
l->pos++;
*p++ = c;
} else break;
}
*p = 0;
l->tok = TOK_NUMBER;
return TOK_NUMBER;
}