All Packages Class Hierarchy This Package Previous Next Index
Class it.unipi.di.compass.cctwo.constraint.Constraint
java.lang.Object
|
+----it.unipi.di.compass.cctwo.constraint.Constraint
- public class Constraint
- extends Object
I commenti in stile C e in stile C++ (// ... EOL) sono comunque ammessi.
Questa è la classe che effettua il parse e compila i constraint di
CompAss.
La grammatica seguente definisce la struttura del file dei
constraint:
<file> ::= <choice block> { <block> }*
<block> ::= <choice block> | <list block>
<choice block> ::= <block name> [->(<icon name>)] {
[<constraint list>],
[CHOICE(<choice block name list>)]
} [<custom function list>];
<block name> ::= <string>
<constraint list> ::= <constraint> [ , <constraint list>]
<constraint> ::= <item group>[(<op>)][<display info>]
<item group> ::= [<conditional>][<item list>] | [ <conditional> ][ALL]
<conditional> ::= <logical op>(<conditional list>) =>
<logical op> ::= AND | OR | NOT
<conditional list> ::= <item list> | <choice block name list>
<item list> ::= <item> [ , <item list>] | #<list block name> [ , <item list>] |
<item group> [ , <item list>]
<list block name> ::= <block name>
<display info> ::= -> ( [ <node name> ], [ <icon name> ], [ <value> ])
<node name> ::= <string>
<icon name> ::= <string>
<value> ::= <num> Questo valore dà una priorità di visualizzazione all'interno del nodo
<item> ::= [<conditional>]<string>[<display info>]
<choice block name list> ::= <block name> { , <block name> }*
<custom function list> ::= <function declaration> { , <function declaration> }*
<function declaration> ::= <function name>([<parameter optional>]) |
&<function code>([<parameter optional>])
<function name> ::= <identifier>
<function code> ::= <num>
<parameter optional> ::= <num>
<list block> ::= <block name> <item group>
<op> ::= <num> [ + | -]
<num> ::= Numero intero positivo
<string> ::= Stringa che inizia e finisce per un non ws e che può contenere ws
<identifier> ::= Identificatore [a-zA-Z_][a-zA-Z_0-9]*
Nota: Gli <item> della <item list>
non possono avere l'estensione <display info>
nel caso in cui siano nella <conditional list>.
I vincoli espressi nel file dei constraint vengono
convertiti in un formato che viene poi salvato su file.
Il file dei costraint segue la segunte sintassi:
<file> ::= <string table> <display info table> <choice block table>
<item group table> <conditional table>
<string table> ::= <table size> { <string> }*
<string> ::= UTF string
<display info table> ::= <table size> { <display info> }*
<display info> ::= <node name ref> <icon name ref> <value>
<choice block table> ::= <table size> { <choice block> }*
<choice block> ::= <string ref> <icon ref>
<constraint num> { <constraint type> <item group ref> [ <param> ] <display info ref> }*
<choice block num> { <choice block ref> }*
<function num> { <function code> <function param> }*
<item group table> ::= <table size> { <item group> }*
<item group> ::= <conditional ref> <item num> { <conditional ref> <int code> <display info ref> }* <item group ref num> { <item group ref> }*
<conditional table> ::= <table size> { <conditional> }*
<conditional> ::= <conditional type> <list type> [ <choice num> { <> }* | <item num> { <conditional ref> <int code> }* <item group ref num> { <item group ref> }* ]
I campi <XXX size> e <XXX num>
rappresentano il numero di oggetti che seguono. Il numero
è codificato in due bytes (0..65535). Lo stesso si
può dire per <param>, <value>
e <function code>.
Un <char> è un carattere in formato UNICODE
(2 bytes).
I campi tipo <XXX ref> rappresentano riferimenti,
ovvero indici che identificano elementi nelle varie tabelle.
Vista la dimensione della tabella, limitata da <table
size>, i riferimenti assumono la stessa forma: un intero
codificato in due bytes.
Il campo <constraint type> è costituito
da un byte che attualmente può assumere quattro valori
associati alle quattro funzioni di prima classe previste dal
configuration assistant:
| <constraint type>
| 0 | Nec |
| 1 | Exactly
|
| 2 | AtLeast
|
| 3 | AtMost
|
In un byte vengono codificati 2 valori: <conditional
type> e <list type>. I bit utilizzati
sono i tre bit meno significativi del byte: b1,
b2 e b3 (con b1 il più
significativo dei tre). Il bit b1 indica il
valore del campo <list type> che può
assumere i valori 0 o 1. I restanti due bit individuano il campo
<contitional type>. In pratica abbiamo che
i valori di questi campi sono:
| <conditional type>
| 0 | AND |
| 1 | OR |
| 2 | NOT |
| <list type> |
0 | Ci sono solo <obj ref> poiché
individua una lista di scelte |
| 1 | <Sono presenti
sia obj ref> che <item group ref> poich´
si tratta di una lista di item. |
Nel file binario sono stati codificati con un unico simbolo
più elementi del linguaggio. Dovrebbe risultare evidente
come gli elementi si possono riflettere nel file binario.
L'item group di riferimento 0 &egrae; riservato all gruppo
speciale ALL.
Un riferimento al display info 0 indica le display info di
default del contesto.
Se <conditional type> vale
0 si assume che la condizione è soddisfatta (antecedente
Esiste la classe BinaryConstraintDecoder nel package cctwo in
grado di disassemblare un file binario di constraint.
sempre vero).
- Version:
- 1.0
- Author:
- Antonio Cisternino
- See Also:
- BinaryConstraintDecoder
-
navFileExtension
- Estensione dei nomi dei file di navigazione.
-
navFilePrefix
- Prefisso dei nomi dei file di navigazione.
-
Constraint()
-
-
generateConstraints(TableManager, DataOutputStream)
- Genera i constraint associati al file parsato.
-
generateHTML(TableManager, File, File)
- Genera lo scheletro HTML per la navigazione.
-
generateITEMLIST(TableManager, File, File)
- Genera la lista di tutti gli item.
-
parse(int, File, Reader, Reader, Reader, NodeNames)
- Effettua il parse del file sorgente letto da uno stream in
input.
navFilePrefix
public static String navFilePrefix
- Prefisso dei nomi dei file di navigazione.
navFileExtension
public static String navFileExtension
- Estensione dei nomi dei file di navigazione.
Constraint
public Constraint()
parse
public static TableManager parse(int itemNum,
File dbDir,
Reader funcNamesDB,
Reader outputText,
Reader in,
NodeNames names) throws IOException, ParserException
- Effettua il parse del file sorgente letto da uno stream in
input.
- Parameters:
- itemNum - Numero di descrizioni per file .html messe dal compilatore ccone.
- dbDir - Directory contenente il file item.cdb generato
dal compilatore ccone.
- funcNamesDB - Stream da cui leggere i nomi delle funzioni
conosciute. Il codice della funzione è
dato dalla linea in cui si trova la funzione.
La prima linea ha indice 0.
- outputText - File da cui leggere le frasi da generare.
- in - Stream da cui leggere il sorgente.
- names - Nomi dei nodi di visualizzazione restituiti dal metodo
parseAndGenerateDisplayTree della classe Tree nel package
cctwo.tree.
- Returns:
- Restituisce la rappresentazione intermedia dei constraint parsati.
- Throws: IOException
- Indica problemi di lettura
della sorgente o di scrittura
del file Item.java.
- Throws: ParserException
- Indica un errore
di parsing.
- See Also:
- SymbolTable, CTokenizer, CParser, IdeDescriptor, parseAndGenerateDisplayTree
generateConstraints
public static void generateConstraints(TableManager tm,
DataOutputStream out) throws IOException
- Genera i constraint associati al file parsato.
- Parameters:
- tm - Rappresentazione intermedia dei constraint.
- out - Stream su cui salvare i constraint.
- Throws: IOException
- Errore di scrittura dei constraint.
generateHTML
public static void generateHTML(TableManager tm,
File templ,
File dir) throws IOException
- Genera lo scheletro HTML per la navigazione.
- Parameters:
- tm - Rappresentazione intermedia dei constraint.
- templ - File template per la navigazione
- dir - Directory in cui salvare i file HTML.
- Throws: IOException
- Errore di scrittura dei file HTML.
generateITEMLIST
public static void generateITEMLIST(TableManager tm,
File templ,
File dir) throws IOException
- Genera la lista di tutti gli item.
- Parameters:
- tm - Rappresentazione intermedia dei constraint.
- templ - File template per la navigazione
- dir - Directory in cui salvare il file all.html.
- Throws: IOException
- Errore di scrittura dei file HTML.
All Packages Class Hierarchy This Package Previous Next Index