Compiler
gabsmoreira / compiler Goto Github PK
View Code? Open in Web Editor NEWCompiler
Compiler
Versão testada: v3.0.1
Status: erro
Seu programa apresentou defeito(s) com as seguinte(s) entrada(s):
test1.vbs
Sub main()
' hello world
Dim a as integer
a = 5
print a
End Sub
test2.vbs
Sub main()
Dim tb as boolean
Dim ti as integer
tb = TRUE
ti = 10
if tb then
print ti + 10
end if
End Sub
test3.vbs
Sub main()
Dim teste_bool as boolean
Dim teste_int as integer
teste_bool = True
teste_int = 10
if teste_bool then
print teste_int + 10
end if
while (teste_int > 0) and teste_bool
print teste_int
teste_int = teste_int - 1
wend
teste_int = input
print teste_int
End Sub
test4.vbs
Sub main()
' adaptado da sabrina
dim fizz as integer
dim buzz as integer
dim fizzbuzz as integer
dim n as integer
dim tres as integer
dim cinco as integer
dim flag as boolean
n = INPUT
fizz = 0000
buzz = 1111
fizzbuzz = 00001111
flag = True
while n > 0
tres = (n - (n / 3 * 3))
cinco = (n - (n / 5 * 5))
print n
if (tres = 0) and (cinco = 0) then
print fizzbuzz
flag = False
end if
if (tres = 0) and (flag = True) then
print fizz
flag = False
end if
if (cinco = 0) and (flag = True) then
print buzz
flag = False
end if
flag = True
n = n - 1
wend
end sub
test5.vbs
Sub main()
' bool ops
Dim bt as boolean
Dim bf as boolean
bt = True
bf = False
print bf and bt
print bf or bt
print not(not(bf))
print not((bt and bf) or bf)
end sub
Comentários:
Não consigo localizar sua EBNF e seu DS esta desatualizado;
Voce nao produz um codigo.asm para ser interpretado pelo nasm, somente, printa o codigo. Enquanto nao gerar o codigo, nao serei capaz de avaliar se funciona.
Apesar de nao poder avaliar, confirmei no codigo que houve implementacao de geracao de codigo, por isso sera considerado.
Corrija o que foi apontado nesta issue para a próxima release. Não se esqueça de manter a EBNF e o DS atualizados, eles são a documentação da linguagem de seu compilador.
Abraços!
Versão: 0v.2.2
Situação: OK (observações)
Oi Gabriel,
Seu código fuciona conforme especificado para a versão 1.0 do compilador, porém esta sua release está com a tag v0.2.2. Por favor certifique-se de versionar corretamente na próxima entrega, para eu não ter que ficar caçando qual é a release certa de seu código.
Também, durante as primeiras entregas (enquanto não houver código-fonte de VBA), utilize o input de terminal como entrada das contas do compiler. Quando avançar no compilador, utilize a entrada padrão mesmo.
Abraços!
Versão testada: v1.1.1
Status: erro de execução
seu programa apresentou defeito(s) com as seguinte(s) entrada(s):
' bla \n 1+1
2 + 3 * ' bla \n 5
Parece que seu código nao aceita comentarios no meio do calculo, nem antes. Cheque por favor se o seu codigo aceita quebra de linha no input do terminal (de o replace de "\n" por "\n" no seu input). Por favor corrija estes problemas até a próxima release, e responda esta issue quando tiver corrrigido.
Abraços!
Versão testada: v2.2.1
Status: OK
Comentários:
Corrija o que foi apontado nesta issue para o próximo release.
Abraços!
Versão: 0.1
Situação: OK
Seu código rodou com sucesso todos os testes, parabéns!
Versão testada: v2.1.1
Status: erro de execucao
Seu programa apresentou defeito(s) com as seguinte(s) entrada(s):
test4.vbs
BEGIN
x = -(2 + 3)/5
y = x + 5
PRINT x*y+3- -2/4
END
Comentários:
Por favor corrija estes problemas na proxima release, e responda esta issue quando tiver corrrigido.
Abraços!
Versão testada: v2.4.1
Status: Erro - Incompleto
Seu programa apresentou defeito(s) com as seguinte(s) entrada(s):
test4.vbs
Sub check(n as integer)
dim tres as integer
dim cinco as integer
dim flag as boolean
tres = (n - (n / 3 * 3))
cinco = (n - (n / 5 * 5))
flag = True
if (tres = 0) and (cinco = 0) then
print 00001111
flag = False
end if
if (tres = 0) and (flag = True) then
print 0000
flag = False
end if
if (cinco = 0) and (flag = True) then
print 1111
end if
End Sub
Sub fizzBuzz()
' adaptado da sabrina
Dim n as integer
n = input
while n > 0
Call check(n)
n = n - 1
wend
End Sub
Sub main()
Call fizzBuzz()
end sub
Comentários:
Corrija os erros de código/EBNF/DS apontados nesta issue.
Abraços!
Versão testada: v2.0.1
Status: erro de execução
Seu programa apresentou defeito(s) com as seguinte(s) entrada(s):
' comment
1+1
' bla
(3 + 2)/ 5
(2*2)
Comentários:
Por favor, organize melhor seus diagramas sintáticos. Junte tudo em uma foto. Sugiro coloca-los no readme também.
Comece também a fazer a ebnf do seu compilador a partir desta release.
Seu programa não consegue rodar para todas as entradas acima.
A ideia de ler um arquivo é tratar todas as linhas como parte de uma unica entrada (um código), e não tratar cada linha como um código separado.
Peço para que receba o nome do arquivo de entrada pela entrada padrão do python;
Exemplo:
$ python3 main.py test.vbs
Por favor corrija estes problemas nesta release (v2.0.2), e responda esta issue quando tiver corrrigido.
Abraços!
Versão testada: v2.3.1
Status: Erro
Seu programa apresentou defeito(s) com as seguinte(s) entrada(s):
test2.vbs
Sub main()
Dim tb as boolean
Dim ti as integer
tb = TRUE
ti = 10
if tb then
print ti + 10
end if
End Sub
test3.vbs
Sub main()
Dim teste_bool as boolean
Dim teste_int as integer
teste_bool = True
teste_int = 10
if teste_bool then
print teste_int + 10
end if
while (teste_int > 0) and teste_bool = True
print teste_int
teste_int = teste_int - 1
wend
teste_int = input
print_teste_int
End Sub
test4.vbs
Sub main()
' adaptado da sabrina
dim fizz as integer
dim buzz as integer
dim fizzbuzz as integer
dim n as integer
dim tres as integer
dim cinco as integer
dim flag as boolean
n = INPUT
fizz = 0000
buzz = 1111
fizzbuzz = 00001111
flag = True
while n > 0
tres = (n - (n / 3 * 3))
cinco = (n - (n / 5 * 5))
print n
if (tres = 0) and (cinco = 0) then
print fizzbuzz
flag = False
end if
if (tres = 0) and (flag = True) then
print fizz
flag = False
end if
if (cinco = 0) and (flag = True) then
print buzz
flag = False
end if
flag = True
n = n - 1
wend
end sub
test5.vbs
Sub main()
' bool ops
Dim bt as boolean
Dim bf as boolean
bt = True
bf = False
print bf and bt
print bf or bt
print not(not(bf))
print not((bt and bf) or bf)
end sub
Comentários:
Corrija o que foi apontado nesta issue para a próxima release. Não se esqueça de manter a EBNF e o DS atualizados, eles são a documentação da linguagem de seu compilador.
Abraços!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.