chat
Class Parser

java.lang.Object
  |
  +--chat.Parser

class Parser
extends java.lang.Object

Il parser specifico per la seguente grammatica:

scopo ::= nome / chiave @ endpoint
nome ::= ( a |...| z | A |...| Z | 0 |...| 9 | _ | $ ) { a |...| z | A |...| Z | 0 |...| 9 | _ | $ }31
chiave ::= numero { , numero }
endpoint ::= ip : numero { @ ip : numero }
ip ::= numero . numero . numero . numero
numero ::= 0 [ x cifra-hex { cifra-hex } | { cifra } ] | cifra-non-nulla { cifra }
cifra ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
cifra-non-nulla ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
cifra-hex ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | a | b | c | d | e | f | A | B | C | D | E | F

Sono riconosciuti i commenti in stile C e C++.

Version:
1.0
Author:
Marco Cimatti

Field Summary
private  Lexer lexer
          Il lexer incapsulato, associato allo stream fisico.
 
Constructor Summary
(package private) Parser(java.io.Reader stream)
          Unico costruttore.
 
Method Summary
(package private)  void avanzaToken()
          Procedura per avanzare lungo il flusso di caratteri; da invocare OBBLIGATORIAMENTE all'avvio per portare il lexer interno sul primo token disponibile dallo stream di lettura.
protected  java.security.PublicKey chiave()
          Procedura associata alla regola di produzione "chiave" della grammatica.
protected  Endpoint endpoint()
          Procedura associata alla regola di produzione "endpoint" della grammatica.
protected  java.net.InetAddress ip()
          Procedura associata alla regola di produzione "ip" della grammatica.
protected  java.lang.String nome()
          Procedura associata alla regola di produzione "nome" della grammatica.
protected  long numero()
          Procedura associata alla regola di produzione "numero" della grammatica.
(package private)  Contatto prossimo()
          Procedura che estrae la prima parola disponibile dallo stream cui è associato il Lexer lexer.
(package private)  java.lang.String tokenCorrente()
          Funzione che restituisce il token disponibile dal Lexer lexer, senza estrarne uno nuovo.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

lexer

private Lexer lexer
Il lexer incapsulato, associato allo stream fisico.
See Also:
Lexer
Constructor Detail

Parser

Parser(java.io.Reader stream)
Unico costruttore.
Parameters:
stream - il java.io.Reader su cui far agire il lexer lexer.
See Also:
lexer
Method Detail

nome

protected java.lang.String nome()
                         throws java.io.IOException
Procedura associata alla regola di produzione "nome" della grammatica.
Returns:
una stringa formata secondo la produzione "nome".
Throws:
java.io.IOException - se generata dal lexer.
java.lang.RuntimeException - in caso di errori sintattici.

chiave

protected java.security.PublicKey chiave()
                                  throws java.io.IOException
Procedura associata alla regola di produzione "chiave" della grammatica.
Returns:
la cryptix.provider.rsa.RawRSAPublicKey ottenuta mediante la sintassi espressa della riscrittura "chiave".
Throws:
java.io.IOException - se generata dal lexer.
java.lang.RuntimeException - in caso di errori sintattici.

endpoint

protected Endpoint endpoint()
                     throws java.io.IOException
Procedura associata alla regola di produzione "endpoint" della grammatica.
Returns:
l'Endpoint secondo la sintassi della regola di riscrittura "endpoint" della grammatica.
Throws:
java.io.IOException - se generata dal lexer.
java.lang.RuntimeException - in caso di errori sintattici.
See Also:
Endpoint

ip

protected java.net.InetAddress ip()
                           throws java.io.IOException
Procedura associata alla regola di produzione "ip" della grammatica.
Returns:
il java.net.InetAddress in base alla produzione "ip" della grammatica.
Throws:
java.io.IOException - se generata dal lexer oppure se l'indirizzo Internet letto non rappresenta un IP valido.
java.lang.RuntimeException - in caso di errori sintattici.

numero

protected long numero()
               throws java.io.IOException
Procedura associata alla regola di produzione "numero" della grammatica.
Returns:
il long secondo la riscrittura "numero" della grammatica.
Throws:
java.io.IOException - se generata dal lexer.
java.lang.RuntimeException - in caso di errori sintattici.

avanzaToken

void avanzaToken()
           throws java.io.IOException
Procedura per avanzare lungo il flusso di caratteri; da invocare OBBLIGATORIAMENTE all'avvio per portare il lexer interno sul primo token disponibile dallo stream di lettura.
Throws:
java.io.IOException - se generata dal lexer.
See Also:
lexer

tokenCorrente

java.lang.String tokenCorrente()
Funzione che restituisce il token disponibile dal Lexer lexer, senza estrarne uno nuovo.
Returns:
La stringa costituita dal token ultimo estratto.
See Also:
lexer, Lexer, Lexer.tokenCorrente()

prossimo

Contatto prossimo()
            throws java.io.IOException
Procedura che estrae la prima parola disponibile dallo stream cui è associato il Lexer lexer. Realizza lo scopo della grammatica:

scopo ::= nome / chiave @ endpoint

Returns:
Il primo Contatto disponibile nel flusso di char dello stream di lexer.
Throws:
java.io.IOException - se prodotta da lexer.
java.lang.RuntimeException - in caso di errori sintattici o semantici.
See Also:
Contatto