Thread: [Notes2-team] Corretor de erros
Brought to you by:
andersonrb
|
From: Thiago C. <fa...@nl...> - 2003-07-29 04:35:41
|
Primeiramente peço desculpas pela demora para me pronunciar mas lá vai
Minha idéia para análise de de erros do código seria:
O componente scaneia o código e busca por estruturas chaves que estariam
guardadas em uma base ex:
if(...){...}
for ... to ... do
begin
...
end;
ao encontrar uma palavra chave (if, for, while) ele virifica as possíveis
variações de código que podem aparecer. ex:
if ... then
if (...)...(...) then
e analiza a compatibilidade da estrutura encontrada, no caso de um erro no
código. ex:
if a==2 or b==3 then
cada palavra chave seria pesada e uma decisão do que fazer para tornar o
código
correto tomada. ex:
if == inicio de estrutura condicional
then == termino de estrutura condicional
or == ou lógico
a==2 E b==3 == possíveis condições da estrutura
modelo mais próximo conhecido if (...)...(...) then
ação = adicionar aparenteses às condições (a==2 e b==3)
para isso é necessário que haja conhecimento empírico sobre a linguagem,
nesse
ponto se mostra um problema que é criar as regras de verificação do código,
é
inviável criarmos todas então como elas vão ser chamadas de um arquivo basta
ser mais um XML para que o usuário as crie e melhore, ou mesmo uma interface
no
Notes quando uma estrutura desconhecida fosse encontrada, etc.
Infelismente eu creio que esta seria uma parte não muito facilmente
configurável do Notes pois ainda não consegui ver uma maneira muito pratica
de
declarar as estruturas de forma simplificada.
No máximo até esta quarta estarei enviando algum tipo de exemplo de como
seria
o funcionamento de forma mais detalhada, mas a teoria é mais ou menos essa,
ele "lê"
o código encontra o início de uma estrtura e pensa: se eu tenho um if então
preciso de
parâmetros e um then, depois disso verifica o resto da linha de código e
dependendo
do que encrontar faz as devidas alterações para que fique o mais compativel
possível
com as estruturas genéricas conhecidas.
Outra coisa, estava conversando com Anderson e sugeri o seguinte:
Inicialmente pensamos em fazer este componente em C++ pois meus
conhecimentos
em obj pascal não são muito extensos mas para que todos possam participar do
projeto desta parte acho que seria muito melhor fazer-lo em obj pascal e
assim
ter toda a equipe participando, mas para isso precisarei de muito mais
suporte de todos
entao...o que preferem C++ ou Obj Pascal?
Thiago Cavalcanti
|
|
From: Anderson R. B. <no...@ig...> - 2003-07-29 17:58:32
|
Eba!
O Thiago mandou o e-mail! :)
>O componente scaneia o c=F3digo e busca por estruturas chaves que estari=
am
>guardadas em uma base ex:
>
> if(...){...}
>
> for ... to ... do
> begin
> ...
> end;
>
T=E1, mas como a gente vai guardar isto num arquivo XML?
A =FAnica id=E9ia que tive foi algo assim:
<estrutura findkeyword=3D"if">
(*)\s{*}
</estrutura>
Em portugu=EAs: "quando a palavra-chave *"if"* for encontrada deve haver=
=20
um "*("*, seguido por um trecho com quaisquer
caracteres em qualquer n=FAmero*,* mais um *")"* seguido por caracteres=20
espa=E7os (espa=E7o, tab ou quebra de linha) e logo
depois um *"{"* seguido de um trecho com quaiquer caracteres e=20
finalmente mais um *"}"*".
Seria algo assim?
>Infelismente eu creio que esta seria uma parte n=E3o muito facilmente
>configur=E1vel do Notes pois ainda n=E3o consegui ver uma maneira muito =
pratica
>de
>declarar as estruturas de forma simplificada.
>
O que n=E3o der para ser configur=E1vel, n=E3o deu e ponto. De qualquer f=
orma=20
o Notes 2, pelos planos que temos
hoje, ser=E1 a IDE mais configur=E1vel que eu conhe=E7o - e disparado. S=
e=20
algo tiver que ser definido de forma um pouco
menos configur=E1vel para poder funcionar ou para poder ficar realmente=20
bom, podemos arriscar, acho que vale =E0 pena...
>entao...o que preferem C++ ou Obj Pascal?
>
Pra poder meter o bedelho, eu prefiro Obj Pascal! :)
Abra=E7o,
Anderson
|
|
From: <fa...@nl...> - 2003-07-29 20:51:01
|
> >O componente scaneia o código e busca por estruturas chaves que estariam
> >guardadas em uma base ex:
> >
> > if(...){...}
> >
> > for ... to ... do
> > begin
> > ...
> > end;
> >
> Tá, mas como a gente vai guardar isto num arquivo XML?
> A única idéia que tive foi algo assim:
> <estrutura findkeyword="if">
> (*)\s{*}
> </estrutura>
>
> Em português: "quando a palavra-chave *"if"* for encontrada deve haver
> um "*("*, seguido por um trecho com quaisquer
> caracteres em qualquer número*,* mais um *")"* seguido por caracteres
> espaços (espaço, tab ou quebra de linha) e logo
> depois um *"{"* seguido de um trecho com quaiquer caracteres e
> finalmente mais um *"}"*".
>
> Seria algo assim?
mais ou menos...eu estou analizando qual seria a melhor maneira porque essa
parte é crucial para o desempenho, mencionei XML por causa da quantidade de
coisas que já serão no mesmo mas seria incantáveis vezes mais simples trabalhar
com ele em arquivo. Deixo a critério também.
> O que não der para ser configurável, não deu e ponto. De qualquer forma
> o Notes 2, pelos planos que temos
> hoje, será a IDE mais configurável que eu conheço - e disparado. Se
> algo tiver que ser definido de forma um pouco
> menos configurável para poder funcionar ou para poder ficar realmente
> bom, podemos arriscar, acho que vale à pena...
essa parte é outra delicada pois flexibilidade diminui desempenho e ao
construir um sistema de busca e análize como este escolher o método de
representação do conhecimento e da procura por ele de forma errada pode
fazer com que uma função que levaria 3 milisegundos para ser executada demorar
cerca de 35000 anos, parece mentira mas acontece sim.
Abraços,
Thiago Cavalcanti
---------------------------------------------------
Este e-mail foi enviado por http://www.nlink.com.br
|