LLVM Pascal

66 views
Skip to first unread message

Wanderlan

unread,
Aug 25, 2010, 9:31:52 AM8/25/10
to llvm-pascal
Wanderlan,

Primeiramente, desculpe me se já nos conhecemos. Seu nome me é bem
familiar, e descobri que participamos juntos de alguns eventos no
passado (lembro da sua palestra de prevalência em algumas das Borcons)
mas não lembro se já conversamos.

Encontrei por acaso esses dias o seu projeto llvm-pascal enquanto
procurava informações sobre llvm. Não sou um expert em compiladores,
mas conheço o suficiente (para ser perigoso) e me interesso pelo
assunto. Pela minha agenda não posso me oferecer para ajudar na
implementação, mas vou ficar de olho pelo caminho e oferecer uns
palpites (se não se importar). Conheço até que bem as intricacias mais
arcanas da linguagem e da RTL (do delphi, não muito do freepascal) e
acho que posso dar um apoio legal.

Não resisti em baixar os fontes do SVN e testar aqui. Senti um pouco
de falta de alguns casos de teste mostrando o que o parser já suporta.
Idealmente seria bom casos simples para rodar sempre evitando
regressões. Fora alguns casos que capturei nos casos de teste anexos,
acho que ele já funciona muito bem:

2251661 lines, 5.812 seconds, 17.9 klps.
(manipulando os fontes para remover muitas ocorrências dos exemplos
anexos)

Outra coisa: ao compilar vários arquivos em sequência, se um arquivo
tiver um comentário não terminado, ele mantém esse estado ao passar
para o próximo gerando erros indevidos neste. Também tive problemas ao
receber um #$1A na ultima linha de arquivos e o scanner continuar
tentando ler linhas mesmo depois de EOF. Contornei os dois casos para
com a seguinte alteração no NextToken:


if EOF(Arq) and ((LenLine = 0) or (Line = #$1A)) then begin
if FToken.Lexeme = 'End of Source' then
FEndSource := true
else
FToken.Lexeme := 'End of Source';
FEndComment := EmptyStr;
exit;
end;

De qualquer forma, só quis passar esses casos e avisar vou estar de
olho. :)

Abraços,

-- Leonel

Wanderlan

unread,
Aug 25, 2010, 9:33:55 AM8/25/10
to llvm-pascal
Olá Leonel,

>>Primeiramente, desculpe me se já nos conhecemos. Seu nome me é bem
>>familiar, e descobri que participamos juntos de alguns eventos no
>>passado (lembro da sua palestra de prevalência em algumas das Borcons)
>>mas não lembro se já conversamos.

Sim sua memória é boa, trocamos cartões num desses Borcons.

>>Encontrei por acaso esses dias o seu projeto llvm-pascal enquanto
>>procurava informações sobre llvm. Não sou um expert em compiladores,
>>mas conheço o suficiente (para ser perigoso) e me interesso pelo
>>assunto. Pela minha agenda não posso me oferecer para ajudar na
>>implementação, mas vou ficar de olho pelo caminho e oferecer uns
>>palpites (se não se importar). Conheço até que bem as intricacias mais
>>arcanas da linguagem e da RTL (do delphi, não muito do freepascal) e
>>acho que posso dar um apoio legal.

Legal. Suas sugestões e críticas são muito bem vindas!!!

Estou compilando prioritariamente a RTL do Delphi 2006.
Exatamente os fontes com a parte mais intrincada, chata e arcana da
sintaxe do Object Pascal.

>>Não resisti em baixar os fontes do SVN e testar aqui. Senti um pouco
>>de falta de alguns casos de teste mostrando o que o parser já suporta.
>>Idealmente seria bom casos simples para rodar sempre evitando
>>regressões.

Vou usar o teste suíte do Free Pascal para isso. Isso está definido na
página inicial do projeto. Deve estar no SVN até dezembro.

>>Fora alguns casos que capturei nos casos de teste anexos, acho que ele
>>já funciona muito bem:

>>2251661 lines, 5.812 seconds, 17.9 klps.
>>manipulando os fontes para remover muitas ocorrências dos exemplos
>>>>anexos)

O que você compilou? Qual a configuração da sua máquina

>>Outra coisa: ao compilar vários arquivos em sequência, se um arquivo
>>tiver um comentário não terminado, ele mantém esse estado ao passar
>>para o próximo gerando erros indevidos neste. Também tive problemas ao
>>receber um #$1A na ultima linha de arquivos e o scanner continuar
>>tentando ler linhas mesmo depois de EOF. Contornei os dois casos para
>>com a seguinte alteração no NextToken:


>> if EOF(Arq) and ((LenLine = 0) or (Line = #$1A)) then begin
>> if FToken.Lexeme = 'End of Source' then
>> FEndSource := true
>> else
>> FToken.Lexeme := 'End of Source';
>> FEndComment := EmptyStr;
>> exit;
>> end;

>>De qualquer forma, só quis passar esses casos e avisar vou estar de olho.

Vou commitar sua sugestão assim que tiver tempo. Este projeto ainda
tem muito prazo...

Estava esperando um contato destes para criar o fórum.
Vou tomar a liberdade de inaugurar o fórum com sua mensagem ;)

[]s
Wanderlan
Reply all
Reply to author
Forward
0 new messages