O artigo está muito bem escrito, qualitativamente. É lógico supor que a continuação da análise lexical é a análise "semântica", sobre a qual proponho escrever o próximo artigo. E depois da análise semântica, estaremos a um passo de criar uma IA. :)
ZY: Somente a psique artificial com funções intelectuais básicas será deixada para ser escrita.
Pergunta séria para o autor:
Tenho minha própria linguagem de marcação. Ela tem um conjunto de regras e consiste em palavras-chave, que são números.
A maioria das palavras-chave é intercalada com palavras de string - nomes de grupos ou elementos, e não há necessidade de analisar esses "tokens" de string. O compilador MQL detecta erros nos nomes das palavras-chave, porque suas definições estão conectadas no arquivo.
No entanto, o usuário pode cometer violações das regras da linguagem ao compilar o código de marcação. É necessário verificar o código após a compilação em busca de erros relacionados às regras, não à gramática.
É possível fazer isso com base no conceito de análise descrito no artigo ou é necessário criar um mecanismo diferente?
Confio em sua experiência.
Muito obrigado.
...
Isso pode ser feito com base no conceito de análise descrito no documento ou é necessário um mecanismo diferente?
...
Para mim, escolhi a seguinte solução: examinar o código (essencialmente uma matriz de valores) em busca de violações da sequência de palavras-chave (comandos) e enviar mensagens sobre elas para o registro. Em princípio, isso é simples, pois você pode monitorar a sequência de números por meio de um conjunto de condições, filtros e sinalizadores.
A análise léxica, gramatical e sintática é muito mais difícil, pois as palavras humanas não têm equivalente numérico, ao contrário dos comandos. As palavras têm propriedades que não têm um número, e essas propriedades são muitas. A análise léxica exige que se trabalhe com propriedades diferentes não apenas das palavras, mas também das frases ou da pontuação. E acima de tudo isso "flutua" o significado incorporado no texto (contexto), cuja extração pode se tornar a tarefa da análise semântica no futuro (não tenho certeza de que ela exista).
Para minhas tarefas, um simples controle da sequência de comandos é suficiente.
Provavelmente, usando esse método, é possível escrever um conversor mq4->mq5 para o mercado:
- É lançado um consultor ex5, que é alimentado com código mq4.
- A saída é o código mq5.
Publico fontes atualizadas.
Garantimos a compilação nas compilações mais recentes.
Corrigimos vários bugs difíceis de encontrar.
Estou publicando o código-fonte atualizado.
Olá, sou relativamente novato aqui.
Depois de ler o artigo, presumi que o RESULTADO seria uma ferramenta de pesquisa para procurar o código gerado pelo assistente.
Baixei o arquivo zip. Instalei o script mql.mq5 e o compilei sem erros.
A execução do mql.ex5 não produz nenhum resultado na tela.
Estou no modo de aprendizado. Quero poder usar o assistente para usar o código fora da base de código e, em seguida, analisar e modificar para obter um EA utilizável.
Qualquer ajuda seria muito bem-vinda.
Obrigado pela ajuda

- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Análise sintática MQL via ferramentas MQL foi publicado:
Este artigo descreve um pré-processador, um leitor e um analisador para examinar códigos fonte em MQL. A implementação em MQL está anexada ao artigo.
Basicamente, a programação consiste na criação e automação de certos processos usando linguagens gerais ou especiais. Graças à sua linguagem MQL embutida, a plataforma de negociação MetaTrader permite implementar programação para resolver as mais diversas tarefas do trader. Normalmente, o processo de programação se baseia na análise e no processamento de dados de aplicativos segundo regras já estabelecidas em códigos fonte. No entanto, às vezes, é necessário analisar e processar esses mesmos códigos fonte. Aqui estão alguns exemplos:
Uma das tarefas mais procuradas e fáceis de entender é a da pesquisa contextual em bases de códigos-fonte. Naturalmente, pode-se procurar no código fonte tanto strings como texto sem formatação, não entanto, ao fazer isso, perde-se a semântica da pesquisa. Além disso, no caso de códigos fonte, é bom distinguir as especificidades do uso de substrings. Se um programador quiser descobrir onde se usa uma determinada variável, por exemplo, "notification", uma busca simples pelo nome pode dar dados a mais se a string for encontrada em outros valores, como no nome de método, no literal ou no comentário.
Quanto a grandes projetos, normalmente, uma das tarefas mais complexas e populares é a da visualização de estruturas de código, de dependências e de hierarquia de classes. Esse trabalho está intimamente relacionado à meta-programação permitindo refatoração (aprimoramento) e geração de código. Lembre que o MetaEditor possui alguns recursos de geração de código, em particular, a criação de códigos fonte especializados usando Assistentes ou a geração de arquivos de cabeçalho de código fonte. No entanto, o potencial dessa tecnologia é muito mais amplo.
A análise da estrutura do código permite calcular várias métricas de qualidade, estatísticas e também encontrar fontes típicas de erros de tempo de execução que o compilador não pode detectar. Na verdade, é claro que o próprio compilador é a primeira ferramenta de análise de código fonte e fornece muitos tipos de avisos, mas a verificação de todos os possíveis erros geralmente não é incorporada a ele, uma vez que isso é uma tarefa muito grande e, portanto, é atribuído a programas individuais.
Além disso, a análise do código fonte é usada para formatação e ofuscação.
Autor: Stanislav Korotky