Resultados da pesquisa a pedido "compiler-construction"
Encontrar uma gramática não é LL (1) sem usar métodos clássicos e transformá-la em LL (1)
Digamos que eu tenho essa gramática: S -> A C x | u B A A -> z A y | S u | ε B -> C x | y B u C -> B w B | w A Esta gramática obviamente não é LL (1), que posso encontrar na construção da tabela de análise. Mas há alguma maneira de provar que ...
Escala lenta paraCada um em Kotlin
Eu usei o código a seguir para medir o desempenho de diferentes construções de sintaxe no Kotlin fun time(what: String, body: () -> Int) { val start = System.currentTimeMillis() var sum = 0 repeat(10) { sum += body() } val end = ...
Por que a Intel mudou o mecanismo de previsão de ramificação estática ao longo desses anos?
Deaqui [https://groups.google.com/forum/#!topic/mechanical-sympathy/pMN6TbXwOUc] Eu sei que a Intel implementou vários mecanismos de previsão de ramificação estática nos últimos anos: 80486 idade: sempre não tomada Pentium4 age: Tomada para ...
Adicionando informações de linha ao meu AST no OCaml
Estou criando um compilador no OCaml, onde a gramática é a seguinte: type expr = | Cons of const | Var of string | List of ( expr list ) | Sum of ( expr * expr ) | Less_than of ( expr * expr ) | Conditional of ( expr * expr * expr ) | ...
Como colocar o arquivo de cabeçalho em .tab.h no Bison?
Eu escrevi o cabeçalho do código bison: %{ #include "foo.h" %}E eu defini uma estrutura chamada 'Foo' no cabeçalho. Eu gostaria de usá-lo como tipo de token no Bison. %define api.value.type union %token <Foo*> barEntão eu uso-d opção ...
Por que o NASM não tem problemas com mnemônicos de instruções válidos como nomes de símbolos em operandos?
Eu escrevi o seguinte programa simples, mas o nasm se recusa a compilá-lo. section .text global _start _start: mov rax, 0x01 mov rdi, 0x01 mov rsi, str mov rdx, 0x03 syscall mov rax, 60 syscall segment .data str db 'Some string' nasm -f elf64 ...
Como usar o Finite Automaton para implementar um scanner
Estou construindo um scanner simples. Suponha que eu tenha os seguintes tokens definidos para o meu idioma: !, !=, !==, <, <<, {Agora eu posso especificá-los usando expressões regulares, portanto: !=?=? | { | <<?Então eu ...
O que são [Rendimento, Espera, Entrada, Retorno] na gramática EcmaScript
Muitas produções em EcmaScript são fornecidas com os seguintes "modificadores": [Yield, Await, In, Return]Aqui estão alguns exemplos: ArrayLiteral[Yield, Await]: ... ElementList[Yield, Await]: ... AssignmentExpression[+In, ?Yield, ?Await]Eu ...
Como os programas escritos em idiomas interpretados são executados se nunca são traduzidos para linguagem de máquina?
Os computadores podem entender apenas a linguagem de máquina. Então, como os interpretadores executam um programa diretamente, sem traduzi-lo para a linguagem de máquina? Por exemplo: <?php echo "Hello, World!" ;É um simples programa Hello World ...
Compilando um AST para montagem
Eu tenho uma árvore de sintaxe abstrata que preciso converter em assembly para uma máquina virtual. Como não sei como fazer isso, comecei a usar uma cadeia de modelos de string. Exemplo de pseudo-código do que quero dizer, digamos que ...