Command Line Parsing Module

The Command line parsing module uses a synthesizer to construct parse tables. The parse table synthesis system is also used to construct the command line options.

This document provides only an overview of the principle features of the parser system. The current sources and intermidate generated files provide more information.

Source For Parser

SYSTEM "Software Product License" "CERT"

FIELD Mic_Head	"MIC-Head"
    PARAMETER	mic_head_alg		String
    PARAMETER	mic_head_digest_alg	String
    PARAMETER	mic_head_p1		String
FIELD Issuer "Issuer"
    PARAMETER   issuer			String
FIELD Authorization "Authorization"
    PARAMETER	authorization		String
FIELD Authorized_User "Authorized-User"
    PARAMETER	Authorized_User		List [String]
FIELD Product_Name "Product-Name"
    PARAMETER	Product_Name		String
FIELD Producer "Producer"
    PARAMETER	Producer		String
FIELD Units "Units"
    PARAMETER	Units			Integer
FIELD Version "Version"
    PARAMETER	Version			String
FIELD Start_Date "Start-Date"		
    PARAMETER	Start_Date		DateTime
    SYNTAX FREE
FIELD Expiration_Date "Expiration-Date"
    PARAMETER	Expiration_Date		DateTime
FIELD Availability "Availability"
    PARAMETER	Availability		String
FIELD Options "Options"
    PARAMETER	Options			List [String]
FIELD Hardware_ID "Hardware-ID"
    PARAMETER	Hardware_ID		String
FIELD Mic_Body	"MIC-Body"
    PARAMETER	mic_body_alg		String
    PARAMETER	mic_body_digest_alg	String
    PARAMETER	mic_body_p1		String

INTERFACE LICENSE
    ONE	    Issuer 
    ONE	    Authorization 
    MANY    Authorized_User 
    ONE	    Product_Name 
    ONE	    Producer 
    ONE	    Units 
    ONE	    Version 
    ONE	    Start_Date 
    ONE	    Expiration_Date 
    ONE	    Availability 
    MANY    Options 
    ONE	    Hardware_ID 
    ONE	    Mic_Head

Data Structure Generated

typedef struct _LICENSE {
    String	issuer;
    String	authorization;
    List	Authorized_User;
    String	Product_Name;
    String	Producer;
    Integer	Units;
    String	Version;
    DateTime	Start_Date;
    DateTime	Expriy_Date;
    String	Availability;
    List	Options;
    String	Hardware_ID;
    String	mic_head_alg;
    String	mic_head_digest_alg;
    String	mic_head_p1;
    } LICENSE;

Application Programming Interface

The following routines provide the main API for the handling of licenses. Auxilliary low level routines are also provided for special cases handling.

CERT_format_LICENSE (LICENSE *input, char **output)
Output a license in RFC-822 Canonical form.
CERT_parse_LICEMSE (channel_binding *chan, LICENSE **object)
Parse the stream of data from chan to build a new license struture object
CERT_destroy_LICENSE (LICENSE * object)
CERT_create_LICENSE (LICENSE ** output)