Sintassi regolare - che cosa significa?

3

Sto leggendo " Meno è esponenzialmente più " e c'è un l'elenco dei vantaggi di Go, prima di tutto, cita "sintassi regolare (non serve una tabella dei simboli da analizzare)".

Che cosa significa "sintassi regolare"? Quali proprietà definiscono "la lingua X ha (non) una sintassi regolare"?

    
posta greenoldman 02.01.2016 - 12:41
fonte

2 risposte

8

Linguaggi come il C ++ richiedono una tabella dei simboli per analizzare correttamente, perché alcuni costrutti sono sintatticamente ambigui se non si sa se un determinato token rappresenta un tipo, una funzione o una variabile.

L'esempio concreto principale di cui sono a conoscenza è che la dichiarazione delle funzioni e la costruzione dei valori utilizzano entrambe le parentesi:

int foo(3); // creates an integer called foo with value 3
int bar(int); // creates a function called bar that takes an int and returns an int

Per analizzare questo, devi sapere che int è il nome di un tipo e 3 non lo è. A causa dei tipi definiti dall'utente, in generale non puoi sapere se un determinato token è un nome di tipo a meno che tu non abbia una tabella dei simboli contenente tutti i tipi che il parser ha visto fino a questo punto. Tieni presente che il famigerato " Most Vexing Parse " è strettamente correlato a questa particolare ambiguità.

L'autore che hai citato probabilmente afferma che la lingua Go non ha ambiguità come questa, e quindi può essere analizzata correttamente senza una tabella dei simboli. Se osservi le specifiche della lingua ufficiale di Google , noterai che praticamente tutto ciò che riguarda la sintassi viene fornito con una definizione EBNF. Non l'ho letto a fondo, ma sembra probabile che la sintassi di Go sia una grammatica attuale senza contesto, non semplicemente approssimata da una, che è piuttosto carina rispetto a C ++.

    
risposta data 02.01.2016 - 14:52
fonte
-4

Uno sguardo alla definizione di Lingua normale su Wikipedia potrebbe darti alcuni suggerimenti. Nota che questo va nella teoria del linguaggio e l'articolo di Wikipedia non è così facile da leggere.

In sostanza, una lingua normale è una lingua che può essere espressa mediante espressioni regolari.

Sono sicuro che qualcuno riuscirà a entrare in più dettagli e ad avere la risposta comprensibile da normali esseri umani, ma che qualcuno non è me ...

    
risposta data 02.01.2016 - 14:35
fonte

Leggi altre domande sui tag