O que é a análise em termos que um novo programador entenderia? [fechado]

Sou um estudante universitário a tirar o meu curso de Informática. Muitos dos meus colegas não têm feito muita programação. Eles fizeram as suas tarefas de aula, mas sejamos honestos, essas perguntas não te ensinam a programar.

Tive vários outros alunos a fazer-me perguntas sobre como analisar as coisas, e nunca tenho a certeza de como as explicar. É melhor começar apenas indo linha por linha procurando substrings, ou apenas dar-lhes o uma palestra mais complicada sobre o uso de uma análise lexical adequada, etc. para criar fichas, usar o BNF e tudo o resto? Eles nunca entendem quando tento explicar.

Qual é a melhor abordagem para explicar isso sem confundi-los ou desencorajá-los de realmente tentar.

Author: Community, 2010-05-29

8 answers

Eu explicaria a análise como o processo de transformar algum tipo de dados noutro tipo de dados.

Na prática, para mim isso está quase sempre transformando uma string, ou dados binários, em uma estrutura de dados dentro do meu programa.

Por exemplo, virar

":Nick!User@Host PRIVMSG #channel :Hello!"

Em (C)

struct irc_line {
    char *nick;
    char *user;
    char *host;
    char *command;
    char **arguments;
    char *message;
} sample = { "Nick", "User", "Host", "PRIVMSG", { "#channel" }, "Hello!" }
 62
Author: LukeN, 2010-05-29 00:04:38

A análise é o processo de análise do texto feito de uma sequência de símbolos para determinar a sua estrutura gramatical em relação a uma gramática formal dada (mais ou menos).

O analisador então constrói uma estrutura de dados com base nos tokens. Esta estrutura de dados pode então ser usada por um compilador, interpretador ou Tradutor para criar um programa executável ou biblioteca.

Texto Em Alt http://upload.wikimedia.org/wikipedia/en/a/a9/Parser_Flow.gif

Se eu desse você é uma frase em inglês, e pediu-lhe para quebrar a frase em suas partes da fala (substantivos, verbos, etc.), você estaria processando a sentença.

É a explicação mais simples de analisar. Dito isto, o processamento é um problema computacional não trivial. Você tem que começar com exemplos simples, e trabalhar seu caminho até o mais complexo.
 31
Author: Robert Harvey, 2010-05-29 04:10:55
O que é a análise?

Em Ciência da computação, análise é o processo de análise do texto para determinar se ele pertence a uma linguagem específica ou não (isto é, é sintaticamente válido para a gramática dessa linguagem). É um nome informal para o processo de análise sintática .

Por exemplo, suponha a linguagem a^n b^n (que significa o mesmo número de caracteres A seguido pelo mesmo número de caracteres B). Um analisador para essa linguagem aceitaria a entrada AABB e rejeitar a entrada AAAB. É isso que um analisador faz.

Além disso, durante este processo, poderá ser criada uma estrutura de dados para posterior processamento. No meu exemplo anterior, poderia, por exemplo, armazenar os AA e BB em duas pilhas separadas.

Qualquer coisa que aconteça depois disso, como dar significado a AA ou BB, ou transformá-lo em outra coisa, não é processar. Dar significado a partes de uma sequência de entrada de tokens é chamado análise semântica.

O que é que não está a analisar?
  • Analisar não é transformar uma coisa em outra. transformar A em B, é, em essência, o que umcompilador faz. Compilar toma vários passos, o processamento é apenas um deles.
  • analisar não é extrair significado de um texto. extrato significado de um texto, é análise semântica que é um passo do processo de compilação.
Qual é a maneira mais simples de entender aquilo? Acho que a melhor maneira de entender o conceito de análise é começar pelos conceitos mais simples. O mais simples no assunto de processamento de linguagem é o autômato finito. É um formalismo para processar linguagens regulares, como expressões regulares.

É muito simples, você tem uma entrada, um conjunto de estados e um conjunto de transições. Considere a seguinte linguagem construída sobre o alfabeto { A, B }, L = { w | w starts with 'AA' or 'BB' as substring }. O autômato abaixo representa um analisador possível para essa linguagem cujas todas as palavras válidas começam por " AA " ou "BB".

    A-->(q1)--A-->(qf)
   /  
 (q0)    
   \          
    B-->(q2)--B-->(qf)

É um analisador muito simples para essa linguagem. Você começa em (q0), o estado inicial e, em seguida, você lê um símbolo de entrada, se é A, em seguida, mover para (q1) estado, caso contrário (é um B, lembre-se lembrar que o alfabeto é apenas A e B) mover para (q2) estado e assim por diante. Se você chegar ao estado (qf), Então a entrada foi aceita.

Como é visual, só precisas de um lápis e um pedaço de papel para ... explique o que é um analisador para qualquer um, incluindo uma criança. Eu acho que a simplicidade é o que torna os autômatos a maneira mais adequada para o ensino de conceitos de processamento de linguagem, tais como análise. Finalmente, sendo um estudante de Ciência da Computação, você estudará tais conceitos em profundidade em aulas teóricas de ciência da computação, tais como linguagens formais e Teoria da Computação.
 21
Author: CARLOS LOTH, 2010-05-29 04:53:35

Eles que tentem escrever um programa que possa avaliar expressões aritméticas arbitrárias simples. Este é um problema simples de entender, mas à medida que você começa a se aprofundar nele um monte de análise básica começa a fazer sentido.

 5
Author: Sijin, 2010-05-29 00:01:37

Analisar é sobre ler dados em um formato, para que você possa usá-lo para suas necessidades.

Acho que tens de os ensinar a pensar assim. Então, esta é a maneira mais simples que eu posso pensar para explicar o tratamento para alguém novo a este conceito. Geralmente, tentamos analisar os dados uma linha de cada vez porque geralmente é mais fácil para os humanos pensar desta forma, dividindo e conquistando, e também mais fácil de codificar.

Chamamos o campo a todos os dados não indivisíveis mínimos. Nome é campo, idade é outro campo, e sobrenome é outro campo. Por exemplo.

Numa linha, podemos ter vários campos. A fim de distingui-los, podemos delimitar campos por separadores ou pelo comprimento máximo atribuído a cada campo.

Por exemplo: Separando os campos por vírgula

Paul, 20, Jones

Ou por espaço (o nome pode ter 20 letras no máximo, idade até 3 dígitos, Jones até 20 Letras)

Paul 020Jones

Qualquer um dos antes do conjunto de campos ser chamado de registro.

Para separar um registo de campo delimitado, temos de delimitar o registo. Um ponto será suficiente (embora você saiba que pode aplicar CR/LF).

Uma lista pode ser:

Michael, 39 Anos, Jordan.Shaquille, 40, o'Neal.Lebron, 24 Anos, James.

Ou com CR / LF

Michael, 39 Anos, Jordânia Shaquille, 40, o'Neal. Lebron, 24, James
Pode dizer-lhes para listarem 10 jogadores da nba (ou nlf) de que gostem. Então, eles devem digitá-los de acordo com formato. Em seguida, faça um programa para analisá-lo e exibir cada registro. Um grupo, pode fazer uma lista em um formato separado por vírgulas e um programa para processar uma lista em um formato de tamanho fixo, e viceversa.
 2
Author: user347594, 2015-12-22 23:11:28

Em linguística, para dividir a linguagem em pequenos componentes que podem ser analisados. Por exemplo,analisar esta frase envolveria dividi-la em palavras e frases e identificar o tipo de cada componente (por exemplo, verbo, adjetivo ou substantivo).

A análise é uma parte muito importante de muitas disciplinas de ciência da computação. Por exemplo, Compiladores devem processar o código fonte para ser capaz de traduzi-lo em código objeto. Da mesma forma, qualquer aplicação que processa comandos complexos deve ser capaz de analisem os comandos. Isto inclui praticamente todas as aplicações do utilizador final.

A análise é frequentemente dividida em análise lexical e análise semântica. A análise Lexical concentra-se na Divisão de cadeias em componentes, chamados tokens, com base na pontuação e outras chaves. Análise semântica então tenta determinar o significado da cadeia.

Http://www.webopedia.com/TERM/P/parse.html

 1
Author: Razman, 2015-01-13 05:13:16
Processar-me é dividir algo em partes significativas... usando um conjunto definido ou predefinido conhecido, comum da parte "definições".

Para linguagens de programação haveria partes de palavras-chave, sequências de pontuação utilizáveis...

Para tarte de abóbora pode ser algo como a crosta, recheio e coberturas.

Para as línguas escritas pode haver o que uma palavra é, uma frase, o que um verbo é...

Para as línguas faladas pode ser tom, volume, Humor, implicação, emoção, contexto

A análise de sintaxe (assim como o senso comum afinal) diria se o que está a analisar é uma pumpkinpie ou uma linguagem de programação. Tem crosta? bem, talvez seja pudim de abóbora ou talvez uma linguagem falada !

Uma coisa a notar sobre as coisas de análise é que normalmente existem muitas maneiras de quebrar as coisas em partes.

Por exemplo, pode-se Partir uma torta de abóbora cortando-a do centro para a borda ou do fundo para o topo ou com uma colher para obter o enchimento ou usando um martelo de trenó ou comê-lo. E a forma como analisas as coisas determinaria se fazer alguma coisa com essas partes seria fácil ou difícil.

No mundo das "linguagens de computador", existem maneiras comuns de processar o código fonte do texto. Estes métodos comuns (algoritmos) têm títulos ou nomes. Procure na Internet métodos/nomes comuns para encontrar formas de processar línguas. A Wikipédia pode ajudar a este respeito.

 0
Author: DevPlayer, 2012-12-12 19:30:09

Explicação simples: a análise é quebrar um bloco de dados em peças mais pequenas (fichas) seguindo um conjunto de regras (utilizando delimitadores, por exemplo), para que estes dados pudessem ser processos peça a peça (geridos, analisados, interpretados, transmitidos, ets).

Exemplos: muitas aplicações (como programas de folha de cálculo) usam o formato de ficheiro CSV (valores separados por vírgulas) para importar e exportar dados. O formato CSV permite que as aplicações processem estes dados com a ajuda de um analisador. Os navegadores Web têm parsers especiais para arquivos HTML e CSS. Os JSON parsers existem. Todos os formatos de arquivos especiais devem ter alguns parsers projetados especificamente para eles.

 0
Author: Y-B, 2016-02-12 03:05:49