[cl-net-snmp-cvs] r43 - in trunk/asn.1: . test

ctian at common-lisp.net ctian at common-lisp.net
Mon Sep 17 08:26:12 UTC 2007


Author: ctian
Date: Mon Sep 17 04:26:03 2007
New Revision: 43

Modified:
   trunk/asn.1/asn.1.zb
   trunk/asn.1/mib.lisp
   trunk/asn.1/test/1.asn
Log:
Continue Fixing ASN.1 Syntax

Modified: trunk/asn.1/asn.1.zb
==============================================================================
--- trunk/asn.1/asn.1.zb	(original)
+++ trunk/asn.1/asn.1.zb	Mon Sep 17 04:26:03 2007
@@ -1,4 +1,4 @@
-;;;; -*- Mode: Lisp -*-
+;;;; -*- Mode: Text -*-
 
 (:name "ASN.1"
  :domain-file "asn.1-domain.lisp"
@@ -11,18 +11,21 @@
  :case-sensitive t
  :lex-cats ((Type-Reference "[A-Z][a-zA-Z0-9-]*")
 	    (Signed-Number "-?[0-9]+")
-	    (Any-Thing "[^ ]+")))
+	    (Anything "[^ ]+")))
 
 ;; Domain Definitions
 
 Module-Definition := kb-domain: [(identifier) (body)];
 Module-Body := kb-domain: [(exports) (imports) (assignment-list kb-sequence)];
-KB-List := kb-domain: [(list kb-sequence)];
-KB-Item := kb-domain: [(item)];
+Exports := kb-domain: [(list kb-sequence) (all-exports)];
+Imports := kb-domain: [(list kb-sequence) (valid)];
 Symbols-From-Module := kb-domain: [(symbols) (global-module-reference)];
 Assignment := kb-domain: [(type) (value)];
-Obj-Id-Components-List := kb-domain: [(-list kb-sequence)];
-Value-Assignment := kb-domain: [(-value-reference) (-type) (-value)];
+Value-Assignment := kb-domain: [(name) (type) (value)];
+Object-Type-Assignment :=
+	Value-Assignment: [(syntax) (max-access) (status) (description) (index)];
+Type := kb-domain: [];
+Object-Identifier-Value := kb-domain: [(value)];
 
 ;; Rule Definitions
 Module-Definition -->
@@ -38,18 +41,20 @@
                                (exports Exports) (imports Imports)] }
                 | ;
 
-Exports --> "EXPORTS" Symbol* "," ";" { KB-List:[(list Symbol*)] }
-          | "EXPORTS" "ALL" ";" { KB-Item:[(item :all)] }
+Exports --> "EXPORTS" Symbol* "," ";" { Exports:[(list Symbol*)] }
+          | "EXPORTS" "ALL" ";"       { Exports:[(all-exports t)] }
           | ;
 
 Symbol --> Reference;
 
-Imports --> "IMPORTS" Symbols-From-Module* " " ";" { KB-List:[(list Symbols-From-Module*)] }
+Imports --> "IMPORTS" Symbols-From-Module* " " ";"
+            { Imports:[(valid t) (list Symbols-From-Module*)] }
           | ;
 
 Symbols-From-Module --> Symbol+ "," "FROM" Global-Module-Reference
                         { Symbols-From-Module:[(symbols Symbol+)
-                                               (global-module-reference Global-Module-Reference)] };
+                                               (global-module-reference
+                                                Global-Module-Reference)] };
 Global-Module-Reference --> Module-Reference;
 
 Reference --> Type-Reference | Value-Reference;
@@ -59,14 +64,15 @@
              | Value-Assignment {Assignment:[(type :value) (value Value-Assignment)]};
 
 Type-Assignment --> Type-Reference "::=" Type
-                  | Type-Reference "MACRO" "::=" "BEGIN" Garbage+ " " "END";
+                  | Type-Reference "MACRO" "::=" "BEGIN" Garbage+ " " "END"
+                  ;
 
-Garbage --> Any-Thing;
+Garbage --> Anything;
 
 Value-Assignment --> Value-Reference Type "::=" Value
-                     { Value-Assignment:[(-value-reference Value-Reference)
-                                         (-type Type)
-                                         (-value Value)] }
+                     { Value-Assignment:[(name Value-Reference)
+                                         (type Type)
+                                         (value Value)] }
 
                    | Value-Reference "OBJECT-IDENTITY"
                      "STATUS" Identifier
@@ -83,11 +89,18 @@
 
                    | Value-Reference "OBJECT-TYPE"
                      "SYNTAX" Type
-                     "MAX-ACCESS" Identifier
-                     "STATUS" Identifier
+                     "MAX-ACCESS" Object-Type-Access
+                     "STATUS" Object-Type-Status
                      "DESCRIPTION" String
                      Object-Type-Index
                      "::=" Object-Identifier-Value
+                     { Object-Type-Assignment:[(name Value-Reference)
+                                               (type :object-type)
+                                               (syntax Type)
+                                               (max-access Object-Type-Access)
+                                               (status Object-Type-Status)
+                                               (index Object-Type-Index)
+                                               (value Object-Identifier-Value)] }
 
                    | Value-Reference "NOTIFICATION-TYPE"
                      "STATUS" Identifier
@@ -112,8 +125,11 @@
                      "STATUS" Identifier
                      "DESCRIPTION" String
                      "::=" Object-Identifier-Value
+
                    ;
 
+Object-Type-Access --> Identifier;
+Object-Type-Status --> Identifier;
 Module-Revision --> "REVISION" String "DESCRIPTION" String;
 Object-Type-Index --> "INDEX" Object-Identifier-Value |;
 Module-Compliance-Group --> "GROUP" Identifier "DESCRIPTION" String;
@@ -126,20 +142,29 @@
                | Integer-Type
                | Sequence-Of-Type
                | Sequence-Type
+               | Textual-Convention-Type
                | Tagged-Type;
 
 Named-Type --> Type-Reference;
 
+Textual-Convention-Type --> "TEXTUAL-CONVENTION"
+                            Textual-Convention-Display-Hint
+                            "STATUS" Identifier
+                            "DESCRIPTION" String
+                            Textual-Convention-Reference
+                            "SYNTAX" Type;
+
+Textual-Convention-Display-Hint --> "DISPLAY-HINT" String | ;
+Textual-Convention-Reference --> "REFERENCE" String | ;
+
 Object-Identifier-Type --> "OBJECT" "IDENTIFIER";
 
 Value --> Builtin-Value;
 
 Builtin-Value --> Object-Identifier-Value;
 
-Object-Identifier-Value --> "{" Obj-Id-Components-List "}";
-
-Obj-Id-Components-List --> Obj-Id-Components+ " "
-                           { Obj-Id-Components-List:[(-list Obj-Id-Components+)] };
+Object-Identifier-Value --> "{" Obj-Id-Components+ " " "}"
+                            { Object-Identifier-Value:[(value Obj-Id-Components+)] };
 
 Obj-Id-Components --> Name-And-Number-Form | Name-Form | Number-Form;
 

Modified: trunk/asn.1/mib.lisp
==============================================================================
--- trunk/asn.1/mib.lisp	(original)
+++ trunk/asn.1/mib.lisp	Mon Sep 17 04:26:03 2007
@@ -65,8 +65,8 @@
                                              :directory '(:relative "asn.1"))
                               (asdf:component-pathname (asdf:find-system :net-snmp))))
 
-(defun parse-mib (file)
+(defun parse-mib (file &key (verbose nil))
   (let ((zb:*comment-start* "--")
         (zb:*comment-brackets* '(("/*" . "*/"))))
-    (zb:file-parser file :grammar (zb:find-grammar "ASN.1") :verbose t)))
+    (zb:file-parser file :grammar (zb:find-grammar "ASN.1") :verbose verbose)))
 

Modified: trunk/asn.1/test/1.asn
==============================================================================
--- trunk/asn.1/test/1.asn	(original)
+++ trunk/asn.1/test/1.asn	Mon Sep 17 04:26:03 2007
@@ -1,48 +1,9 @@
 RFC1155-SMI DEFINITIONS ::= BEGIN
 
-EXPORTS -- EVERYTHING
-        internet, directory, mgmt,
-        experimental, private, enterprises,
-        OBJECT-TYPE, ObjectName, ObjectSyntax, SimpleSyntax,
-        ApplicationSyntax, NetworkAddress, IpAddress,
-        Counter, Gauge, TimeTicks, Opaque;
-
- -- the path to the root
-
- internet      OBJECT IDENTIFIER ::= { iso org(3) dod(6) 1 }
-
- directory     OBJECT IDENTIFIER ::= { internet 1 }
-
- mgmt          OBJECT IDENTIFIER ::= { internet 2 }
-
- experimental  OBJECT IDENTIFIER ::= { internet 3 }
-
- private       OBJECT IDENTIFIER ::= { internet 4 }
- enterprises   OBJECT IDENTIFIER ::= { private 1 }
-
- -- definition of object types
-
-
-    -- names of objects in the MIB
-
-    ObjectName ::= OBJECT IDENTIFIER
-
- OBJECT-TYPE MACRO ::=
- BEGIN
-     TYPE NOTATION ::= "SYNTAX" type (TYPE ObjectSyntax)
-                       "ACCESS" Access
-                       "STATUS" Status
-     VALUE NOTATION ::= value (VALUE ObjectName)
-
-     Access ::= "read-only"
-                     | "read-write"
-                     | "write-only"
-                     | "not-accessible"
-     Status ::= "mandatory"
-                     | "optional"
-                     | "obsolete"
- END
+END
 
-    -- names of objects in the MIB
+RFC1155-SMI DEFINITIONS ::= BEGIN
 
 END
+
+    A-- CC



More information about the Cl-net-snmp-cvs mailing list