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:

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:

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> 0Nec
1Exactly
2AtLeast
3AtMost

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> 0AND
1OR
2NOT

<list type> 0Ci 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

Variable Index

 o navFileExtension
Estensione dei nomi dei file di navigazione.
 o navFilePrefix
Prefisso dei nomi dei file di navigazione.

Constructor Index

 o Constraint()

Method Index

 o generateConstraints(TableManager, DataOutputStream)
Genera i constraint associati al file parsato.
 o generateHTML(TableManager, File, File)
Genera lo scheletro HTML per la navigazione.
 o generateITEMLIST(TableManager, File, File)
Genera la lista di tutti gli item.
 o parse(int, File, Reader, Reader, Reader, NodeNames)
Effettua il parse del file sorgente letto da uno stream in input.

Variables

 o navFilePrefix
 public static String navFilePrefix
Prefisso dei nomi dei file di navigazione.

 o navFileExtension
 public static String navFileExtension
Estensione dei nomi dei file di navigazione.

Constructors

 o Constraint
 public Constraint()

Methods

 o 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
 o 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.
 o 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.
 o 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