Criar uma mini-linguagem de Programação[RESOLVIDO]

70 respostas
X

[size=16]Olá galera do guj,

Estou desenvolvendo uma ferramenta baseada no JasperReports em PHP, e preciso criar uma mini-linguagem de programação para executar as expressões feitas em java, como não fiz a matéria de Compiladores e na grade do meu curso da facul não tem mais, gostaria de algumas dicas de vcs…
Se alguém já tiver feito qualquer tipo de linguagem de programação idependente da linguagem, até o meu xodó C++, pode postar, fico muito grato.
Aqui no trampo falaram pra mim usar o design pattern interpreter, mas acho que num vai atender muito.

Se tiverem tutoriais ou apostilas, favor me enviar, não vou ter que fazer a linguagem completa, só o que é mais usado para gerar relatórios ou gráficos, subrelatórios, cubo e etc., entende?

Valeu galera…
[/size]

70 Respostas

X

:slight_smile:

E

Não sei se você conhece o CajuScript, é leve, e fácil de usar, e podes customizar a sintaxe, pega o código do SVN e compila, tem algumas melhorias. www.cajuscript.org

Tem um startup rápido e leve, e um tempo de execução bastante rápido.

Acho que desenvolver algo de raiz é uma grande aventura, falo pela minha experiência ao desenvolver o CajuScript.

Você pode é fazer um conversor para adaptar para correr com outra linguagem, no caso CajuScript, ou outra qualquer.

Mas boa sorte… não sei qual é o retorno desta empreitada, mas acredito q deve valer o esforço :wink:

X

Bem interessante,
Já tinha ouvido falar do cajuscript e achei muito interessante a iniciativa, vou até baixar pra ver como ele funciona…
Realmente preciso de algo mais simples, não tão encorpado como uma linguagem de mercado, pois o objetivo é atender ao específico e não ir à este ponto de se tornar uma linguagem comercial…

Uma outra alternativa é ao invés de fazer todos os passos de um compilador, eu criar uma camada que verifica os ítens definidos em um xml e assim converte para php, o que vc acha amigo eduveks? será que é viável? Ou é melhor criar mesmo uma mini-linguagem, ou uma meta-linguagem?

aqui, aproveitando, como faço pra me integrar no desenvolvimento do projeto do cajuscript?

V

http://groovy.codehaus.org

X

Seria interessante ao invés de criar uma nova linguagem, somente fazer uma camada que transcreve o código em outro para este caso?

V

Seria, ao invés de usar uma nova linguagem, que tal usar uma linguagem já pronta?

X

O caso é::

Aqui na empresa, sou desenvolvedor PHP, onde trabalho no setor de desenvolvimento de framework, e estamos criando um application builder de alta performance em php, para criar sistemas de grande porte e complexos, e para isso, a gente precisa de uma ferramenta de geração de relatórios e apoio a BI, eu fiquei incubido de pesquisar a ferramenta e implementar, mas em php não existe nenhuma que presta, aí decidi escolher uma em java, as duas que mais agradei foram o BIRT que não o escolhi somente porque seus pdfs não são fiéis ao html gerado por ele e o Jasper que é bem forte no mercado.

Para disponibilizarmos precisamos de integrar essa ferramenta ao application builder, mas para isso, se usassemos em java, as grandes empresas que são nossas clientes deveriam ter dois servidores de aplicação instalados no caso o apache e outro como o jeronimo ou classfish entre outros, para não ter esse problema, me incubiram de fazer a engenharia reversa somente através dos aspectos do xml gerado pelo ireports, e características de implementação da api do jsaper e depois vou fazer um ireports em php, já fiz uma versão da ferramenta, mas sem grandes recursos, agora estou fazendo ela com a maioria dos recursos disponíveis implementando a maioria de design patterns necessários…

Por isso não posso usar outra linguagem, e sim criar ou fazer uma camada para que as expressões inseridas no gerador sejam interpretadas e façam a interação necessária com o relatório.

Entendeu o pq amigo…, puxado mesmo, mas o bom é que haverá uma alternativa para o povo PHP, embora creio que não será open-source…

E

O Groovy é muito mais robusto que o CajuScript.

Mas o CajuScript consome muito menos memória e tem um startup muito mais rápido do que o Groovy. E há vários casos em que a performance do script com Groovy era muito pesada e demorada, e com o CajuScript se tornou muito mais rápido.

Depende do cenário os pontos positivos de um pode valer mais a pena do que outro. E também claro… o “gosto” sempre conta. :stuck_out_tongue:

E a curva de aprendizagem do CajuScript penso que é muito curta também, por ser simples.

Só queria frizar também que os objetivos do CajuScript não são os mesmo do Groovy. Enquanto que o Groovy aposta em ser uma linguagem completa e robusta, o CajuScript foca em ser simples e leve, para pequenas implementações de script.

Caso for fazer uma solução inteira em linguagem de script o CajuScript certamente não será a melhor escolha, mas se for ter apenas pequenas parte do programa em script, ai sim o CajuScript pode ser a melhor opção.

Vini, nada contra o Groovy, muito pelo contrário, apenas para ficar claro que o ramo de um não é o ramo do outro :stuck_out_tongue:

Há e também outro ponto, é que o Groovy é muito mais popular e assim muito mais ativo, já o CajuScript não.

B

Não entendi por que você precisa de um application server para rodar o Jasper Reports. Só a JRE instalada + as libs não ficaria bom?

X

Bom mano, ce num entendeu, eu preciso desta solução em PHP, e não existe ainda, só a que eu fiz primeiro, agora estou criando um “JasperReports” em PHP, uma api de geração de relatório, que satisfaça o que o outro faz, e este já está em fase avançada de desenvolvimento, sendo que faz grande parte do que se necessita, mas preciso avançar com a ferramenta, por isso preciso de uma “Linguagem que traduza o Java para PHP”, entendeu?
flw brother…

A

xjunior:
O caso é::

Aqui na empresa, sou desenvolvedor PHP, onde trabalho no setor de desenvolvimento de framework, e estamos criando um application builder de alta performance em php, para criar sistemas de grande porte e complexos, e para isso, a gente precisa de uma ferramenta de geração de relatórios e apoio a BI, eu fiquei incubido de pesquisar a ferramenta e implementar, mas em php não existe nenhuma que presta, aí decidi escolher uma em java, as duas que mais agradei foram o BIRT que não o escolhi somente porque seus pdfs não são fiéis ao html gerado por ele e o Jasper que é bem forte no mercado.

Para disponibilizarmos precisamos de integrar essa ferramenta ao application builder, mas para isso, se usassemos em java, as grandes empresas que são nossas clientes deveriam ter dois servidores de aplicação instalados no caso o apache e outro como o jeronimo ou classfish entre outros, para não ter esse problema, me incubiram de fazer a engenharia reversa somente através dos aspectos do xml gerado pelo ireports, e características de implementação da api do jsaper e depois vou fazer um ireports em php, já fiz uma versão da ferramenta, mas sem grandes recursos, agora estou fazendo ela com a maioria dos recursos disponíveis implementando a maioria de design patterns necessários…

Por isso não posso usar outra linguagem, e sim criar ou fazer uma camada para que as expressões inseridas no gerador sejam interpretadas e façam a interação necessária com o relatório.

Entendeu o pq amigo…, puxado mesmo, mas o bom é que haverá uma alternativa para o povo PHP, embora creio que não será open-source…

Opa,

Bom, sinceramente? Se você diz que só não escolheu o BIRT pois achou o PDF gerado nada fiel, eu acho que compensa muito mais você baixar ele e mudar o que não te agrada. Isso pode virar até um patch depois para o BIRT, você pode fazer uso disso como curriculum, tb.

Eu estou passando por uma experiência dessas de integração/modificação. Estou integrando o jBPM à nossa engine. Te garanto: MUITO melhor pegar algo assim do que fazer do zero. O jBPM4 que estou usando por ex. contém certas coisas que demorariam no mínimo um ano pro time desenvolver. Não gaste tempo à toa.

[]'s

A

Bom mano, ce num entendeu, eu preciso desta solução em PHP, e não existe ainda, só a que eu fiz primeiro, agora estou criando um “JasperReports” em PHP, uma api de geração de relatório, que satisfaça o que o outro faz, e este já está em fase avançada de desenvolvimento, sendo que faz grande parte do que se necessita, mas preciso avançar com a ferramenta, por isso preciso de uma “Linguagem que traduza o Java para PHP”, entendeu?
flw brother…

Dê uma procurada em JSON. Vê se te ajuda se for esse o caso.

E

:arrow: Mas vc quer traduzir o JasperReports para PHP!? Ou seja, traduzir código Java em PHP…

:arrow: Ou quer chamar o JasperReports a partir do PHP? Ou seja, executar Java a partir do PHP…

Qual das duas??? A primeira hipótese penso que é doidera :twisted:

X

AUser:
xjunior:
O caso é::

Aqui na empresa, sou desenvolvedor PHP, onde trabalho no setor de desenvolvimento de framework, e estamos criando um application builder de alta performance em php, para criar sistemas de grande porte e complexos, e para isso, a gente precisa de uma ferramenta de geração de relatórios e apoio a BI, eu fiquei incubido de pesquisar a ferramenta e implementar, mas em php não existe nenhuma que presta, aí decidi escolher uma em java, as duas que mais agradei foram o BIRT que não o escolhi somente porque seus pdfs não são fiéis ao html gerado por ele e o Jasper que é bem forte no mercado.

Para disponibilizarmos precisamos de integrar essa ferramenta ao application builder, mas para isso, se usassemos em java, as grandes empresas que são nossas clientes deveriam ter dois servidores de aplicação instalados no caso o apache e outro como o jeronimo ou classfish entre outros, para não ter esse problema, me incubiram de fazer a engenharia reversa somente através dos aspectos do xml gerado pelo ireports, e características de implementação da api do jsaper e depois vou fazer um ireports em php, já fiz uma versão da ferramenta, mas sem grandes recursos, agora estou fazendo ela com a maioria dos recursos disponíveis implementando a maioria de design patterns necessários…

Por isso não posso usar outra linguagem, e sim criar ou fazer uma camada para que as expressões inseridas no gerador sejam interpretadas e façam a interação necessária com o relatório.

Entendeu o pq amigo…, puxado mesmo, mas o bom é que haverá uma alternativa para o povo PHP, embora creio que não será open-source…

Opa,

Bom, sinceramente? Se você diz que só não escolheu o BIRT pois achou o PDF gerado nada fiel, eu acho que compensa muito mais você baixar ele e mudar o que não te agrada. Isso pode virar até um patch depois para o BIRT, você pode fazer uso disso como curriculum, tb.

Eu estou passando por uma experiência dessas de integração/modificação. Estou integrando o jBPM à nossa engine. Te garanto: MUITO melhor pegar algo assim do que fazer do zero. O jBPM4 que estou usando por ex. contém certas coisas que demorariam no mínimo um ano pro time desenvolver. Não gaste tempo à toa.

[]'s

Bom amigo, se eu escolhece o BIRT, seria a mesma coisa, mas ele é um pouco menos complicado, agora, realmente desenvolver uma ferramenta destas do zero é complicado, mas a empresa quis assim e eu tinha falado antes que tinha como desenvolver a partir dela, então a responsabilidade foi pra minha mão.

Nesta ferramenta que estou desenvolvendo em PHP, eu estou desenvolvendo ela sozinho, e por causa da performance tenho q gastar muito neurônio pensando em solução pra fazer o produto acontecer, graças à Deus já tá em um ponto muito bom, que pra ficar mais completo falta fazer este módulo, a única coisa que ainda não implementei e nem sei se vou fazer assim é o hashmap, pois no nosso caso não é necessário fazer isso.
Vi uma que uns malaios tão tentando fazer, um tal de PHPJasper XML, muito ruim a ferramenta, era feita em PHP4 (terrível, quase num tinha orientação à objetos), eles estão a 1 ano e meio tentando fazer a ferramenta e eu em menos de 1 mês e meio criei uma que fazia quase tudo, enquanto a deles nem renderizava direito, mas agora esta que estou desenvolvendo agora, que já tem 2 meses, está em um ponto muito bakana.

C

Não sei se a solução que você está imaginando é a melhor alternativa para resolver o problema… mas a melhor alternativa para sua solução é o javaCC. https://javacc.dev.java.net/.
Inclusive nos exemplos já possui um parser para instruções java, é o que você precisa…
O seu trabalho seria apenas de implementar as ações semânticas nos pontos certos para gerar as instruções php.

X

eduveks:
:arrow: Mas vc quer traduzir o JasperReports para PHP!? Ou seja, traduzir código Java em PHP…

:arrow: Ou quer chamar o JasperReports a partir do PHP? Ou seja, executar Java a partir do PHP…

Qual das duas??? A primeira hipótese penso que é doidera :twisted:


Meu amigo, é totalmente inviável ler o código java e transferir em php, estou criando uma aplicação nova com os aspectos do jasper e baseado no seu xml, não é o jasper e nem tem código fonte do jasper, é algo novo, inexistente no mundo PHP, e não quero fazer JAVA Bridge, e já estou em fase avançada de desenvolvimento desta ferramenta, já não é que quero fazer e sim acabá-la e partir pro próximo produto…
entende?

Nem tentei ler o código fonte do jasperreports, fiz tudo novo, baseado em minha lógica…

E

xjunior:
eduveks:
:arrow: Mas vc quer traduzir o JasperReports para PHP!? Ou seja, traduzir código Java em PHP…

:arrow: Ou quer chamar o JasperReports a partir do PHP? Ou seja, executar Java a partir do PHP…

Qual das duas??? A primeira hipótese penso que é doidera :twisted:


Meu amigo, é totalmente inviável ler o código java e transferir em php, estou criando uma aplicação nova com os aspectos do jasper e baseado no seu xml, não é o jasper e nem tem código fonte do jasper, é algo novo, inexistente no mundo PHP, e não quero fazer JAVA Bridge, e já estou em fase avançada de desenvolvimento desta ferramenta, já não é que quero fazer e sim acabá-la e partir pro próximo produto…
entende?

Nem tentei ler o código fonte do jasperreports, fiz tudo novo, baseado em minha lógica…

Ok, certo… então para que a tal linguagem nova?! E o Java na conversa?

Só para executar as expressões Java do Jasper? Hummm para isto mais vale criar um interpretador na pata e nas marteladas para isto…

Pois o mundo que vc montou no PHP é incompatível e não é linear ao mundo do Jasper/Java. Portanto nenhum meio automático deve servir.

Vc tem que interpretar as expressões do Jasper da maneira que se enquadra com o teu cenário no PHP.

E quem sabe criar as tuas próprias expressões… pois podes ter coisas que o Jasper não tem, e o Jasper pode ter coisas que o teu não tem…

C

ctdaa:
Não sei se a solução que você está imaginando é a melhor alternativa para resolver o problema… mas a melhor alternativa para sua solução é o javaCC. https://javacc.dev.java.net/.
Inclusive nos exemplos já possui um parser para instruções java, é o que você precisa…
O seu trabalho seria apenas de implementar as ações semânticas nos pontos certos para gerar as instruções php.

OK. javaCC serve também para criar uma linguagem totalmente nova… ou interpretar algo já existente.

S

xjunior:
Olá galera do guj,

Estou desenvolvendo um JasperReports em PHP, e preciso criar uma mini-linguagem de programação para executar as expressões feitas em java, como não fiz a matéria de Compiladores e na grade do meu curso da facul não tem mais, gostaria de algumas dicas de vcs…
Se alguém já tiver feito qualquer tipo de linguagem de programação idependente da linguagem, até o meu xodó C++, pode postar, fico muito grato.
Aqui no trampo falaram pra mim usar o design pattern interpreter, mas acho que num vai atender muito.

Se tiverem tutoriais ou apostilas, favor me enviar, não vou ter que fazer a linguagem completa, só o que é mais usado para gerar relatórios ou gráficos, subrelatórios, cubo e etc., entende?

Valeu galera…

Não sei entendi a duvida corretamente, mas se é uma linguagem para gerar relatórios, porque não se baseia no Smarty(http://www.smarty.net/) para criar? Ele tem uma linguagem própria bem simples, e é bem extensível. No padrão a linguagem dele serve para gerar HTML(para templates, você deve conhecer). E você pode usar o HTML para gerar PDF se necessitar. Buscando no Google achei esse artigo que pode te ajudar: http://www.adrianoweb.com.br/prospero/modules/wordpress/2008/06/21/modelando-relatrios-pdf-com-smarty/

Espero ter ajudado.

X

Bom, faço outros exemplos pra vcs verem, mas este é um teste simples, se quiserem ver algum com subrelatório ou algo mais complexo, ou gráficos, faço tmbém, este é um dos gerados pela minha ferramenta, que é uma api que poderá ser incorporada a qualquer código php:

Na hora de pegar a imagem, cortou o pagefooter e o restante, mas tá gerando normalmente, e com quebra de página entre outros…

X

eduveks:
xjunior:
eduveks:
:arrow: Mas vc quer traduzir o JasperReports para PHP!? Ou seja, traduzir código Java em PHP…

:arrow: Ou quer chamar o JasperReports a partir do PHP? Ou seja, executar Java a partir do PHP…

Qual das duas??? A primeira hipótese penso que é doidera :twisted:


Meu amigo, é totalmente inviável ler o código java e transferir em php, estou criando uma aplicação nova com os aspectos do jasper e baseado no seu xml, não é o jasper e nem tem código fonte do jasper, é algo novo, inexistente no mundo PHP, e não quero fazer JAVA Bridge, e já estou em fase avançada de desenvolvimento desta ferramenta, já não é que quero fazer e sim acabá-la e partir pro próximo produto…
entende?

Nem tentei ler o código fonte do jasperreports, fiz tudo novo, baseado em minha lógica…

Ok, certo… então para que a tal linguagem nova?! E o Java na conversa?

Só para executar as expressões Java do Jasper? Hummm para isto mais vale criar um interpretador na pata e nas marteladas para isto…

Pois o mundo que vc montou no PHP é incompatível e não é linear ao mundo do Jasper/Java. Portanto nenhum meio automático deve servir.

Vc tem que interpretar as expressões do Jasper da maneira que se enquadra com o teu cenário no PHP.

E quem sabe criar as tuas próprias expressões… pois podes ter coisas que o Jasper não tem, e o Jasper pode ter coisas que o teu não tem…

Muito bom amigo, era esse tipo de coisa que tava esperando ler, pois eu estava com muitas dúvidas, pois meu tempo para terminar a solução é curto, tenho somente um mês pra terminar e integrar com metadados, e não quero tomar decisões erradas quanto a solução para este caso, odeio voltar e ter que mudar código, gosto de projetar primeiro a solução e implementá-la, cada parte do meu jasperreports em php é através de blocos e todos muito bem projetados, o que mais vc vê como solução para este caso, algo que seja o máximo possível bem implementado e bem pensado?

X

O interessante é que vc está certo, terá muitas outras coisas que o jasper não tem, como suporte a metalinguagem que será criado ainda, esse suporte ao java pois ele tem que ser compatível a qualquer versão do jrxml, suporte as expressoes do qrdesign(vamos ver se é importante mesmo), entre outras coisas, fraga…

L

um grande conselho… jogue este php no lugar dele (no lixão) e use algo que preste…

de boa php tem suas vantagens mais é para apps de pequeno porte… sites, blogs, forums e sisteminhas de pequeno porte… o que vc ta querendo é fazer algo de grande porte… o que é pouco viavel em php…

bem mas voltando a seu problema… criar uma linguagen do zero é inviavel para o que vc quer que é apenas um gerador de relatorio,
o melhor é vc usar xml… customizar uma DTD e pronto…

E

Bem meu é assim, a única coisa que tenho como base é que vc esta trabalhando com PHP tentando clonar o Jasper, ou partes dele, e ter alguma compatibilidade…

Agora, como chegar ao resultado final e qual o melhor caminho a seguir só tu que deve saber, pois vc sabe como esta o código PHP e o que que vc precisa fazer igual ao Jasper.

Como entendo que vc esta tentanto colocar algo semelhante, ou algo que funciona no Jasper, e que também passe a funcionar no teu. E como são duas tecnologias diferentes, não vejo outra forma a não ser “clonar”=implementar|interpretar a parte que queres ter compatibilidade com o Jasper, no caso as expressões.

Ou seja tens que fazer em PHP, pois se o teu projeto esta todo em PHP, mesmo que fosse fácil usar o Jasper e o Java para fazer esta parte, terias uma grande dependência. E se o trabalho grosso já esta feito, então por que não ficar 100% em PHP?

Também tens que pensar que ao fazer isto vc vai ter que dar suporte, resolução de bugs, etc, a algo que já existe em outra tecnologia, no caso Jasper/Java. Ou seja, tas a duplicar o esforço. Mas se é para ganhar dinheiro e se é um produto, e que vai dar um bom retorno, então talvez justifica.

E

luistiagos:
um grande conselho… jogue este php no lugar dele (no lixão) e use algo que preste…

de boa php tem suas vantagens mais é para apps de pequeno porte… sites, blogs, forums e sisteminhas de pequeno porte… o que vc ta querendo é fazer algo de grande porte… o que é pouco viavel em php…

bem mas voltando a seu problema… criar uma linguagen do zero é inviavel para o que vc quer que é apenas um gerador de relatorio,
o melhor é vc usar xml… customizar uma DTD e pronto…

heee como tb faço coisas em PHP, e dou suporte a aplicações PHP, nada muito grande claro, concordo plena mente :smiley:

mas PHP é um grande mercado, bom ou mau, mas tem mercado… mas não deixa de ser um tiro no pé, e talvez seja por isto que não há um Jasper bom para PHP, talvez por que quem já tentou viu que não valia a pena… talvez… não sei :twisted:

T

Aproveitando o gancho, gostaria de deixar um link aqui:
Let’s build a compiler
Este artigo aborda os tópicos básicos de projeto de uma linguagem.

X

luistiagos:
um grande conselho… jogue este php no lugar dele (no lixão) e use algo que preste…

de boa php tem suas vantagens mais é para apps de pequeno porte… sites, blogs, forums e sisteminhas de pequeno porte… o que vc ta querendo é fazer algo de grande porte… o que é pouco viavel em php…

Meu caro, sinto em dizer mas vc está completamente enganado, php tem os seus pontos fortes e fracos como outras linguagens, não se pode globalizar a linguagem porque seu primo de 15 anos desenvolve porcamente e cria produtos sem performance totalmente estruturado e ainda cheio de problemas.

O problema do php é que ele dá muita liberdade ao desenvolvedor, isso é ruim, é péssimo, pois dá liberdade a porqueira e a POG, agora, se vc desenvolver totalmente orientado a objetos e for excelente de lógica, conhecer bem design patterns, ser o foda para solucionar problemas relevando a performance e a manutenabilidade, php é um excelente candidato a qualquer sistema, se vc visse o framework que nossa empresa está desenvolvendo e sua performance, a arquitetura empregada e o seu tamanho e complexidade, vc ficaria de boca aberta, pois aqui tudo é bem arquiteturado, e ainda, vc veria que está totalmente enganado.

Um ponto ruim de php é o não suporte a threads, o qual acho muito importante, bom, vamos ver se vc conhece o que está falando, já ouviu falar de doctrine? cara é uma excelente framework de mapeamento de objeto realcional, baseado inteiramente no hibernate, já ouviu falar em P4A, Zend, ou outras frameworks?? bom, aconselho vc estudar um pouco mais, e abrir mais a mente…

Bom, estou criando um jasperreports em php, e olha, usando tanto oracle como outros bancos de dados, a performance está razoável, não fica tão atrás do jasper, peguei relatórios com milhoes de registros e testei a eficácia… Depende de como vc programa…

E

xjunior:
luistiagos:
um grande conselho… jogue este php no lugar dele (no lixão) e use algo que preste…

de boa php tem suas vantagens mais é para apps de pequeno porte… sites, blogs, forums e sisteminhas de pequeno porte… o que vc ta querendo é fazer algo de grande porte… o que é pouco viavel em php…

Meu caro, sinto em dizer mas vc está completamente enganado, php tem os seus pontos fortes e fracos como outras linguagens, não se pode globalizar a linguagem porque seu primo de 15 anos desenvolve porcamente e cria produtos sem performance totalmente estruturado e ainda cheio de problemas.

O problema do php é que ele dá muita liberdade ao desenvolvedor, isso é ruim, é péssimo, pois dá liberdade a porqueira e a POG, agora, se vc desenvolver totalmente orientado a objetos e for excelente de lógica, conhecer bem design patterns, ser o foda para solucionar problemas relevando a performance e a manutenabilidade, php é um excelente candidato a qualquer sistema, se vc visse o framework que nossa empresa está desenvolvendo e sua performance, a arquitetura empregada e o seu tamanho e complexidade, vc ficaria de boca aberta, pois aqui tudo é bem arquiteturado, e ainda, vc veria que está totalmente enganado.

Um ponto ruim de php é o não suporte a threads, o qual acho muito importante, bom, vamos ver se vc conhece o que está falando, já ouviu falar de doctrine? cara é uma excelente framework de mapeamento de objeto realcional, baseado inteiramente no hibernate, já ouviu falar em P4A, Zend, ou outras frameworks?? bom, aconselho vc estudar um pouco mais, e abrir mais a mente…

Bom, estou criando um jasperreports em php, e olha, usando tanto oracle como outros bancos de dados, a performance está razoável, não fica tão atrás do jasper, peguei relatórios com milhoes de registros e testei a eficácia… Depende de como vc programa…

Desculpa mas ao falar em performance PHP já fica arrumado no canto.

Se vc pegar um programador assim, e mandar ele fazer uma cosia em PHP e depois fazer em Java (por exemplo), não me venha dizer que a versão em PHP vai ter mais performance, que isto não cola!

E orientação a objetos, lá esta, PHP? Quer comparar controle, segurança, escalabilidade, etc, do Java com o PHP?

Nenhum sistema grande e sério de sucesso usa PHP, me diga um?

Em Java há tantos (SAP, Reuters, etc… dava uma lista gigante) e por que será?..

S

Eu acho que o problema é está aí. “Ter um Jasper bom para PHP”. PHP não é Java. Quando trabalhava com PHP(em um projeto grande, acreditem, e usam ele até hoje e funciona muito bem), vieram com essa de “Jasper para PHP”. Existem boas formas de gerar relatório em PHP. Mas nenhuma delas é o JasperReports. No projeto em que trabalhava, usavamos um esquema parecido com aquele que descrevi no meu post anterior deste tópico. Criavamos em HTML, que pode ser criado com qualquer editor HTML(se quiser algo fácil e free use o Kompozer) e usavamos o Smarty para gerar os HTML’s e PDF’s a partir de templates. Funcionava bem, não era tão fácil como criar como o Jasper, mas mesmo assim era fácil. Mas não tem nada a ver com Jasper. Mas o resultado final é o mesmo.

S

1: http://www.magentocommerce.com/
2: http://ez.no/br/
3: http://www.facebook.com/

X

eduveks:
xjunior:
luistiagos:
um grande conselho… jogue este php no lugar dele (no lixão) e use algo que preste…

de boa php tem suas vantagens mais é para apps de pequeno porte… sites, blogs, forums e sisteminhas de pequeno porte… o que vc ta querendo é fazer algo de grande porte… o que é pouco viavel em php…

Meu caro, sinto em dizer mas vc está completamente enganado, php tem os seus pontos fortes e fracos como outras linguagens, não se pode globalizar a linguagem porque seu primo de 15 anos desenvolve porcamente e cria produtos sem performance totalmente estruturado e ainda cheio de problemas.

O problema do php é que ele dá muita liberdade ao desenvolvedor, isso é ruim, é péssimo, pois dá liberdade a porqueira e a POG, agora, se vc desenvolver totalmente orientado a objetos e for excelente de lógica, conhecer bem design patterns, ser o foda para solucionar problemas relevando a performance e a manutenabilidade, php é um excelente candidato a qualquer sistema, se vc visse o framework que nossa empresa está desenvolvendo e sua performance, a arquitetura empregada e o seu tamanho e complexidade, vc ficaria de boca aberta, pois aqui tudo é bem arquiteturado, e ainda, vc veria que está totalmente enganado.

Um ponto ruim de php é o não suporte a threads, o qual acho muito importante, bom, vamos ver se vc conhece o que está falando, já ouviu falar de doctrine? cara é uma excelente framework de mapeamento de objeto realcional, baseado inteiramente no hibernate, já ouviu falar em P4A, Zend, ou outras frameworks?? bom, aconselho vc estudar um pouco mais, e abrir mais a mente…

Bom, estou criando um jasperreports em php, e olha, usando tanto oracle como outros bancos de dados, a performance está razoável, não fica tão atrás do jasper, peguei relatórios com milhoes de registros e testei a eficácia… Depende de como vc programa…

Desculpa mas ao falar em performance PHP já fica arrumado no canto.

Se vc pegar um programador assim, e mandar ele fazer uma cosia em PHP e depois fazer em Java (por exemplo), não me venha dizer que a versão em PHP vai ter mais performance, que isto não cola!

E orientação a objetos, lá esta, PHP? Quer comparar controle, segurança, escalabilidade, etc, do Java com o PHP?

Nenhum sistema grande e sério de sucesso usa PHP, me diga um?

Em Java há tantos (SAP, Reuters, etc… dava uma lista gigante) e por que será?..

Bom meu amigo, não quis dizer isso, mas estou falando que PHP não é uma linguagem ruim, e pode-se desenvolver totalmente orientado a objetos e tentar suprir o máximo de performance possível, agora, não sou doido o suficiente para dizer que PHP é melhor que Java, pois sei do grande poder de Java, no qual tenho gosto muito da performance de tal linguagem, mas o ponto foi mostrar que PHP tem seu lugar e pode-se criar sistemas de grande porte também, no caso de sistemas grandes usar Java, foi porque naquela situação foi melhor aplicado usar esta linguagem, tudo é analisado, tudo tem que ser pesado de acordo com o que se deseja.

O ponto principal foi: PHP não é lixo, mas sei muito bem que não é a melhor linguagem do mundo, gosto muito de desenvolver em php, como gosto de java, e gosto de scala, gosto tambem de C++, e assim por diante…

Agora, escalabilidade, Java é muito melhor, eu sei que Java é melhor que PHP, não foi isso que quiz dizer, e sim que PHP não é lixo :slight_smile:

X

Eu acho que o problema é está aí. “Ter um Jasper bom para PHP”. PHP não é Java. Quando trabalhava com PHP(em um projeto grande, acreditem, e usam ele até hoje e funciona muito bem), vieram com essa de “Jasper para PHP”. Existem boas formas de gerar relatório em PHP. Mas nenhuma delas é o JasperReports. No projeto em que trabalhava, usavamos um esquema parecido com aquele que descrevi no meu post anterior deste tópico. Criavamos em HTML, que pode ser criado com qualquer editor HTML(se quiser algo fácil e free use o Kompozer) e usavamos o Smarty para gerar os HTML’s e PDF’s a partir de templates. Funcionava bem, não era tão fácil como criar como o Jasper, mas mesmo assim era fácil. Mas não tem nada a ver com Jasper. Mas o resultado final é o mesmo.[/quote]

Meu amigo, se eu te dizer que com um ireports e quatro linhas de código php vc renderiza um relatório?

tem coisa mais fácil que isso?

E

serathiuk:
eduveks:

(…)
Nenhum sistema grande e sério de sucesso usa PHP, me diga um?

1: http://www.magentocommerce.com/
2: http://ez.no/br/
3: http://www.facebook.com/

Você esta de brincadeira comigo né?

Facebook, por exemplo, dos mais lentos, esta agora com vários problemas de performance, quem usa sabe, e qual a arquitetura dos servidores daquilo? E o consumo de CPU que deve ser descumunal. Isto pra mim explica a lentidão do Facebook…

Quanto ao resto, não sei dizer, mas o que sei é trabalho em grandes bancos e grandes empresas a alguns anos, e nunca vi nada em PHP… quando digo nada é nada mesmo!

Portanto ao meu ver PHP não atinge os grandes clientes e ponto! No Brasil a coisa pode estar diferente, mas na minha opinião se tiver, estão meio loucos.

L

xjunior:
eduveks:
xjunior:
luistiagos:
um grande conselho… jogue este php no lugar dele (no lixão) e use algo que preste…

de boa php tem suas vantagens mais é para apps de pequeno porte… sites, blogs, forums e sisteminhas de pequeno porte… o que vc ta querendo é fazer algo de grande porte… o que é pouco viavel em php…

Meu caro, sinto em dizer mas vc está completamente enganado, php tem os seus pontos fortes e fracos como outras linguagens, não se pode globalizar a linguagem porque seu primo de 15 anos desenvolve porcamente e cria produtos sem performance totalmente estruturado e ainda cheio de problemas.

O problema do php é que ele dá muita liberdade ao desenvolvedor, isso é ruim, é péssimo, pois dá liberdade a porqueira e a POG, agora, se vc desenvolver totalmente orientado a objetos e for excelente de lógica, conhecer bem design patterns, ser o foda para solucionar problemas relevando a performance e a manutenabilidade, php é um excelente candidato a qualquer sistema, se vc visse o framework que nossa empresa está desenvolvendo e sua performance, a arquitetura empregada e o seu tamanho e complexidade, vc ficaria de boca aberta, pois aqui tudo é bem arquiteturado, e ainda, vc veria que está totalmente enganado.

Um ponto ruim de php é o não suporte a threads, o qual acho muito importante, bom, vamos ver se vc conhece o que está falando, já ouviu falar de doctrine? cara é uma excelente framework de mapeamento de objeto realcional, baseado inteiramente no hibernate, já ouviu falar em P4A, Zend, ou outras frameworks?? bom, aconselho vc estudar um pouco mais, e abrir mais a mente…

Bom, estou criando um jasperreports em php, e olha, usando tanto oracle como outros bancos de dados, a performance está razoável, não fica tão atrás do jasper, peguei relatórios com milhoes de registros e testei a eficácia… Depende de como vc programa…

Desculpa mas ao falar em performance PHP já fica arrumado no canto.

Se vc pegar um programador assim, e mandar ele fazer uma cosia em PHP e depois fazer em Java (por exemplo), não me venha dizer que a versão em PHP vai ter mais performance, que isto não cola!

E orientação a objetos, lá esta, PHP? Quer comparar controle, segurança, escalabilidade, etc, do Java com o PHP?

Nenhum sistema grande e sério de sucesso usa PHP, me diga um?

Em Java há tantos (SAP, Reuters, etc… dava uma lista gigante) e por que será?..

Bom meu amigo, não quis dizer isso, mas estou falando que PHP não é uma linguagem ruim, e pode-se desenvolver totalmente orientado a objetos e tentar suprir o máximo de performance possível, agora, não sou doido o suficiente para dizer que PHP é melhor que Java, pois sei do grande poder de Java, no qual tenho gosto muito da performance de tal linguagem, mas o ponto foi mostrar que PHP tem seu lugar e pode-se criar sistemas de grande porte também, no caso de sistemas grandes usar Java, foi porque naquela situação foi melhor aplicado usar esta linguagem, tudo é analisado, tudo tem que ser pesado de acordo com o que se deseja.

O ponto principal foi: PHP não é lixo, mas sei muito bem que não é a melhor linguagem do mundo, gosto muito de desenvolver em php, como gosto de java, e gosto de scala, gosto tambem de C++, e assim por diante…

Agora, escalabilidade, Java é muito melhor, eu sei que Java é melhor que PHP, não foi isso que quiz dizer, e sim que PHP não é lixo :slight_smile:

Linguagens são como uma caixa de ferramenta… vc não usa um machado para cortar um pão e não usa uma faca de cozinha para cortar uma arvore certo?
o mesmo se aplica as linguagens… se vc fosse criar um sistema embarcado usuaria algo de baixo nivel como: C ou assembly, se fosse criar um jogo de uma capacidade grafica alta usaria provavelmente C++, assim como se vc for criar um blog ou uma app de pequeno a medio porte não precisa usar java pode sim usar php… agora se vc for usar php para uma app de grande porte e muitas transações é o mesmo que vc tentar cortar uma arvore com uma faca de cozinha…

S

Eu sei que é fácil. Eu uso iReports. E nem falei que é ruim. Só falei que se deve procurar soluções mais ao alcançe da linguagem e tecnologia. È a mesma coisa que um povo um tempo atrás quis criar um equivalente ao Hibernate com mapeamento via annotations para PHP. Mas ele se esqueceram que PHP nem tem annotations. Daí você colocava ela em comentários e ficava maior bizarrice.

E acho que é melhor nós se focarmos no problema do tópico do que na flamewar.

E

… …

Bom meu amigo, não quis dizer isso, mas estou falando que PHP não é uma linguagem ruim, e pode-se desenvolver totalmente orientado a objetos e tentar suprir o máximo de performance possível, agora, não sou doido o suficiente para dizer que PHP é melhor que Java, pois sei do grande poder de Java, no qual tenho gosto muito da performance de tal linguagem, mas o ponto foi mostrar que PHP tem seu lugar e pode-se criar sistemas de grande porte também, no caso de sistemas grandes usar Java, foi porque naquela situação foi melhor aplicado usar esta linguagem, tudo é analisado, tudo tem que ser pesado de acordo com o que se deseja.

O ponto principal foi: PHP não é lixo, mas sei muito bem que não é a melhor linguagem do mundo, gosto muito de desenvolver em php, como gosto de java, e gosto de scala, gosto tambem de C++, e assim por diante…

Agora, escalabilidade, Java é muito melhor, eu sei que Java é melhor que PHP, não foi isso que quiz dizer, e sim que PHP não é lixo :slight_smile:

Portanto… para que ter um sistema em PHP se tens Java a disposição?

Para quer fazer um sistema que já de cara poderá ter grandes limitações no futuro?

Bem eu não sei o que leva a ponderar PHP em diversos casos… mas não sendo eu a ter que suportar esta empreitada, não estou nem ai, cada um é que sabe e não sou contra o PHP para os outros, sou contra para MIM, jamais faria um sistema de raiz em PHP seja para o que for, justamente por conhecer PHP e Java não fico com a menor dúvida.

X

eduveks:
serathiuk:
eduveks:

(…)
Nenhum sistema grande e sério de sucesso usa PHP, me diga um?

1: http://www.magentocommerce.com/
2: http://ez.no/br/
3: http://www.facebook.com/

Você esta de brincadeira comigo né?

Facebook, por exemplo, dos mais lentos, esta agora com vários problemas de performance, quem usa sabe, e qual a arquitetura dos servidores daquilo? E o consumo de CPU que deve ser descumunal. Isto pra mim explica a lentidão do Facebook…

Quanto ao resto, não sei dizer, mas o que sei é trabalho em grandes bancos e grandes empresas a alguns anos, e nunca vi nada em PHP… quando digo nada é nada mesmo!

Portanto ao meu ver PHP não atinge os grandes clientes e ponto! No Brasil a coisa pode estar diferente, mas na minha opinião se tiver, estão meio loucos.

Não meu amigo, pelo que vejo vc é um cara muito inteligente, visualize comigo::

Tudo muda, tudo tende a melhorar, php não está mais na versão 4, não é? a performance ainda tem que melhorar mas não fica atrás de outras linguagens, mas também não é das melhores, aí em Portugal realmente, vc não deve ver falar em php mesmo…, aqui no Brasil se usa muito, mas nas próximas versões isso tende a melhorar como está melhorando, gostei muito da versão 5.3 e estou com muita vontade de ver a 6.0…

Bom, agora, PHP tende a melhorar, mas para enterprise é mais adequado Java mesmo, sabemos bem… Agora, sou desenvolvedor PHP e aqui na empresa escolheram PHP, porque? Fizeram um estudo e análise, e viram que ela iria suprir bem o que nescessitamos, aqui, produzimos sim sistemas grandes, e nossos sistemas que são em desktops lideram o mercado mercosul do segmento, é uma grande empresa com grandes sistemas… e em breve vão ter grandes sitemas em php,kkkkkkkk

B

Temos um problema pra resolver aqui gente, não fujam do foco da discussão, por favor.

Três questões:

Existe tradutor de código Java para código PHP?

Existe alguma forma do código PHP chamar um código Java, este gerar os relatórios, o PHP pegar o resultado e dar para o usuário? Ou não quer/não pode usar um pingo de código de outra linguagem na tua solução?

Eu acho muita besteira fazer a sua própria ferramenta se já tem outra feita, muitos anos à frente, mesmo que esteja em outra linguagem. Sem falar que a JasperForge pode encrencar pro teu lado se descobrir a kibada de código, mesmo traduzido.

X

Bruno Laturner:
Temos um problema pra resolver aqui gente, não fujam do foco da discussão, por favor.

Três questões:

Existe tradutor de código Java para código PHP?

Existe alguma forma do código PHP chamar um código Java, este gerar os relatórios, o PHP pegar o resultado e dar para o usuário? Ou não quer/não pode usar um pingo de código de outra linguagem na tua solução?

Eu acho muita besteira fazer a sua própria ferramenta se já tem outra feita, muitos anos à frente, mesmo que esteja em outra linguagem. Sem falar que a JasperForge pode encrencar pro teu lado se descobrir a kibada de código, mesmo traduzido.

Não meu amigo, já leu a licença do JaspeReports, e ainda, meu enginner, ou seja, meu robô não tem nada a ver com o implementado pelo jasperreports, entende?
Isso é um novo projeto, a única coisa que vou ler é o xml gerado pelo ireports.

Olha esse projeto que vi no freashmeat:
http://freshmeat.net/projects/phpjasperxml

O único ruim é que ela não presta e é feita porcamente…

Aqui, isto não vai se chamar jaspereports e nem será vendido separadamente, isto é pra integrar uma framework, ok?

X

E outra, JaperReports é opensource

X

e outra, se a ferramenta não atender os requisitos das do sistema desktop, não vai ser utilizada, entende?

X

SOMENTE LEMBRANDO, ELA NÃO É JASPERREPORTS E NEM TEM CÓDIGO FONTE COPIADO, ELA É BASEADA NO JASPERREPORTS, OK?

Agora voltando ao assunto, quais outras idéias vcs podem dar sobre o problema proposto?

L

xjunior:
eduveks:
serathiuk:
eduveks:

(…)
Nenhum sistema grande e sério de sucesso usa PHP, me diga um?

1: http://www.magentocommerce.com/
2: http://ez.no/br/
3: http://www.facebook.com/

Você esta de brincadeira comigo né?

Facebook, por exemplo, dos mais lentos, esta agora com vários problemas de performance, quem usa sabe, e qual a arquitetura dos servidores daquilo? E o consumo de CPU que deve ser descumunal. Isto pra mim explica a lentidão do Facebook…

Quanto ao resto, não sei dizer, mas o que sei é trabalho em grandes bancos e grandes empresas a alguns anos, e nunca vi nada em PHP… quando digo nada é nada mesmo!

Portanto ao meu ver PHP não atinge os grandes clientes e ponto! No Brasil a coisa pode estar diferente, mas na minha opinião se tiver, estão meio loucos.

Não meu amigo, pelo que vejo vc é um cara muito inteligente, visualize comigo::

Tudo muda, tudo tende a melhorar, php não está mais na versão 4, não é? a performance ainda tem que melhorar mas não fica atrás de outras linguagens, mas também não é das melhores, aí em Portugal realmente, vc não deve ver falar em php mesmo…, aqui no Brasil se usa muito, mas nas próximas versões isso tende a melhorar como está melhorando, gostei muito da versão 5.3 e estou com muita vontade de ver a 6.0…

Bom, agora, PHP tende a melhorar, mas para enterprise é mais adequado Java mesmo, sabemos bem… Agora, sou desenvolvedor PHP e aqui na empresa escolheram PHP, porque? Fizeram um estudo e análise, e viram que ela iria suprir bem o que nescessitamos, aqui, produzimos sim sistemas grandes, e nossos sistemas que são em desktops lideram o mercado mercosul do segmento, é uma grande empresa com grandes sistemas… e em breve vão ter grandes sitemas em php,kkkkkkkk

Ta ai pq sua empresa escoleu php… a experencia dela é concentrada em desktop… mas qdo aprenderem um pouco mais sobre sistemas web talvez mudem o conceito…

C

Polêmicas à parte… se quer fazer algo profissional mesmo… sem precisar fazer remendos no futuro… criar um parser é legal… como já citei o javaCC é um boa opção. Só precisa saber usar. Se você programa em C existem também opções similares, mas como aqui é um fórum de java eu aconselho o javaCC.
Veja um exemplo prático para ter idéia. É um exemplo de interpretador de e-mails: veja como você pode mesclar a interpretação dos < TOKENS > com ações programadas em java ( entre { } )

PARSER_BEGIN(Digest)

import java.io.*;

public class Digest {

  static int count = 0;

  static String buffer = "";

  public static void main(String args[]) throws ParseException {
    Digest parser = new Digest(System.in);
    System.out.println("DIGEST OF RECENT MESSAGES FROM THE JAVACC MAILING LIST");
    System.out.println("----------------------------------------------------------------------");
    System.out.println("");
    System.out.println("MESSAGE SUMMARY:");
    System.out.println("");
    parser.MailFile();
    if (count == 0) {
      System.out.println("There have been no messages since the last digest posting.");
      System.out.println("");
      System.out.println("----------------------------------------------------------------------");
    } else {
      System.out.println("");
      System.out.println("----------------------------------------------------------------------");
      System.out.println("");
      System.out.println(buffer);
    }
  }

}

PARSER_END(Digest)


// PARSER SPECIFICATIONS BEGIN HERE

void MailFile() :
	{
	}
{
  (
	{
	  count++;
	}
    MailMessage()
  )*
  <EOF>
}

void MailMessage() :
	{
	  Token subj=null, from=null, date=null, body;
	}
{
  ( subj=<SUBJECT> | from=<FROM> | date=<DATE> )+
	{
	  System.out.println(count + ". " + ((subj==null) ? "no subject" : subj.image));
	  buffer += "\n";
	  buffer += "Message " + count + ":\n";
	  buffer += "\n";
	  buffer += "Subject: " + ((subj==null) ? "no subject" : subj.image) + "\n";
	  buffer += "From: " + ((from==null) ? "" : from.image) + "\n";
	  buffer += "Date: " + ((date==null) ? "" : date.image) + "\n";
	  buffer += "\n";
	}
  ( body=<BODY>
	{
	  buffer += body.image;
	}
  )*
  <END>
	{
	  buffer += "\n";
	  buffer += "----------------------------------------------------------------------\n";
	}
}


// LEXICAL SPECIFICATIONS BEGIN HERE

TOKEN:
{
  <#EOL: "\n" | "\r" | "\r\n">
|
  <#TWOEOLS: (("\n"|"\r\n") <EOL>) | ("\r\r" [ "\n" ])>
|
  <#NOT_EOL: ~["\n","\r"]>
}

<DEFAULT>
SKIP:
{
  < <EOL> "*** EOOH ***" <EOL> > : MAILHEADER
|
  <~[]>
}

<MAILHEADER>
SKIP:
{
  <_TWOEOLS: <TWOEOLS>> : MAILBODY
    // We cannot have just a reference to a regular expression in a
    // lexical specification - i.e., we cannot simply have <TWOEOLS>.
|
  "Subject: " : MAILSUBJECT
|
  "From: " : MAILFROM
|
  "Date: " : MAILDATE
|
  <~[]>
}

<MAILSUBJECT>
TOKEN:
{
  <SUBJECT: ( <NOT_EOL> )+>
}

<MAILSUBJECT>
SKIP:
{
  <_EOL1: <EOL>> : MAILHEADER
}

<MAILFROM>
TOKEN:
{
  <FROM: ( <NOT_EOL> )+>
}

<MAILFROM>
SKIP:
{
  <_EOL2: <EOL>> : MAILHEADER
}

<MAILDATE>
TOKEN:
{
  <DATE: ( <NOT_EOL> )+>
}

<MAILDATE>
SKIP:
{
  <_EOL3: <EOL>> : MAILHEADER
}

<MAILBODY>
TOKEN:
{
  <BODY: (~["\n","\r","\u001f"])* <EOL>>
|
  <END: "\u001f"> : DEFAULT
}
X
ctdaa:
Polêmicas à parte.... se quer fazer algo profissional mesmo... sem precisar fazer remendos no futuro.... criar um parser é legal... como já citei o javaCC é um boa opção. Só precisa saber usar. Se você programa em C existem também opções similares, mas como aqui é um fórum de java eu aconselho o javaCC. Veja um exemplo prático para ter idéia. É um exemplo de interpretador de e-mails: veja como você pode mesclar a interpretação dos < TOKENS > com ações programadas em java ( entre { } )
PARSER_BEGIN(Digest)

import java.io.*;

public class Digest {

  static int count = 0;

  static String buffer = "";

  public static void main(String args[]) throws ParseException {
    Digest parser = new Digest(System.in);
    System.out.println("DIGEST OF RECENT MESSAGES FROM THE JAVACC MAILING LIST");
    System.out.println("----------------------------------------------------------------------");
    System.out.println("");
    System.out.println("MESSAGE SUMMARY:");
    System.out.println("");
    parser.MailFile();
    if (count == 0) {
      System.out.println("There have been no messages since the last digest posting.");
      System.out.println("");
      System.out.println("----------------------------------------------------------------------");
    } else {
      System.out.println("");
      System.out.println("----------------------------------------------------------------------");
      System.out.println("");
      System.out.println(buffer);
    }
  }

}

PARSER_END(Digest)


// PARSER SPECIFICATIONS BEGIN HERE

void MailFile() :
	{
	}
{
  (
	{
	  count++;
	}
    MailMessage()
  )*
  <EOF>
}

void MailMessage() :
	{
	  Token subj=null, from=null, date=null, body;
	}
{
  ( subj=<SUBJECT> | from=<FROM> | date=<DATE> )+
	{
	  System.out.println(count + ". " + ((subj==null) ? "no subject" : subj.image));
	  buffer += "\n";
	  buffer += "Message " + count + ":\n";
	  buffer += "\n";
	  buffer += "Subject: " + ((subj==null) ? "no subject" : subj.image) + "\n";
	  buffer += "From: " + ((from==null) ? "" : from.image) + "\n";
	  buffer += "Date: " + ((date==null) ? "" : date.image) + "\n";
	  buffer += "\n";
	}
  ( body=<BODY>
	{
	  buffer += body.image;
	}
  )*
  <END>
	{
	  buffer += "\n";
	  buffer += "----------------------------------------------------------------------\n";
	}
}


// LEXICAL SPECIFICATIONS BEGIN HERE

TOKEN:
{
  <#EOL: "\n" | "\r" | "\r\n">
|
  <#TWOEOLS: (("\n"|"\r\n") <EOL>) | ("\r\r" [ "\n" ])>
|
  <#NOT_EOL: ~["\n","\r"]>
}

<DEFAULT>
SKIP:
{
  < <EOL> "*** EOOH ***" <EOL> > : MAILHEADER
|
  <~[]>
}

<MAILHEADER>
SKIP:
{
  <_TWOEOLS: <TWOEOLS>> : MAILBODY
    // We cannot have just a reference to a regular expression in a
    // lexical specification - i.e., we cannot simply have <TWOEOLS>.
|
  "Subject: " : MAILSUBJECT
|
  "From: " : MAILFROM
|
  "Date: " : MAILDATE
|
  <~[]>
}

<MAILSUBJECT>
TOKEN:
{
  <SUBJECT: ( <NOT_EOL> )+>
}

<MAILSUBJECT>
SKIP:
{
  <_EOL1: <EOL>> : MAILHEADER
}

<MAILFROM>
TOKEN:
{
  <FROM: ( <NOT_EOL> )+>
}

<MAILFROM>
SKIP:
{
  <_EOL2: <EOL>> : MAILHEADER
}

<MAILDATE>
TOKEN:
{
  <DATE: ( <NOT_EOL> )+>
}

<MAILDATE>
SKIP:
{
  <_EOL3: <EOL>> : MAILHEADER
}

<MAILBODY>
TOKEN:
{
  <BODY: (~["\n","\r","\u001f"])* <EOL>>
|
  <END: "\u001f"> : DEFAULT
}

Bom amigo, muito interessante, mas como uso isso em php? tem como ?

X

luistiagos:
xjunior:
eduveks:
serathiuk:
eduveks:

(…)
Nenhum sistema grande e sério de sucesso usa PHP, me diga um?

1: http://www.magentocommerce.com/
2: http://ez.no/br/
3: http://www.facebook.com/

Você esta de brincadeira comigo né?

Facebook, por exemplo, dos mais lentos, esta agora com vários problemas de performance, quem usa sabe, e qual a arquitetura dos servidores daquilo? E o consumo de CPU que deve ser descumunal. Isto pra mim explica a lentidão do Facebook…

Quanto ao resto, não sei dizer, mas o que sei é trabalho em grandes bancos e grandes empresas a alguns anos, e nunca vi nada em PHP… quando digo nada é nada mesmo!

Portanto ao meu ver PHP não atinge os grandes clientes e ponto! No Brasil a coisa pode estar diferente, mas na minha opinião se tiver, estão meio loucos.

Não meu amigo, pelo que vejo vc é um cara muito inteligente, visualize comigo::

Tudo muda, tudo tende a melhorar, php não está mais na versão 4, não é? a performance ainda tem que melhorar mas não fica atrás de outras linguagens, mas também não é das melhores, aí em Portugal realmente, vc não deve ver falar em php mesmo…, aqui no Brasil se usa muito, mas nas próximas versões isso tende a melhorar como está melhorando, gostei muito da versão 5.3 e estou com muita vontade de ver a 6.0…

Bom, agora, PHP tende a melhorar, mas para enterprise é mais adequado Java mesmo, sabemos bem… Agora, sou desenvolvedor PHP e aqui na empresa escolheram PHP, porque? Fizeram um estudo e análise, e viram que ela iria suprir bem o que nescessitamos, aqui, produzimos sim sistemas grandes, e nossos sistemas que são em desktops lideram o mercado mercosul do segmento, é uma grande empresa com grandes sistemas… e em breve vão ter grandes sitemas em php,kkkkkkkk

Ta ai pq sua empresa escoleu php… a experencia dela é concentrada em desktop… mas qdo aprenderem um pouco mais sobre sistemas web talvez mudem o conceito…

Na verdade ela tinha escolhido antes Java, e tentaram adaptar-se à ferramenta powerlogic jcompany, muito boa, mas mesmo assim necessitava programar para fazer sistemas, e nosso objetivo é tirar o máximo de programação do desenvolvedor, sendo que ele somente ficaria responsável em desenvolver a lógica do negócio, como ficaria custoso pois aplicativos bons eram pagos e open source encontrou-se o openbravo, mas ele é pra sistemas pequenos, queriamos mais que isso, e outras coisas mais que aconteceram, daí decidiram migrar pra php, pois as soluções atendiam mais o que necessitavamos, por isso digo: depende do que vc quer, nem tudo se responde à uma linguagem, Java é bom mas não é Deus, senão outras não teriam lugar, não é?

E falo ainda, a nossa ferramenta é inédita e excepcional, e é para sistemas de grande porte, sem contar que as soluções novas desenvolvidas tornam a ferramenta escalável, muitas coisas que não foram desenvolvidas, e ainda, em pouco tempo temos um produto excepcional e acredite::em PHP::

C

xjunior:

Bom amigo, muito interessante, mas como uso isso em php? tem como ?

A compilação do javaCC vai gerar um pacote de classes java que podem ser executadas ou instanciadas de acordo com sua programação.

X

posso integrar essas classes em php?

C

acho que nao precisaria criar um “linguagem” para esta finalidade que vc quer . poderia fazer os scripts do relatorio em proprio codigo php e depois ir chamando estes script conforme a necessidade vide o dokuwiki, e um wiki que vc pode colocar codigo de php para ser excutado quando ta editando um documento…

X

bom amigo, uma forma de executar código de acordo de forma externa ou através de uma fonte diferente, é usando a função eval() do php, mas o meu problema é a sintaxe java que não é a mesma do php, tipo a tipagem, java tem e php não, php as variáveis são descritas om o $ antes do nome delas, e entre outros, por isso que eu ia criar uma mini-linguagem, mas estou pensando melhor em criar uma camada que interpreta o código java e substitui em php, assim uso a função eval para executá-lo… Uma boa idéia né?

A

Ok, e porquê você não cria por XML? Crie uma hierarquia de VOs, nomenclatura, etc, depois é só ler de XML. Vai ter o mesmo resultado no teu caso.

X

Bom amigo, tudo é analisado, vou verificar se esta é a melhor solução, pois não posso restringir a minha implementação, pois ela deverá suportar metalinguagem, assim, tenho que ter uma camada antes da linguagem para verificar qual o tipo de linguagem inserida.,…

A

Bom amigo, tudo é analisado, vou verificar se esta é a melhor solução, pois não posso restringir a minha implementação, pois ela deverá suportar metalinguagem, assim, tenho que ter uma camada antes da linguagem para verificar qual o tipo de linguagem inserida.,…

Dá uma pesquisada em JSON também. Se você quer interoperabilidade tão foda assim, sugiro que dê uma olhada. É bem simples de implementar. E bem, você poderia botar um atributo no XML especificando a “linguagem” =).

X

Bom amigo, tudo é analisado, vou verificar se esta é a melhor solução, pois não posso restringir a minha implementação, pois ela deverá suportar metalinguagem, assim, tenho que ter uma camada antes da linguagem para verificar qual o tipo de linguagem inserida.,…

Dá uma pesquisada em JSON também. Se você quer interoperabilidade tão foda assim, sugiro que dê uma olhada. É bem simples de implementar. E bem, você poderia botar um atributo no XML especificando a “linguagem” =).

Bom amigo, eu uso JSON normalmente para transferir dados por ajax…

me explica melhor sua solução para o problema, como vc imagina isso acontecendo?

flw mano :slight_smile:

L

Bem vendo este tipo de situação percebo que CC não é tão inutil assim no mercado…

B

Eu ainda acho que estão querendo matar um leão com uma bomba atômica.

X

Eu ainda acho que estão querendo matar um leão com uma bomba atômica.

Não meu amigo, de forma alguma, a qualidade depende de um bom projeto e ousadia, como vou ter algo de qualidade e com a máxima eficiência se não busquei as melhores alternativas e projetei da melhor forma?

Não é matar leão com bomba-atômica, e sim implementar uma solução que atenderá todos os casos sem que eu precise ficar voltando a analisar código toda vez que quiser implementar funções novas…

Não posso ser refém de algo que eu sei que tem como fazer melhor possível… :smiley:

X

tnaires:
Aproveitando o gancho, gostaria de deixar um link aqui:
Let’s build a compiler
Este artigo aborda os tópicos básicos de projeto de uma linguagem.

Galera, estou lendo este material aqui e ele é bem interessante e muito intuitivo!!!

L

Lei o livro do draganzinho sobre Compiladores se não me engando o proprio nome é Compiladores… e um q tem um dragão vermelho na capa…

X

é o livro: Livro Compiladores - Princípios, Técnicas e Ferramentas 2. ed.

L

é o livro: Livro Compiladores - Princípios, Técnicas e Ferramentas 2. ed.

Este mesmo…

X

bakana, aqui, comecei a implementar um interpretador para php de java, até agora tá dando certo, tá fazendo a análise léxica e já to montando a estrutura pra php e possibilitando a execução em da classe java em php, tá ficando legalll…
mas pode ser melhor estruturado, num sei se é interessante postar o código fonte do conjunto de classes que interpretam o java pra php aqui, mas se o pessoal quiser…

L

xjunior:
bakana, aqui, comecei a implementar um interpretador para php de java, até agora tá dando certo, tá fazendo a análise léxica e já to montando a estrutura pra php e possibilitando a execução em da classe java em php, tá ficando legalll…
mas pode ser melhor estruturado, num sei se é interessante postar o código fonte do conjunto de classes que interpretam o java pra php aqui, mas se o pessoal quiser…

espera chegar no analisador sintatico pra vc ver como fica legal… :twisted:

X

é fi, cheguei lá, mas num tá muito complexo não, tá tranquis pois não preciso implementar o java todo, e sim o que eu preciso…
:slight_smile:

L

xjunior:
é fi, cheguei lá, mas num tá muito complexo não, tá tranquis pois não preciso implementar o java todo, e sim o que eu preciso…
:-)

Então vc não chegou ainda na parte hard da coisa… a proposito vc esta se baseando em recursividade pra fazer seu analisador semantico?
pois pela propria natureza dele ele é 100% recursivo… o livro do dragãozinho te explica melhor isso…

mas minha dica é antes de sair fazendo a coisa pegue um papel e um lapis e diagrame a sintax faça um diagrama de linguagem de livre contexto no papel mesmo (o livro do dragão deve ensinar como faz…) e depois que vc ver que a coisa flui dai sim parta para o codigo… senão terá dor de cabeça… pois de principio é facil… ate chegar a algumas partes que vc ve que não tem saida… dai terá de apagar grande parte do codigo do analisador pra refaze-lo pra não dar dica… porem se vc usar o diagrama em papel e caneta mesmo vc pode fujir deste tipo de dor de cabeça…

X

bom amigo,olha este exemplo meio esdruncho que eu fiz e deu certo::

entrada de código:

public class Mae{ private String _variavel; private int _numero=0; protected String _trateMais=""; public Maealta(){ this._variavel="O número inserido foi: "; out.println(this._variavel); return this; } public Mae mais(int numero){ this._numero = numero; system.out.println(this._numero); return this; } protected String connectVar(String left){ this._trateMais = left; return this._trateMais; } } public class Filha extends Mae{ protected String connectVar(String left){ this._trateMais = "Nada mais"; return this._trateMais; } public void teste(){ out.println(this.alta().mais(1945).connectVar("!!!!!!!!ooooiiiiiiiii")); } }

e a saída::

class Mae{
private $_variavel;
private $_numero=0;
protected $_trateMais="";
  public function alta(){
    $this->_variavel="O número inserido foi: ";
    echo($this->_variavel);
    return $this;
  }
  public function mais($numero){
    $this->_numero = $numero;
    echo($this->_numero);
    return $this;
  }
  protected function connectVar($left){
    $this->_trateMais = $left;
    return $this->_trateMais;
  }
}
class Filha extends Mae{
  protected function connectVar($left){
    $this->_trateMais = "Nada mais";
    return $this->_trateMais;
  }
  public function teste(){
    echo($this->alta()->mais(1945)->connectVar("!!!!!!!!ooooiiiiiiiii"));
    }
}

Neste ponto, ele somente faz o papel de parser…

X

agora é implementar os métodos e fazer a interação que o jasper faz com as expressões…

:shock:

vou cansar…

L

mas o que vc esta fazendo é um conversor de java para php…
isso não é tão complicado como um compilador…
manjando bem de expressões regulares vc faz na boa…

X

como eu disse, por enquanto decidi fazer um parser mesmo…
agora como conversei com meu chefe, ele falou pra esperar um pouco para decidirmos o rumo desta parte, então parei no conversor, e não implementei o que eu ia implementar, que era parte da ferramenta em delphi daqui e o que o jasper entende e ainda um pouco de java, então seria tipo uma mesclagem, aí eu ia ter que fazer tudo do zero, mas como não definiu, resolvi esperar um pouco…

o parser está pronto, fiz rapidinho, acho que não demorei nem meia hora fazendo e testando…

X

quando criei o tópico, o intuito era criar um tipo de mini-linguagem mesmo, mas no decorrer da questão, e com as respostas decidi esperar um pouco a definição e criar um parser mesmo, mas esse tópico foi importante na minha decisão momentânea, mas quero aprender mais sobre compiladores, já que no meu curso de graduação não tem mais essa disciplina, que é Sistemas de Informação, tenho que aprender por fora mesmo…

Aqui mano, ce tem esse livro em PDF?

Criado 15 de janeiro de 2010
Ultima resposta 20 de jan. de 2010
Respostas 70
Participantes 10