Pular para o conteúdo principal

Postagens

Mostrando postagens de 2013

[Lua] - Como fazer um parser em Lua

Um parser básico (leitor de arquivo de configuração) em Lua:

file = io.open("file", "r")
all = file:read("*all")
file:close() for line in string.gmatch(all, "([^\n]+)") do
        if string.match(line,"^%a") then
                --print(line)
                for key, value in string.gmatch(line,"(%w*)%s*=%s*(.*)") do
                        print ("Parametro: "..key.." valor ".. value)
                end
        end
end 

O arquivo de configuração de exemplo:
#Version specification
version=1
# base directory
dominio="teste.local"


O resultado do parser sendo executado:
alplab:~$ lua lua_read_file
Parametro: version valor 1
Parametro: dominio valor "teste.local"

As linhas de comentário foram ignoradas e os valores dos parâmetros lidos com sucesso. Mas este parse é bem básico. Precisa ainda, por exemplo, verificar se o arquivo existe mesmo e outros ajustes finos.
:wq!

[Lua] - Escrevendo em Arquivos

Introdução ao Assembly

Faz um bom tempo que não posto nada aqui. Bem, estou de volta. Tenho estudado Assembly e C com foco em (in)segurança.
Vamos começar com um programa simples em C e depois o escreveremos em Assembly. segue:
alacerda@labnix86:~/code/c$ cat hw.c #include <stdio.h> #include <unistd.h> #include <stdlib.h>
int main() {    char msg[] = "Programa em C\n";    write(1,msg,sizeof(msg));    exit(3); } alacerda@labnix86:~/code/c$ gcc hw.c -o hw alacerda@labnix86:~/code/c$./hw Programa em C
alacerda@labnix86:~/code/c$ echo $? 3 alacerda@labnix86:~/code/c$
O programa acima apenas exibe uma string na tela e sai com o código de retorno 3. Se queremos fazer o mesmo programa em Assembly vamos precisar: Definir uma stringEscrever a String na telaSair com o código 3 Vejamos o resultado e logo abaixo explicarei como chegamos a ele:
alacerda@labnix86:~/code/asm$ cat hw.s .section .data    msg: .string "Programa em Assembly\n"    tam: .long . - msg
.globl _start
_start:    mov $4,%eax    mov $1…