La tabella dei contenuti può essere analizzata utilizzando una grammatica formale?

1

Una tabella dei contenuti può essere simile a:

Preface 
Table of Content
Chapter 1 ...
1.1 ...
1.1.1 ...
1.1.2 ....
1.2 ...
Summary
Exercises
Chapter 2 ...
...
Appendix ...
A ...
A.1 ...
A.2 ...
B ...
References 
Index

La sua struttura logica è un albero di più livelli:

Preface 
Table of Content
Chapter 1 ...
    1.1 ...
        1.1.1 ...
        1.1.2 ....
    1.2 ...
    Summary
    Exercises
Chapter 2 ...
...
Appendix ...
    A ...
        A.1 ...
        A.2 ...
    B ...
References 
Index
  1. Mi chiedo se analizzare un tavolo di contenuto in un albero sia un parsing problema secondo una certa grammatica (ad esempio grammatica regolare, grammatica context-free o alcune altre grammatiche)?
  2. Se sì, come possiamo specificare la grammatica di una tabella di contenuti?
  3. Il tuo metodo di analisi può trattare casi ambigui, ad es.

    Preface 
    Table of Content
    Chapter 1 ...
    1.1 ...
    1.1.1 ...
    1.1.2 ....
    1.2 ...
    Summary
    Exercises
    Chapter 2 ...
    2.1.1 ...
    2.1.2 ...
    Appendix ...
    A ...
    A.1 ...
    A.2 ...
    B ...
    References 
    Index
    

    dove 2.1.1 ... è un livello inferiore a Chapter 2 ... , mentre 1.1.1 ... è due livelli inferiori a Chapter 1 ?

Grazie.

    
posta Tim 25.02.2015 - 00:39
fonte

1 risposta

1

Questo non è né completo né testato, ma dovrebbe darti un'idea generale.

start
  = outermost_line+

outermost_line
  = no_dot_word description? '\n' one_dot_line*

one_dot_line
  = one_dot_word description? '\n' two_dot_line* | two_dot_line

two_dot_line
  = two_dot_word description? '\n' three_dot_line* | three_dot_line

Il outermost_line contiene un numero qualsiasi di one_dot_lines al suo interno. Il modo in cui gestisci il salto a due punti è il | two_dot_line che può passare al livello successivo. Verificare che i numeri dei capitoli corrispondano ai numeri delle sezioni che non vorrei fare nel parser, ma al livello successivo.

    
risposta data 25.02.2015 - 14:27
fonte

Leggi altre domande sui tag