[cl-net-snmp-cvs] r45 - trunk/asn.1
ctian at common-lisp.net
ctian at common-lisp.net
Wed Sep 19 12:35:56 UTC 2007
Author: ctian
Date: Wed Sep 19 08:35:54 2007
New Revision: 45
Added:
trunk/asn.1/asn.1-domain.lisp
trunk/asn.1/asn.1.tab
trunk/asn.1/smi.lisp
trunk/asn.1/syntax.lisp
Modified:
trunk/asn.1/ber.lisp
trunk/asn.1/mib-parse.lisp
trunk/asn.1/mib.lisp
trunk/asn.1/stream-test.lisp
Log:
Commit Changes: code reorgnize
Added: trunk/asn.1/asn.1-domain.lisp
==============================================================================
--- (empty file)
+++ trunk/asn.1/asn.1-domain.lisp Wed Sep 19 08:35:54 2007
@@ -0,0 +1,445 @@
+;;; This file was generated by Zebu (Version 3.5.5)
+
+(IN-PACKAGE "ASN.1")
+(REQUIRE "zebu-package")
+(USE-PACKAGE "ZEBU")
+
+(DEFSTRUCT (OBJECT-IDENTIFIER-VALUE
+ (:INCLUDE KB-DOMAIN)
+ (:PRINT-FUNCTION
+ (LAMBDA
+ (ITEM STREAM LEVEL &AUX
+ (%R (OBJECT-IDENTIFIER-VALUE-VALUE ITEM)))
+ (DECLARE (IGNORE LEVEL))
+ (FORMAT STREAM
+ "{~a}"
+ (LET ((OBJ-ID-COMPONENTS+ %R))
+ (IF (NULL OBJ-ID-COMPONENTS+)
+ ""
+ (ZEBU::KB-SEQUENCE-PRINT OBJ-ID-COMPONENTS+
+ NIL
+ NIL)))))))
+ VALUE)
+
+(DEFSTRUCT (VALUE-ASSIGNMENT
+ (:INCLUDE KB-DOMAIN)
+ (:PRINT-FUNCTION
+ (LAMBDA
+ (ITEM STREAM LEVEL &AUX
+ (%R (VALUE-ASSIGNMENT-NAME ITEM))
+ (%S (VALUE-ASSIGNMENT-TYPE ITEM))
+ (%T (VALUE-ASSIGNMENT-VALUE ITEM)))
+ (DECLARE (IGNORE LEVEL))
+ (FORMAT STREAM "~a ~a::=~a" %R %S %T))))
+ NAME
+ TYPE
+ VALUE)
+
+(DEFSTRUCT (OBJECT-TYPE-ASSIGNMENT
+ (:INCLUDE VALUE-ASSIGNMENT)
+ (:PRINT-FUNCTION
+ (LAMBDA
+ (ITEM STREAM LEVEL &AUX
+ (%R (OBJECT-TYPE-ASSIGNMENT-NAME ITEM))
+ (%S (OBJECT-TYPE-ASSIGNMENT-SYNTAX ITEM))
+ (%T (OBJECT-TYPE-ASSIGNMENT-MAX-ACCESS ITEM))
+ (%U (OBJECT-TYPE-ASSIGNMENT-STATUS ITEM))
+ (%V (OBJECT-TYPE-ASSIGNMENT-DESCRIPTION ITEM))
+ (%W (OBJECT-TYPE-ASSIGNMENT-INDEX ITEM))
+ (%X (OBJECT-TYPE-ASSIGNMENT-VALUE ITEM)))
+ (DECLARE (IGNORE LEVEL))
+ (FORMAT STREAM
+ "~a OBJECT-TYPESYNTAX ~a MAX-ACCESS ~a STATUS ~a DESCRIPTION ~s ~a::=~a"
+ %R
+ %S
+ %T
+ %U
+ %V
+ %W
+ %X))))
+ SYNTAX
+ MAX-ACCESS
+ STATUS
+ DESCRIPTION
+ INDEX)
+
+(DEFSTRUCT (ASSIGNMENT
+ (:INCLUDE KB-DOMAIN)
+ (:PRINT-FUNCTION
+ (LAMBDA
+ (ITEM STREAM LEVEL &AUX (%R (ASSIGNMENT-VALUE ITEM)))
+ (DECLARE (IGNORE LEVEL))
+ (FORMAT STREAM
+ "~a"
+ (LET ((TYPE-ASSIGNMENT %R))
+ (ZEBU::KB-SEQUENCE-PRINT TYPE-ASSIGNMENT
+ NIL
+ NIL))))))
+ TYPE
+ VALUE)
+
+(DEFSTRUCT (SYMBOLS-FROM-MODULE
+ (:INCLUDE KB-DOMAIN)
+ (:PRINT-FUNCTION
+ (LAMBDA
+ (ITEM STREAM LEVEL &AUX
+ (%R (SYMBOLS-FROM-MODULE-SYMBOLS ITEM))
+ (%S
+ (SYMBOLS-FROM-MODULE-GLOBAL-MODULE-REFERENCE ITEM)))
+ (DECLARE (IGNORE LEVEL))
+ (FORMAT STREAM
+ "~a FROM ~a"
+ (LET ((SYMBOL+\,1$ %R))
+ (IF (NULL SYMBOL+\,1$)
+ ""
+ (LET ((*KB-SEQUENCE-SEPARATOR* ","))
+ (DECLARE (SPECIAL
+ *KB-SEQUENCE-SEPARATOR*))
+ (ZEBU::KB-SEQUENCE-PRINT SYMBOL+\,1$
+ NIL
+ NIL))))
+ %S))))
+ SYMBOLS
+ GLOBAL-MODULE-REFERENCE)
+
+(DEFSTRUCT (IMPORTS
+ (:INCLUDE KB-DOMAIN)
+ (:PRINT-FUNCTION
+ (LAMBDA (ITEM STREAM LEVEL &AUX (%R (IMPORTS-LIST ITEM)))
+ (DECLARE (IGNORE LEVEL))
+ (FORMAT STREAM
+ "IMPORTS ~a;"
+ (LET ((SYMBOLS-FROM-MODULE* %R))
+ (ZEBU::KB-SEQUENCE-PRINT SYMBOLS-FROM-MODULE*
+ NIL
+ NIL))))))
+ (LIST NIL :TYPE (OR NULL KB-SEQUENCE))
+ VALID)
+
+(DEFSTRUCT (EXPORTS
+ (:INCLUDE KB-DOMAIN)
+ (:PRINT-FUNCTION
+ (LAMBDA (ITEM STREAM LEVEL &AUX (%R (EXPORTS-LIST ITEM)))
+ (DECLARE (IGNORE LEVEL))
+ (COND ((KB-SEQUENCE-P %R)
+ (FORMAT STREAM
+ "EXPORTS ~a;"
+ (LET ((SYMBOL*\,1$ %R))
+ (LET
+ ((*KB-SEQUENCE-SEPARATOR* ","))
+ (DECLARE
+ (SPECIAL *KB-SEQUENCE-SEPARATOR*))
+ (ZEBU::KB-SEQUENCE-PRINT
+ SYMBOL*\,1$
+ NIL
+ NIL)))))
+ (T (FORMAT STREAM "EXPORTSALL;"))))))
+ (LIST NIL :TYPE (OR NULL KB-SEQUENCE))
+ ALL-EXPORTS)
+
+(DEFSTRUCT (MODULE-BODY
+ (:INCLUDE KB-DOMAIN)
+ (:PRINT-FUNCTION
+ (LAMBDA
+ (ITEM STREAM LEVEL &AUX
+ (%R (MODULE-BODY-EXPORTS ITEM))
+ (%S (MODULE-BODY-IMPORTS ITEM))
+ (%T (MODULE-BODY-ASSIGNMENT-LIST ITEM)))
+ (DECLARE (IGNORE LEVEL))
+ (FORMAT STREAM
+ "~a ~a ~a"
+ %R
+ %S
+ (LET ((ASSIGNMENT* %T))
+ (ZEBU::KB-SEQUENCE-PRINT ASSIGNMENT*
+ NIL
+ NIL))))))
+ EXPORTS
+ IMPORTS
+ (ASSIGNMENT-LIST NIL :TYPE (OR NULL KB-SEQUENCE)))
+
+(DEFSTRUCT (MODULE-DEFINITION
+ (:INCLUDE KB-DOMAIN)
+ (:PRINT-FUNCTION
+ (LAMBDA
+ (ITEM STREAM LEVEL &AUX
+ (%R (MODULE-DEFINITION-IDENTIFIER ITEM))
+ (%S (MODULE-DEFINITION-BODY ITEM)))
+ (DECLARE (IGNORE LEVEL))
+ (FORMAT STREAM "~a DEFINITIONS::=BEGIN ~a END" %R %S))))
+ IDENTIFIER
+ BODY)
+
+(DEFUN ASSIGNMENT*0 (ASSIGNMENT ASSIGNMENT*)
+ (MAKE-KB-SEQUENCE :FIRST ASSIGNMENT :REST ASSIGNMENT*))
+
+(DEFUN SYMBOL*\,1$1 (SYMBOL |Rest-SYMBOL*,1$|)
+ (MAKE-KB-SEQUENCE :FIRST SYMBOL :REST |Rest-SYMBOL*,1$|))
+
+(DEFUN |Rest-SYMBOL*,1$2| (DUMMY SYMBOL |Rest-SYMBOL*,1$|)
+ (DECLARE (IGNORE DUMMY))
+ (MAKE-KB-SEQUENCE :FIRST SYMBOL :REST |Rest-SYMBOL*,1$|))
+
+(DEFUN SYMBOLS-FROM-MODULE*3 (SYMBOLS-FROM-MODULE SYMBOLS-FROM-MODULE*)
+ (MAKE-KB-SEQUENCE :FIRST
+ SYMBOLS-FROM-MODULE
+ :REST
+ SYMBOLS-FROM-MODULE*))
+
+(DEFUN SYMBOL+\,1$4 (SYMBOL) (MAKE-KB-SEQUENCE :FIRST SYMBOL))
+
+(DEFUN SYMBOL+\,1$5 (SYMBOL DUMMY SYMBOL+\,1$)
+ (DECLARE (IGNORE DUMMY))
+ (MAKE-KB-SEQUENCE :FIRST SYMBOL :REST SYMBOL+\,1$))
+
+(DEFUN GARBAGE+6 (GARBAGE) (MAKE-KB-SEQUENCE :FIRST GARBAGE))
+
+(DEFUN GARBAGE+7 (GARBAGE GARBAGE+)
+ (MAKE-KB-SEQUENCE :FIRST GARBAGE :REST GARBAGE+))
+
+(DEFUN MODULE-REVISION*8 (MODULE-REVISION MODULE-REVISION*)
+ (MAKE-KB-SEQUENCE :FIRST MODULE-REVISION :REST MODULE-REVISION*))
+
+(DEFUN IDENTIFIER+\,1$9 (IDENTIFIER)
+ (MAKE-KB-SEQUENCE :FIRST IDENTIFIER))
+
+(DEFUN IDENTIFIER+\,1$10 (IDENTIFIER DUMMY IDENTIFIER+\,1$)
+ (DECLARE (IGNORE DUMMY))
+ (MAKE-KB-SEQUENCE :FIRST IDENTIFIER :REST IDENTIFIER+\,1$))
+
+(DEFUN MODULE-COMPLIANCE-GROUP+11 (MODULE-COMPLIANCE-GROUP)
+ (MAKE-KB-SEQUENCE :FIRST MODULE-COMPLIANCE-GROUP))
+
+(DEFUN MODULE-COMPLIANCE-GROUP+12
+ (MODULE-COMPLIANCE-GROUP MODULE-COMPLIANCE-GROUP+)
+ (MAKE-KB-SEQUENCE :FIRST
+ MODULE-COMPLIANCE-GROUP
+ :REST
+ MODULE-COMPLIANCE-GROUP+))
+
+(DEFUN OBJ-ID-COMPONENTS+13 (OBJ-ID-COMPONENTS)
+ (MAKE-KB-SEQUENCE :FIRST OBJ-ID-COMPONENTS))
+
+(DEFUN OBJ-ID-COMPONENTS+14 (OBJ-ID-COMPONENTS OBJ-ID-COMPONENTS+)
+ (MAKE-KB-SEQUENCE :FIRST OBJ-ID-COMPONENTS :REST OBJ-ID-COMPONENTS+))
+
+(DEFUN NAMED-NUMBER+\,1$15 (NAMED-NUMBER)
+ (MAKE-KB-SEQUENCE :FIRST NAMED-NUMBER))
+
+(DEFUN NAMED-NUMBER+\,1$16 (NAMED-NUMBER DUMMY NAMED-NUMBER+\,1$)
+ (DECLARE (IGNORE DUMMY))
+ (MAKE-KB-SEQUENCE :FIRST NAMED-NUMBER :REST NAMED-NUMBER+\,1$))
+
+(DEFUN GARBAGE*17 (GARBAGE GARBAGE*)
+ (MAKE-KB-SEQUENCE :FIRST GARBAGE :REST GARBAGE*))
+
+(DEFUN OBJECT-IDENTIFIER-VALUE18 (DUMMY OBJ-ID-COMPONENTS+ DUMMY1)
+ (DECLARE (IGNORE DUMMY1 DUMMY))
+ (MAKE-OBJECT-IDENTIFIER-VALUE :VALUE OBJ-ID-COMPONENTS+))
+
+(DEFUN VALUE-ASSIGNMENT19 (VALUE-REFERENCE TYPE DUMMY VALUE)
+ (DECLARE (IGNORE DUMMY))
+ (MAKE-VALUE-ASSIGNMENT :NAME VALUE-REFERENCE :TYPE TYPE :VALUE VALUE))
+
+(DEFUN VALUE-ASSIGNMENT20
+ (VALUE-REFERENCE DUMMY DUMMY1 TYPE DUMMY2 OBJECT-TYPE-ACCESS
+ DUMMY3 OBJECT-TYPE-STATUS DUMMY4 STRING OBJECT-TYPE-INDEX
+ DUMMY5 OBJECT-IDENTIFIER-VALUE)
+ (DECLARE (IGNORE DUMMY5 DUMMY4 DUMMY3 DUMMY2 DUMMY1 DUMMY))
+ (MAKE-OBJECT-TYPE-ASSIGNMENT :NAME
+ VALUE-REFERENCE
+ :TYPE
+ :OBJECT-TYPE
+ :SYNTAX
+ TYPE
+ :MAX-ACCESS
+ OBJECT-TYPE-ACCESS
+ :STATUS
+ OBJECT-TYPE-STATUS
+ :DESCRIPTION
+ STRING
+ :INDEX
+ OBJECT-TYPE-INDEX
+ :VALUE
+ OBJECT-IDENTIFIER-VALUE))
+
+(DEFUN ASSIGNMENT21 (TYPE-ASSIGNMENT)
+ (MAKE-ASSIGNMENT :TYPE :TYPE :VALUE TYPE-ASSIGNMENT))
+
+(DEFUN ASSIGNMENT22 (VALUE-ASSIGNMENT)
+ (MAKE-ASSIGNMENT :TYPE :VALUE :VALUE VALUE-ASSIGNMENT))
+
+(DEFUN SYMBOLS-FROM-MODULE23
+ (SYMBOL+\,1$ DUMMY GLOBAL-MODULE-REFERENCE)
+ (DECLARE (IGNORE DUMMY))
+ (MAKE-SYMBOLS-FROM-MODULE :SYMBOLS
+ SYMBOL+\,1$
+ :GLOBAL-MODULE-REFERENCE
+ GLOBAL-MODULE-REFERENCE))
+
+(DEFUN IMPORTS24 (DUMMY SYMBOLS-FROM-MODULE* DUMMY1)
+ (DECLARE (IGNORE DUMMY1 DUMMY))
+ (MAKE-IMPORTS :VALID T :LIST SYMBOLS-FROM-MODULE*))
+
+(DEFUN EXPORTS25 (DUMMY SYMBOL*\,1$ DUMMY1)
+ (DECLARE (IGNORE DUMMY1 DUMMY))
+ (MAKE-EXPORTS :LIST SYMBOL*\,1$))
+
+(DEFUN EXPORTS26 (DUMMY DUMMY1 DUMMY2)
+ (DECLARE (IGNORE DUMMY2 DUMMY1 DUMMY))
+ (MAKE-EXPORTS :ALL-EXPORTS T))
+
+(DEFUN MODULE-BODY27 (EXPORTS IMPORTS ASSIGNMENT*)
+ (MAKE-MODULE-BODY :ASSIGNMENT-LIST
+ ASSIGNMENT*
+ :EXPORTS
+ EXPORTS
+ :IMPORTS
+ IMPORTS))
+
+(DEFUN MODULE-DEFINITION28
+ (MODULE-IDENTIFIER DUMMY DUMMY1 DUMMY2 MODULE-BODY DUMMY3)
+ (DECLARE (IGNORE DUMMY3 DUMMY2 DUMMY1 DUMMY))
+ (MAKE-MODULE-DEFINITION :IDENTIFIER
+ MODULE-IDENTIFIER
+ :BODY
+ MODULE-BODY))
+
+
+(EVAL-WHEN (:COMPILE-TOPLEVEL)
+ (UNLESS (MEMBER "zebu-regex" *MODULES* :TEST #'EQUAL)
+ (WARN "Load the Zebu Compiler!")))
+(DECLAIM (SPECIAL ZEBU::*REGEX-GROUPS* ZEBU::*REGEX-GROUPINGS*))
+(DEFUN TYPE-REFERENCE
+ (STRING &OPTIONAL (ZEBU::START 0) (ZEBU::END (LENGTH STRING)))
+ (WHEN (PROGN
+ (SETF ZEBU::*REGEX-GROUPINGS* 1)
+ (BLOCK ZEBU::FINAL-RETURN
+ (BLOCK ZEBU::COMPARE
+ (LET ((ZEBU::INDEX ZEBU::START) (LENGTH ZEBU::END))
+ (SETF (SVREF ZEBU::*REGEX-GROUPS* 0)
+ (LIST ZEBU::INDEX NIL))
+ (LET ((ZEBU::RANGE
+ #*0000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000))
+ (IF (>= ZEBU::INDEX LENGTH)
+ (RETURN-FROM ZEBU::COMPARE NIL))
+ (IF (= 1
+ (SBIT ZEBU::RANGE
+ (CHAR-CODE (CHAR STRING ZEBU::INDEX))))
+ (INCF ZEBU::INDEX)
+ (RETURN-FROM ZEBU::COMPARE NIL)))
+ (LET ((ZEBU::OINDEX ZEBU::INDEX))
+ (BLOCK ZEBU::COMPARE
+ (DO ()
+ (NIL)
+ (LET ((ZEBU::RANGE
+ #*0000000000000000000000000000000000000000000001001111111111000000011111111111111111111111111000000111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000))
+ (IF (>= ZEBU::INDEX LENGTH)
+ (RETURN-FROM ZEBU::COMPARE NIL))
+ (IF (= 1
+ (SBIT
+ ZEBU::RANGE
+ (CHAR-CODE (CHAR STRING ZEBU::INDEX))))
+ (INCF ZEBU::INDEX)
+ (RETURN-FROM ZEBU::COMPARE NIL)))))
+ (DO ((ZEBU::START ZEBU::INDEX (1- ZEBU::START)))
+ ((< ZEBU::START ZEBU::OINDEX) NIL)
+ (LET ((ZEBU::INDEX ZEBU::START))
+ (BLOCK ZEBU::COMPARE
+ (SETF (CADR (SVREF ZEBU::*REGEX-GROUPS* 0))
+ ZEBU::INDEX)
+ (RETURN-FROM ZEBU::FINAL-RETURN T)))))))))
+ (SECOND (SVREF ZEBU::*REGEX-GROUPS* 0))))
+
+(DEFUN SIGNED-NUMBER
+ (STRING &OPTIONAL (ZEBU::START 0) (ZEBU::END (LENGTH STRING)))
+ (WHEN (PROGN
+ (SETF ZEBU::*REGEX-GROUPINGS* 1)
+ (BLOCK ZEBU::FINAL-RETURN
+ (BLOCK ZEBU::COMPARE
+ (LET ((ZEBU::INDEX ZEBU::START) (LENGTH ZEBU::END))
+ (SETF (SVREF ZEBU::*REGEX-GROUPS* 0)
+ (LIST ZEBU::INDEX NIL))
+ (PROGN
+ (BLOCK ZEBU::COMPARE
+ (IF (AND (< ZEBU::INDEX LENGTH)
+ (EQL (CHAR STRING ZEBU::INDEX) #\-))
+ (INCF ZEBU::INDEX)
+ (RETURN-FROM ZEBU::COMPARE NIL)))
+ T)
+ (LET ((ZEBU::OINDEX ZEBU::INDEX))
+ (BLOCK ZEBU::COMPARE
+ (DO ()
+ (NIL)
+ (LET ((ZEBU::RANGE
+ #*0000000000000000000000000000000000000000000000001111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000))
+ (IF (>= ZEBU::INDEX LENGTH)
+ (RETURN-FROM ZEBU::COMPARE NIL))
+ (IF (= 1
+ (SBIT
+ ZEBU::RANGE
+ (CHAR-CODE (CHAR STRING ZEBU::INDEX))))
+ (INCF ZEBU::INDEX)
+ (RETURN-FROM ZEBU::COMPARE NIL)))))
+ (DO ((ZEBU::START ZEBU::INDEX (1- ZEBU::START)))
+ ((< ZEBU::START ZEBU::OINDEX) NIL)
+ (LET ((ZEBU::INDEX ZEBU::START))
+ (BLOCK ZEBU::COMPARE
+ (LET ((ZEBU::RANGE
+ #*0000000000000000000000000000000000000000000000001111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000))
+ (IF (>= ZEBU::INDEX LENGTH)
+ (RETURN-FROM ZEBU::COMPARE NIL))
+ (IF (= 1
+ (SBIT
+ ZEBU::RANGE
+ (CHAR-CODE
+ (CHAR STRING ZEBU::INDEX))))
+ (INCF ZEBU::INDEX)
+ (RETURN-FROM ZEBU::COMPARE NIL)))
+ (SETF (CADR (SVREF ZEBU::*REGEX-GROUPS* 0))
+ ZEBU::INDEX)
+ (RETURN-FROM ZEBU::FINAL-RETURN T)))))))))
+ (SECOND (SVREF ZEBU::*REGEX-GROUPS* 0))))
+
+(DEFUN ANYTHING
+ (STRING &OPTIONAL (ZEBU::START 0) (ZEBU::END (LENGTH STRING)))
+ (WHEN (PROGN
+ (SETF ZEBU::*REGEX-GROUPINGS* 1)
+ (BLOCK ZEBU::FINAL-RETURN
+ (BLOCK ZEBU::COMPARE
+ (LET ((ZEBU::INDEX ZEBU::START) (LENGTH ZEBU::END))
+ (SETF (SVREF ZEBU::*REGEX-GROUPS* 0)
+ (LIST ZEBU::INDEX NIL))
+ (LET ((ZEBU::OINDEX ZEBU::INDEX))
+ (BLOCK ZEBU::COMPARE
+ (DO ()
+ (NIL)
+ (LET ((ZEBU::RANGE
+ #*1111111111111111111111111111111101111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111))
+ (IF (>= ZEBU::INDEX LENGTH)
+ (RETURN-FROM ZEBU::COMPARE NIL))
+ (IF (= 1
+ (SBIT
+ ZEBU::RANGE
+ (CHAR-CODE (CHAR STRING ZEBU::INDEX))))
+ (INCF ZEBU::INDEX)
+ (RETURN-FROM ZEBU::COMPARE NIL)))))
+ (DO ((ZEBU::START ZEBU::INDEX (1- ZEBU::START)))
+ ((< ZEBU::START ZEBU::OINDEX) NIL)
+ (LET ((ZEBU::INDEX ZEBU::START))
+ (BLOCK ZEBU::COMPARE
+ (LET ((ZEBU::RANGE
+ #*1111111111111111111111111111111101111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111))
+ (IF (>= ZEBU::INDEX LENGTH)
+ (RETURN-FROM ZEBU::COMPARE NIL))
+ (IF (= 1
+ (SBIT
+ ZEBU::RANGE
+ (CHAR-CODE
+ (CHAR STRING ZEBU::INDEX))))
+ (INCF ZEBU::INDEX)
+ (RETURN-FROM ZEBU::COMPARE NIL)))
+ (SETF (CADR (SVREF ZEBU::*REGEX-GROUPS* 0))
+ ZEBU::INDEX)
+ (RETURN-FROM ZEBU::FINAL-RETURN T)))))))))
+ (SECOND (SVREF ZEBU::*REGEX-GROUPS* 0))))
Added: trunk/asn.1/asn.1.tab
==============================================================================
--- (empty file)
+++ trunk/asn.1/asn.1.tab Wed Sep 19 08:35:54 2007
@@ -0,0 +1,573 @@
+
+(:FILE "/home/binghe/cl-net-snmp/asn.1/asn.1.zb" :NAME "ASN.1" :DOMAIN-FILE "asn.1-domain.lisp" :PACKAGE "ASN.1" :GRAMMAR "zebu-mg" :IDENTIFIER-START-CHARS "abcdefghijklmnopqrstuvwxyz" :IDENTIFIER-CONTINUE-CHARS "-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" :CASE-SENSITIVE T :LEX-CATS ((TYPE-REFERENCE "[A-Z][a-zA-Z0-9-]*") (SIGNED-NUMBER "-?[0-9]+") (ANYTHING "[^ ]+")) :DOMAIN (KB-DOMAIN :SUBTYPE (OBJECT-IDENTIFIER-VALUE :SLOTS (VALUE)) :SUBTYPE (VALUE-ASSIGNMENT :SLOTS (NAME TYPE VALUE) :SUBTYPE (OBJECT-TYPE-ASSIGNMENT :SLOTS (SYNTAX MAX-ACCESS STATUS DESCRIPTION INDEX))) :SUBTYPE (ASSIGNMENT :SLOTS (TYPE VALUE)) :SUBTYPE (SYMBOLS-FROM-MODULE :SLOTS (SYMBOLS GLOBAL-MODULE-REFERENCE)) :SUBTYPE (IMPORTS :SLOTS ((LIST KB-SEQUENCE) VALID)) :SUBTYPE (EXPORTS :SLOTS ((LIST KB-SEQUENCE) ALL-EXPORTS)) :SUBTYPE (MODULE-BODY :SLOTS (EXPORTS IMPORTS (ASSIGNMENT-LIST KB-SEQUENCE))) :SUBTYPE (MODULE-DEFINITION :SLOTS (IDENTIFIER BODY))) :DOMAIN-FILE "/home/binghe/cl-net-snmp/asn.1/asn.1-domain.lisp")
+#124(ZEBU::THE-EMPTY-STRING ZEBU::AUGMENTED-START ZEBU::THE-END-G-SYMBOL MODULE-DEFINITION MODULE-IDENTIFIER "DEFINITIONS" "::=" "BEGIN" MODULE-BODY "END" MODULE-REFERENCE TYPE-REFERENCE EXPORTS IMPORTS ASSIGNMENT* "EXPORTS" SYMBOL*\,1$ ";" "ALL" SYMBOL REFERENCE "IMPORTS" SYMBOLS-FROM-MODULE* SYMBOLS-FROM-MODULE SYMBOL+\,1$ "FROM" GLOBAL-MODULE-REFERENCE VALUE-REFERENCE IDENTIFIER ASSIGNMENT TYPE-ASSIGNMENT VALUE-ASSIGNMENT TYPE "MACRO" GARBAGE+ GARBAGE ANYTHING VALUE "OBJECT-IDENTITY" "STATUS" "DESCRIPTION" STRING OBJECT-IDENTIFIER-VALUE "MODULE-IDENTITY" "LAST-UPDATED" "ORGANIZATION" "CONTACT-INFO" MODULE-REVISION* "OBJECT-TYPE" "SYNTAX" "MAX-ACCESS" OBJECT-TYPE-ACCESS OBJECT-TYPE-STATUS OBJECT-TYPE-INDEX "NOTIFICATION-TYPE" "NOTIFICATION-GROUP" "NOTIFICATIONS" "{" IDENTIFIER+\,1$ "}" "MODULE-COMPLIANCE" "MODULE" "MANDATORY-GROUPS" MODULE-COMPLIANCE-GROUP+ "OBJECT-GROUP" "OBJECTS" MODULE-REVISION "REVISION" "INDEX" MODULE-COMPLIANCE-GROUP "GROUP" BUILTIN-TYPE NAMED-TYPE OBJECT-IDENTIFIER-TYPE CHOICE-TYPE STRING-TYPE INTEGER-TYPE SEQUENCE-OF-TYPE SEQUENCE-TYPE TEXTUAL-CONVENTION-TYPE TAGGED-TYPE "TEXTUAL-CONVENTION" TEXTUAL-CONVENTION-DISPLAY-HINT TEXTUAL-CONVENTION-REFERENCE "DISPLAY-HINT" "REFERENCE" "OBJECT" "IDENTIFIER" BUILTIN-VALUE OBJ-ID-COMPONENTS+ OBJ-ID-COMPONENTS NAME-AND-NUMBER-FORM NAME-FORM NUMBER-FORM "(" ")" SIGNED-NUMBER "CHOICE" "OCTET" "STRING" STRING-OPTIONS "DisplayString" "SIZE" NUMBERS "|" ".." "INTEGER" NAMED-NUMBER+\,1$ NAMED-NUMBER "SEQUENCE" GARBAGE* "OF" TAG "IMPLICIT" "EXPLICIT" "[" CLASS CLASS-NUMBER "]" "UNIVERSAL" "APPLICATION" "PRIVATE" "," |Rest-SYMBOL*,1$| )
+
+
+#63(5 6 7 9 11 15 17 18 21 25 28 33 36 38 39 40 41 43 44 45 46 48 49 50 54 55 56 57 59 60 61 62 64 65 67 68 70 81 84 85 86 87 94 95 96 97 98 99 101 102 104 105 106 109 111 113 114 115 118 119 120 121 122 )
+
+#108((1 . 1)(3 . 6)(4 . 1)(10 . 1)(8 . 3)(8 . 0)(12 . 3)(12 . 3)(12 . 0)(19 . 1)(13 . 3)(13 . 0)(23 . 3)(26 . 1)(20 . 1)(20 . 1)(27 . 1)(29 . 1)(29 . 1)(30 . 3)(30 . 6)(35 . 1)(31 . 4)(31 . 8)(31 . 13)(31 . 13)(31 . 8)(31 . 12)(31 . 14)(31 . 12)(51 . 1)(52 . 1)(66 . 4)(53 . 2)(53 . 0)(69 . 4)(32 . 1)(32 . 1)(71 . 1)(71 . 1)(71 . 1)(71 . 1)(71 . 1)(71 . 1)(71 . 1)(71 . 1)(72 . 1)(79 . 9)(82 . 2)(82 . 0)(83 . 2)(83 . 0)(73 . 2)(37 . 1)(88 . 1)(42 . 3)(90 . 1)(90 . 1)(90 . 1)(91 . 4)(92 . 1)(93 . 1)(74 . 4)(75 . 3)(75 . 2)(100 . 6)(100 . 0)(103 . 3)(103 . 3)(103 . 1)(76 . 6)(76 . 4)(108 . 4)(78 . 4)(77 . 3)(80 . 2)(80 . 3)(80 . 3)(112 . 4)(117 . 1)(116 . 1)(116 . 1)(116 . 1)(116 . 0)(110 . 0)(110 . 2)(107 . 1)(107 . 3)(89 . 1)(89 . 2)(63 . 1)(63 . 2)(58 . 1)(58 . 3)(47 . 0)(47 . 2)(34 . 1)(34 . 2)(24 . 1)(24 . 3)(22 . 0)(22 . 2)(123 . 0)(123 . 3)(16 . 0)(16 . 2)(14 . 0)(14 . 2))
+
+#249(
+((11 :S 9))
+((2 :A 0))
+((5 :S 3))
+((6 :S 4))
+((7 :S 5))
+((9 :R 5) (11 :R 8) (15 :S 235) (21 :R 8) (28 :R 8))
+((9 :S 7))
+((2 :R 1))
+((5 :R 2))
+((5 :R 3) (11 :R 3) (17 :R 3) (28 :R 3))
+((9 :R 11) (11 :R 11) (21 :S 18) (28 :R 11))
+((9 :R 106) (11 :S 236) (28 :S 27))
+((9 :R 4))
+((17 :S 14))
+((9 :R 6) (11 :R 6) (21 :R 6) (28 :R 6))
+((17 :S 16))
+((9 :R 7) (11 :R 7) (21 :R 7) (28 :R 7))
+((17 :R 9) (25 :R 9) (122 :R 9))
+((11 :S 25) (17 :R 100) (28 :S 27))
+((17 :S 20))
+((9 :R 10) (11 :R 10) (28 :R 10))
+((25 :S 22))
+((11 :S 9))
+((11 :R 12) (17 :R 12) (28 :R 12))
+((11 :R 13) (17 :R 13) (28 :R 13))
+((17 :R 14) (25 :R 14) (122 :R 14))
+((17 :R 15) (25 :R 15) (122 :R 15))
+((11 :R 16) (17 :R 16) (25 :R 16) (38 :R 16) (43 :R 16) (48 :R 16) (54 :R 16) (55 :R 16) (60 :R 16) (64 :R 16) (81 :R 16) (86 :R 16) (97 :R 16) (98 :R 16) (101 :R 16) (106 :R 16) (109 :R 16) (115 :R 16) (122 :R 16))
+((9 :R 17) (11 :R 17) (28 :R 17))
+((9 :R 18) (11 :R 18) (28 :R 18))
+((11 :S 136) (81 :S 137) (86 :S 150) (97 :S 164) (98 :S 168) (101 :S 171) (106 :S 238) (109 :S 239) (115 :S 205))
+((9 :R 19) (11 :R 19) (28 :R 19))
+((6 :S 33))
+((7 :S 34))
+((36 :S 37))
+((9 :S 36))
+((9 :R 20) (11 :R 20) (28 :R 20))
+((9 :R 21) (36 :R 21) (59 :R 21))
+((6 :S 39))
+((57 :S 154))
+((9 :R 22) (11 :R 22) (28 :R 22))
+((39 :S 42))
+((28 :S 43))
+((40 :S 44))
+((41 :S 45))
+((6 :S 46))
+((57 :S 154))
+((9 :R 23) (11 :R 23) (28 :R 23))
+((44 :S 49))
+((41 :S 50))
+((45 :S 51))
+((41 :S 52))
+((46 :S 53))
+((41 :S 54))
+((40 :S 55))
+((41 :S 56))
+((6 :R 94) (67 :S 116))
+((6 :S 58))
+((57 :S 154))
+((9 :R 24) (11 :R 24) (28 :R 24))
+((49 :S 61))
+((11 :S 136) (81 :S 137) (86 :S 150) (97 :S 164) (98 :S 168) (101 :S 171) (106 :S 238) (109 :S 239) (115 :S 205))
+((50 :S 63))
+((28 :S 114))
+((39 :S 65))
+((28 :S 115))
+((40 :S 67))
+((41 :S 68))
+((6 :R 34) (68 :S 120))
+((6 :S 70))
+((57 :S 154))
+((9 :R 25) (11 :R 25) (28 :R 25))
+((39 :S 73))
+((28 :S 74))
+((40 :S 75))
+((41 :S 76))
+((6 :S 77))
+((57 :S 154))
+((9 :R 26) (11 :R 26) (28 :R 26))
+((56 :S 80))
+((57 :S 81))
+((28 :S 243))
+((59 :S 83))
+((39 :S 84))
+((28 :S 85))
+((40 :S 86))
+((41 :S 87))
+((6 :S 88))
+((57 :S 154))
+((9 :R 27) (11 :R 27) (28 :R 27))
+((39 :S 91))
+((28 :S 92))
+((40 :S 93))
+((41 :S 94))
+((61 :S 95))
+((62 :S 96))
+((57 :S 97))
+((28 :S 243))
+((59 :S 99))
+((70 :S 122))
+((6 :S 101))
+((57 :S 154))
+((9 :R 28) (11 :R 28) (28 :R 28))
+((65 :S 104))
+((57 :S 105))
+((28 :S 243))
+((59 :S 107))
+((39 :S 108))
+((28 :S 109))
+((40 :S 110))
+((41 :S 111))
+((6 :S 112))
+((57 :S 154))
+((9 :R 29) (11 :R 29) (28 :R 29))
+((39 :R 30))
+((40 :R 31))
+((41 :S 117))
+((40 :S 118))
+((41 :S 119))
+((6 :R 32) (67 :R 32))
+((57 :S 154))
+((6 :R 33))
+((28 :S 123))
+((40 :S 124))
+((41 :S 125))
+((6 :R 35) (70 :R 35))
+((6 :R 36) (9 :R 36) (11 :R 36) (28 :R 36) (50 :R 36))
+((6 :R 37) (9 :R 37) (11 :R 37) (28 :R 37) (50 :R 37))
+((6 :R 38) (9 :R 38) (11 :R 38) (28 :R 38) (50 :R 38))
+((6 :R 39) (9 :R 39) (11 :R 39) (28 :R 39) (50 :R 39))
+((6 :R 40) (9 :R 40) (11 :R 40) (28 :R 40) (50 :R 40))
+((6 :R 41) (9 :R 41) (11 :R 41) (28 :R 41) (50 :R 41))
+((6 :R 42) (9 :R 42) (11 :R 42) (28 :R 42) (50 :R 42))
+((6 :R 43) (9 :R 43) (11 :R 43) (28 :R 43) (50 :R 43))
+((6 :R 44) (9 :R 44) (11 :R 44) (28 :R 44) (50 :R 44))
+((6 :R 45) (9 :R 45) (11 :R 45) (28 :R 45) (50 :R 45))
+((6 :R 46) (9 :R 46) (11 :R 46) (28 :R 46) (50 :R 46))
+((39 :R 49) (84 :S 146))
+((39 :S 139))
+((28 :S 140))
+((40 :S 141))
+((41 :S 142))
+((49 :R 51) (85 :S 148))
+((49 :S 144))
+((11 :S 136) (81 :S 137) (86 :S 150) (97 :S 164) (98 :S 168) (101 :S 171) (106 :S 238) (109 :S 239) (115 :S 205))
+((6 :R 47) (9 :R 47) (11 :R 47) (28 :R 47) (50 :R 47))
+((41 :S 147))
+((39 :R 48))
+((41 :S 149))
+((49 :R 50))
+((87 :S 151))
+((6 :R 52) (9 :R 52) (11 :R 52) (28 :R 52) (50 :R 52))
+((9 :R 53) (11 :R 53) (28 :R 53))
+((9 :R 54) (11 :R 54) (28 :R 54))
+((28 :S 237) (96 :S 163))
+((59 :S 156))
+((6 :R 55) (9 :R 55) (11 :R 55) (28 :R 55))
+((28 :R 56) (59 :R 56) (96 :R 56))
+((28 :R 57) (59 :R 57) (96 :R 57))
+((28 :R 58) (59 :R 58) (96 :R 58))
+((96 :S 163))
+((95 :S 162))
+((28 :R 59) (59 :R 59) (96 :R 59))
+((28 :R 61) (59 :R 61) (95 :R 61) (96 :R 61))
+((57 :S 165))
+((36 :S 37))
+((59 :S 167))
+((6 :R 62) (9 :R 62) (11 :R 62) (28 :R 62) (50 :R 62))
+((99 :S 169))
+((6 :R 66) (9 :R 66) (11 :R 66) (28 :R 66) (50 :R 66) (94 :S 173))
+((6 :R 63) (9 :R 63) (11 :R 63) (28 :R 63) (50 :R 63))
+((6 :R 66) (9 :R 66) (11 :R 66) (28 :R 66) (50 :R 66) (94 :S 173))
+((6 :R 64) (9 :R 64) (11 :R 64) (28 :R 64) (50 :R 64))
+((102 :S 174))
+((94 :S 175))
+((96 :S 246))
+((95 :S 177))
+((95 :S 178))
+((6 :R 65) (9 :R 65) (11 :R 65) (28 :R 65) (50 :R 65))
+((96 :S 180))
+((95 :R 67))
+((96 :S 182))
+((95 :R 68))
+((96 :S 184))
+((105 :S 185))
+((96 :S 186))
+((95 :S 187))
+((6 :R 70) (9 :R 70) (11 :R 70) (28 :R 70) (50 :R 70))
+((28 :S 191))
+((59 :S 190))
+((6 :R 71) (9 :R 71) (11 :R 71) (28 :R 71) (50 :R 71))
+((94 :S 192))
+((96 :S 193))
+((95 :S 194))
+((59 :R 72) (122 :R 72))
+((36 :S 37) (59 :R 84))
+((59 :S 197))
+((6 :R 73) (9 :R 73) (11 :R 73) (28 :R 73) (50 :R 73))
+((11 :S 136) (81 :S 137) (86 :S 150) (97 :S 164) (98 :S 168) (101 :S 171) (106 :S 238) (109 :S 239) (115 :S 205))
+((6 :R 74) (9 :R 74) (11 :R 74) (28 :R 74) (50 :R 74))
+((6 :R 75) (9 :R 75) (11 :R 75) (28 :R 75) (50 :R 75))
+((11 :S 136) (81 :S 137) (86 :S 150) (97 :S 164) (98 :S 168) (101 :S 171) (106 :S 238) (109 :S 239) (115 :S 205))
+((6 :R 76) (9 :R 76) (11 :R 76) (28 :R 76) (50 :R 76))
+((11 :S 136) (81 :S 137) (86 :S 150) (97 :S 164) (98 :S 168) (101 :S 171) (106 :S 238) (109 :S 239) (115 :S 205))
+((6 :R 77) (9 :R 77) (11 :R 77) (28 :R 77) (50 :R 77))
+((96 :R 83) (119 :S 210) (120 :S 211) (121 :S 212))
+((96 :S 209))
+((118 :S 208))
+((11 :R 78) (81 :R 78) (86 :R 78) (97 :R 78) (98 :R 78) (101 :R 78) (106 :R 78) (109 :R 78) (113 :R 78) (114 :R 78) (115 :R 78))
+((118 :R 79))
+((96 :R 80))
+((96 :R 81))
+((96 :R 82))
+((36 :S 37) (59 :R 84))
+((59 :R 85))
+((28 :S 191))
+((59 :R 87))
+((59 :R 89))
+((6 :R 91))
+((28 :S 243))
+((59 :R 93))
+((6 :R 94) (67 :S 116))
+((6 :R 95))
+((9 :R 97) (59 :R 97))
+((11 :S 25) (28 :S 27))
+((25 :R 99))
+((11 :S 25) (17 :R 100) (28 :S 27))
+((17 :R 101))
+((11 :S 25) (28 :S 27))
+((17 :R 102) (122 :S 228))
+((17 :R 103))
+((17 :R 102) (122 :S 228))
+((17 :R 105))
+((9 :R 106) (11 :S 236) (28 :S 27))
+((9 :R 107))
+((11 :S 25) (17 :R 104) (18 :S 15) (28 :S 27))
+((6 :S 30) (33 :S 32))
+((28 :R 60) (59 :R 60) (94 :S 160) (96 :R 60))
+((57 :S 188) (94 :S 183))
+((57 :S 195) (111 :S 198))
+((59 :R 86) (122 :S 215))
+((28 :S 237) (59 :R 88) (96 :S 163))
+((6 :R 90) (70 :S 122))
+((59 :R 92) (122 :S 219))
+((9 :R 96) (36 :S 37) (59 :R 96))
+((25 :R 98) (122 :S 224))
+((95 :R 69) (104 :S 179) (105 :S 181))
+((11 :S 136) (81 :S 137) (86 :S 150) (97 :S 164) (98 :S 168) (101 :S 171) (106 :S 238) (109 :S 239) (113 :S 201) (114 :S 203) (115 :S 205))
+((11 :S 136) (38 :S 41) (43 :S 48) (48 :S 60) (54 :S 72) (55 :S 79) (60 :S 90) (64 :S 103) (81 :S 137) (86 :S 150) (97 :S 164) (98 :S 168) (101 :S 171) (106 :S 238) (109 :S 239) (115 :S 205)))
+
+#249(
+((3 . 1)(4 . 2)(10 . 8))
+()
+()
+()
+()
+((8 . 6)(12 . 10))
+()
+()
+()
+()
+((13 . 11))
+((14 . 12)(27 . 248)(29 . 233)(30 . 28)(31 . 29))
+()
+()
+()
+()
+()
+()
+((19 . 245)(20 . 17)(22 . 19)(23 . 226)(24 . 21)(27 . 26))
+()
+()
+()
+((10 . 24)(26 . 23))
+()
+()
+()
+()
+()
+()
+()
+((32 . 31)(71 . 126)(72 . 127)(73 . 128)(74 . 129)(75 . 130)(76 . 131)(77 . 132)(78 . 133)(79 . 134)(80 . 135)(112 . 247))
+()
+()
+()
+((34 . 35)(35 . 244))
+()
+()
+()
+()
+((37 . 40)(42 . 153)(88 . 152))
+()
+()
+()
+()
+()
+()
+((42 . 47))
+()
+()
+()
+()
+()
+()
+()
+()
+()
+((47 . 57)(66 . 221))
+()
+((42 . 59))
+()
+()
+((32 . 62)(71 . 126)(72 . 127)(73 . 128)(74 . 129)(75 . 130)(76 . 131)(77 . 132)(78 . 133)(79 . 134)(80 . 135)(112 . 247))
+()
+((51 . 64))
+()
+((52 . 66))
+()
+()
+((53 . 69))
+()
+((42 . 71))
+()
+()
+()
+()
+()
+()
+((42 . 78))
+()
+()
+()
+((58 . 82))
+()
+()
+()
+()
+()
+()
+((42 . 89))
+()
+()
+()
+()
+()
+()
+()
+()
+((58 . 98))
+()
+((63 . 100)(69 . 242))
+()
+((42 . 102))
+()
+()
+()
+((58 . 106))
+()
+()
+()
+()
+()
+()
+((42 . 113))
+()
+()
+()
+()
+()
+()
+()
+((42 . 121))
+()
+()
+()
+()
+()
+()
+()
+()
+()
+()
+()
+()
+()
+()
+()
+()
+((82 . 138))
+()
+()
+()
+()
+((83 . 143))
+()
+((32 . 145)(71 . 126)(72 . 127)(73 . 128)(74 . 129)(75 . 130)(76 . 131)(77 . 132)(78 . 133)(79 . 134)(80 . 135)(112 . 247))
+()
+()
+()
+()
+()
+()
+()
+()
+()
+((89 . 155)(90 . 241)(91 . 157)(92 . 158)(93 . 159))
+()
+()
+()
+()
+()
+((93 . 161))
+()
+()
+()
+()
+((34 . 166)(35 . 244))
+()
+()
+()
+((100 . 170))
+()
+((100 . 172))
+()
+()
+()
+((103 . 176))
+()
+()
+()
+()
+()
+()
+()
+()
+()
+()
+()
+()
+((107 . 189)(108 . 240))
+()
+()
+()
+()
+()
+()
+((35 . 213)(110 . 196))
+()
+()
+((32 . 199)(71 . 126)(72 . 127)(73 . 128)(74 . 129)(75 . 130)(76 . 131)(77 . 132)(78 . 133)(79 . 134)(80 . 135)(112 . 247))
+()
+()
+((32 . 202)(71 . 126)(72 . 127)(73 . 128)(74 . 129)(75 . 130)(76 . 131)(77 . 132)(78 . 133)(79 . 134)(80 . 135)(112 . 247))
+()
+((32 . 204)(71 . 126)(72 . 127)(73 . 128)(74 . 129)(75 . 130)(76 . 131)(77 . 132)(78 . 133)(79 . 134)(80 . 135)(112 . 247))
+()
+((116 . 206))
+((117 . 207))
+()
+()
+()
+()
+()
+()
+((35 . 213)(110 . 214))
+()
+((107 . 216)(108 . 240))
+()
+()
+()
+((58 . 220))
+()
+((47 . 222)(66 . 221))
+()
+()
+((19 . 245)(20 . 17)(24 . 225)(27 . 26))
+()
+((19 . 245)(20 . 17)(22 . 227)(23 . 226)(24 . 21)(27 . 26))
+()
+((19 . 229)(20 . 17)(27 . 26))
+((123 . 230))
+()
+((123 . 232))
+()
+((14 . 234)(27 . 248)(29 . 233)(30 . 28)(31 . 29))
+()
+((16 . 13)(19 . 231)(20 . 17)(27 . 26))
+()
+()
+()
+()
+()
+((89 . 217)(90 . 241)(91 . 157)(92 . 158)(93 . 159))
+((63 . 218)(69 . 242))
+()
+((34 . 223)(35 . 244))
+()
+()
+((32 . 200)(71 . 126)(72 . 127)(73 . 128)(74 . 129)(75 . 130)(76 . 131)(77 . 132)(78 . 133)(79 . 134)(80 . 135)(112 . 247))
+((32 . 38)(71 . 126)(72 . 127)(73 . 128)(74 . 129)(75 . 130)(76 . 131)(77 . 132)(78 . 133)(79 . 134)(80 . 135)(112 . 247)))
+0
+
+2
+
+#58((MODULE-DEFINITION . #S(ZEBU::ZB-RULE :-NAME MODULE-DEFINITION :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (MODULE-IDENTIFIER "DEFINITIONS" "::=" "BEGIN" MODULE-BODY "END") :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE MODULE-DEFINITION :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL IDENTIFIER :-VALUE MODULE-IDENTIFIER) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL BODY :-VALUE MODULE-BODY))) :-BUILD-FN MODULE-DEFINITION28))))
+(MODULE-IDENTIFIER . #S(ZEBU::ZB-RULE :-NAME MODULE-IDENTIFIER :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (MODULE-REFERENCE) :-SEMANTICS NIL :-BUILD-FN IDENTITY))))
+(MODULE-REFERENCE . #S(ZEBU::ZB-RULE :-NAME MODULE-REFERENCE :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (TYPE-REFERENCE) :-SEMANTICS NIL :-BUILD-FN IDENTITY))))
+(MODULE-BODY . #S(ZEBU::ZB-RULE :-NAME MODULE-BODY :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (EXPORTS IMPORTS ASSIGNMENT*) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE MODULE-BODY :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL ASSIGNMENT-LIST :-VALUE ASSIGNMENT*) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL EXPORTS :-VALUE EXPORTS) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL IMPORTS :-VALUE IMPORTS))) :-BUILD-FN MODULE-BODY27) #S(ZEBU::PRODUCTION-RHS :-SYNTAX NIL :-SEMANTICS NIL :-BUILD-FN IDENTITY*))))
+(EXPORTS . #S(ZEBU::ZB-RULE :-NAME EXPORTS :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX ("EXPORTS" SYMBOL*\,1$ ";") :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE EXPORTS :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL LIST :-VALUE SYMBOL*\,1$))) :-BUILD-FN EXPORTS25) #S(ZEBU::PRODUCTION-RHS :-SYNTAX ("EXPORTS" "ALL" ";") :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE EXPORTS :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL ALL-EXPORTS :-VALUE T))) :-BUILD-FN EXPORTS26) #S(ZEBU::PRODUCTION-RHS :-SYNTAX NIL :-SEMANTICS NIL :-BUILD-FN IDENTITY*))))
+(SYMBOL . #S(ZEBU::ZB-RULE :-NAME SYMBOL :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (REFERENCE) :-SEMANTICS NIL :-BUILD-FN IDENTITY))))
+(IMPORTS . #S(ZEBU::ZB-RULE :-NAME IMPORTS :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX ("IMPORTS" SYMBOLS-FROM-MODULE* ";") :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE IMPORTS :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL VALID :-VALUE T) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL LIST :-VALUE SYMBOLS-FROM-MODULE*))) :-BUILD-FN IMPORTS24) #S(ZEBU::PRODUCTION-RHS :-SYNTAX NIL :-SEMANTICS NIL :-BUILD-FN IDENTITY*))))
+(SYMBOLS-FROM-MODULE . #S(ZEBU::ZB-RULE :-NAME SYMBOLS-FROM-MODULE :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (SYMBOL+\,1$ "FROM" GLOBAL-MODULE-REFERENCE) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE SYMBOLS-FROM-MODULE :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL SYMBOLS :-VALUE SYMBOL+\,1$) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL GLOBAL-MODULE-REFERENCE :-VALUE GLOBAL-MODULE-REFERENCE))) :-BUILD-FN SYMBOLS-FROM-MODULE23))))
+(GLOBAL-MODULE-REFERENCE . #S(ZEBU::ZB-RULE :-NAME GLOBAL-MODULE-REFERENCE :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (MODULE-REFERENCE) :-SEMANTICS NIL :-BUILD-FN IDENTITY))))
+(REFERENCE . #S(ZEBU::ZB-RULE :-NAME REFERENCE :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (TYPE-REFERENCE) :-SEMANTICS NIL :-BUILD-FN IDENTITY) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (VALUE-REFERENCE) :-SEMANTICS NIL :-BUILD-FN IDENTITY))))
+(VALUE-REFERENCE . #S(ZEBU::ZB-RULE :-NAME VALUE-REFERENCE :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (IDENTIFIER) :-SEMANTICS NIL :-BUILD-FN IDENTITY))))
+(ASSIGNMENT . #S(ZEBU::ZB-RULE :-NAME ASSIGNMENT :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (TYPE-ASSIGNMENT) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE ASSIGNMENT :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL TYPE :-VALUE :TYPE) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL VALUE :-VALUE TYPE-ASSIGNMENT))) :-BUILD-FN ASSIGNMENT21) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (VALUE-ASSIGNMENT) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE ASSIGNMENT :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL TYPE :-VALUE :VALUE) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL VALUE :-VALUE VALUE-ASSIGNMENT))) :-BUILD-FN ASSIGNMENT22))))
+(TYPE-ASSIGNMENT . #S(ZEBU::ZB-RULE :-NAME TYPE-ASSIGNMENT :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (TYPE-REFERENCE "::=" TYPE) :-SEMANTICS NIL :-BUILD-FN IDENTITY*) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (TYPE-REFERENCE "MACRO" "::=" "BEGIN" GARBAGE+ "END") :-SEMANTICS NIL :-BUILD-FN IDENTITY*))))
+(GARBAGE . #S(ZEBU::ZB-RULE :-NAME GARBAGE :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (ANYTHING) :-SEMANTICS NIL :-BUILD-FN IDENTITY))))
+(VALUE-ASSIGNMENT . #S(ZEBU::ZB-RULE :-NAME VALUE-ASSIGNMENT :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (VALUE-REFERENCE TYPE "::=" VALUE) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE VALUE-ASSIGNMENT :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL NAME :-VALUE VALUE-REFERENCE) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL TYPE :-VALUE TYPE) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL VALUE :-VALUE VALUE))) :-BUILD-FN VALUE-ASSIGNMENT19) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (VALUE-REFERENCE "OBJECT-IDENTITY" "STATUS" IDENTIFIER "DESCRIPTION" STRING "::=" OBJECT-IDENTIFIER-VALUE) :-SEMANTICS NIL :-BUILD-FN IDENTITY*) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (VALUE-REFERENCE "MODULE-IDENTITY" "LAST-UPDATED" STRING "ORGANIZATION" STRING "CONTACT-INFO" STRING "DESCRIPTION" STRING MODULE-REVISION* "::=" OBJECT-IDENTIFIER-VALUE) :-SEMANTICS NIL :-BUILD-FN IDENTITY*) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (VALUE-REFERENCE "OBJECT-TYPE" "SYNTAX" TYPE "MAX-ACCESS" OBJECT-TYPE-ACCESS "STATUS" OBJECT-TYPE-STATUS "DESCRIPTION" STRING OBJECT-TYPE-INDEX "::=" OBJECT-IDENTIFIER-VALUE) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE OBJECT-TYPE-ASSIGNMENT :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL NAME :-VALUE VALUE-REFERENCE) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL TYPE :-VALUE :OBJECT-TYPE) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL SYNTAX :-VALUE TYPE) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL MAX-ACCESS :-VALUE OBJECT-TYPE-ACCESS) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL STATUS :-VALUE OBJECT-TYPE-STATUS) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL DESCRIPTION :-VALUE STRING) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL INDEX :-VALUE OBJECT-TYPE-INDEX) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL VALUE :-VALUE OBJECT-IDENTIFIER-VALUE))) :-BUILD-FN VALUE-ASSIGNMENT20) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (VALUE-REFERENCE "NOTIFICATION-TYPE" "STATUS" IDENTIFIER "DESCRIPTION" STRING "::=" OBJECT-IDENTIFIER-VALUE) :-SEMANTICS NIL :-BUILD-FN IDENTITY*) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (VALUE-REFERENCE "NOTIFICATION-GROUP" "NOTIFICATIONS" "{" IDENTIFIER+\,1$ "}" "STATUS" IDENTIFIER "DESCRIPTION" STRING "::=" OBJECT-IDENTIFIER-VALUE) :-SEMANTICS NIL :-BUILD-FN IDENTITY*) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (VALUE-REFERENCE "MODULE-COMPLIANCE" "STATUS" IDENTIFIER "DESCRIPTION" STRING "MODULE" "MANDATORY-GROUPS" "{" IDENTIFIER+\,1$ "}" MODULE-COMPLIANCE-GROUP+ "::=" OBJECT-IDENTIFIER-VALUE) :-SEMANTICS NIL :-BUILD-FN IDENTITY*) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (VALUE-REFERENCE "OBJECT-GROUP" "OBJECTS" "{" IDENTIFIER+\,1$ "}" "STATUS" IDENTIFIER "DESCRIPTION" STRING "::=" OBJECT-IDENTIFIER-VALUE) :-SEMANTICS NIL :-BUILD-FN IDENTITY*))))
+(OBJECT-TYPE-ACCESS . #S(ZEBU::ZB-RULE :-NAME OBJECT-TYPE-ACCESS :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (IDENTIFIER) :-SEMANTICS NIL :-BUILD-FN IDENTITY))))
+(OBJECT-TYPE-STATUS . #S(ZEBU::ZB-RULE :-NAME OBJECT-TYPE-STATUS :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (IDENTIFIER) :-SEMANTICS NIL :-BUILD-FN IDENTITY))))
+(MODULE-REVISION . #S(ZEBU::ZB-RULE :-NAME MODULE-REVISION :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX ("REVISION" STRING "DESCRIPTION" STRING) :-SEMANTICS NIL :-BUILD-FN IDENTITY*))))
+(OBJECT-TYPE-INDEX . #S(ZEBU::ZB-RULE :-NAME OBJECT-TYPE-INDEX :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX ("INDEX" OBJECT-IDENTIFIER-VALUE) :-SEMANTICS NIL :-BUILD-FN IDENTITY*) #S(ZEBU::PRODUCTION-RHS :-SYNTAX NIL :-SEMANTICS NIL :-BUILD-FN IDENTITY*))))
+(MODULE-COMPLIANCE-GROUP . #S(ZEBU::ZB-RULE :-NAME MODULE-COMPLIANCE-GROUP :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX ("GROUP" IDENTIFIER "DESCRIPTION" STRING) :-SEMANTICS NIL :-BUILD-FN IDENTITY*))))
+(TYPE . #S(ZEBU::ZB-RULE :-NAME TYPE :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (BUILTIN-TYPE) :-SEMANTICS NIL :-BUILD-FN IDENTITY) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (NAMED-TYPE) :-SEMANTICS NIL :-BUILD-FN IDENTITY))))
+(BUILTIN-TYPE . #S(ZEBU::ZB-RULE :-NAME BUILTIN-TYPE :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (OBJECT-IDENTIFIER-TYPE) :-SEMANTICS NIL :-BUILD-FN IDENTITY) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (CHOICE-TYPE) :-SEMANTICS NIL :-BUILD-FN IDENTITY) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (STRING-TYPE) :-SEMANTICS NIL :-BUILD-FN IDENTITY) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (INTEGER-TYPE) :-SEMANTICS NIL :-BUILD-FN IDENTITY) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (SEQUENCE-OF-TYPE) :-SEMANTICS NIL :-BUILD-FN IDENTITY) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (SEQUENCE-TYPE) :-SEMANTICS NIL :-BUILD-FN IDENTITY) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (TEXTUAL-CONVENTION-TYPE) :-SEMANTICS NIL :-BUILD-FN IDENTITY) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (TAGGED-TYPE) :-SEMANTICS NIL :-BUILD-FN IDENTITY))))
+(NAMED-TYPE . #S(ZEBU::ZB-RULE :-NAME NAMED-TYPE :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (TYPE-REFERENCE) :-SEMANTICS NIL :-BUILD-FN IDENTITY))))
+(TEXTUAL-CONVENTION-TYPE . #S(ZEBU::ZB-RULE :-NAME TEXTUAL-CONVENTION-TYPE :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX ("TEXTUAL-CONVENTION" TEXTUAL-CONVENTION-DISPLAY-HINT "STATUS" IDENTIFIER "DESCRIPTION" STRING TEXTUAL-CONVENTION-REFERENCE "SYNTAX" TYPE) :-SEMANTICS NIL :-BUILD-FN IDENTITY*))))
+(TEXTUAL-CONVENTION-DISPLAY-HINT . #S(ZEBU::ZB-RULE :-NAME TEXTUAL-CONVENTION-DISPLAY-HINT :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX ("DISPLAY-HINT" STRING) :-SEMANTICS NIL :-BUILD-FN IDENTITY*) #S(ZEBU::PRODUCTION-RHS :-SYNTAX NIL :-SEMANTICS NIL :-BUILD-FN IDENTITY*))))
+(TEXTUAL-CONVENTION-REFERENCE . #S(ZEBU::ZB-RULE :-NAME TEXTUAL-CONVENTION-REFERENCE :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX ("REFERENCE" STRING) :-SEMANTICS NIL :-BUILD-FN IDENTITY*) #S(ZEBU::PRODUCTION-RHS :-SYNTAX NIL :-SEMANTICS NIL :-BUILD-FN IDENTITY*))))
+(OBJECT-IDENTIFIER-TYPE . #S(ZEBU::ZB-RULE :-NAME OBJECT-IDENTIFIER-TYPE :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX ("OBJECT" "IDENTIFIER") :-SEMANTICS NIL :-BUILD-FN IDENTITY*))))
+(VALUE . #S(ZEBU::ZB-RULE :-NAME VALUE :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (BUILTIN-VALUE) :-SEMANTICS NIL :-BUILD-FN IDENTITY))))
+(BUILTIN-VALUE . #S(ZEBU::ZB-RULE :-NAME BUILTIN-VALUE :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (OBJECT-IDENTIFIER-VALUE) :-SEMANTICS NIL :-BUILD-FN IDENTITY))))
+(OBJECT-IDENTIFIER-VALUE . #S(ZEBU::ZB-RULE :-NAME OBJECT-IDENTIFIER-VALUE :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX ("{" OBJ-ID-COMPONENTS+ "}") :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE OBJECT-IDENTIFIER-VALUE :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL VALUE :-VALUE OBJ-ID-COMPONENTS+))) :-BUILD-FN OBJECT-IDENTIFIER-VALUE18))))
+(OBJ-ID-COMPONENTS . #S(ZEBU::ZB-RULE :-NAME OBJ-ID-COMPONENTS :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (NAME-AND-NUMBER-FORM) :-SEMANTICS NIL :-BUILD-FN IDENTITY) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (NAME-FORM) :-SEMANTICS NIL :-BUILD-FN IDENTITY) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (NUMBER-FORM) :-SEMANTICS NIL :-BUILD-FN IDENTITY))))
+(NAME-AND-NUMBER-FORM . #S(ZEBU::ZB-RULE :-NAME NAME-AND-NUMBER-FORM :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (IDENTIFIER "(" NUMBER-FORM ")") :-SEMANTICS NIL :-BUILD-FN IDENTITY*))))
+(NAME-FORM . #S(ZEBU::ZB-RULE :-NAME NAME-FORM :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (IDENTIFIER) :-SEMANTICS NIL :-BUILD-FN IDENTITY))))
+(NUMBER-FORM . #S(ZEBU::ZB-RULE :-NAME NUMBER-FORM :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (SIGNED-NUMBER) :-SEMANTICS NIL :-BUILD-FN IDENTITY))))
+(CHOICE-TYPE . #S(ZEBU::ZB-RULE :-NAME CHOICE-TYPE :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX ("CHOICE" "{" GARBAGE+ "}") :-SEMANTICS NIL :-BUILD-FN IDENTITY*))))
+(STRING-TYPE . #S(ZEBU::ZB-RULE :-NAME STRING-TYPE :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX ("OCTET" "STRING" STRING-OPTIONS) :-SEMANTICS NIL :-BUILD-FN IDENTITY*) #S(ZEBU::PRODUCTION-RHS :-SYNTAX ("DisplayString" STRING-OPTIONS) :-SEMANTICS NIL :-BUILD-FN IDENTITY*))))
+(STRING-OPTIONS . #S(ZEBU::ZB-RULE :-NAME STRING-OPTIONS :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX ("(" "SIZE" "(" NUMBERS ")" ")") :-SEMANTICS NIL :-BUILD-FN IDENTITY*) #S(ZEBU::PRODUCTION-RHS :-SYNTAX NIL :-SEMANTICS NIL :-BUILD-FN IDENTITY*))))
+(NUMBERS . #S(ZEBU::ZB-RULE :-NAME NUMBERS :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (SIGNED-NUMBER "|" SIGNED-NUMBER) :-SEMANTICS NIL :-BUILD-FN IDENTITY*) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (SIGNED-NUMBER ".." SIGNED-NUMBER) :-SEMANTICS NIL :-BUILD-FN IDENTITY*) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (SIGNED-NUMBER) :-SEMANTICS NIL :-BUILD-FN IDENTITY))))
+(INTEGER-TYPE . #S(ZEBU::ZB-RULE :-NAME INTEGER-TYPE :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX ("INTEGER" "(" SIGNED-NUMBER ".." SIGNED-NUMBER ")") :-SEMANTICS NIL :-BUILD-FN IDENTITY*) #S(ZEBU::PRODUCTION-RHS :-SYNTAX ("INTEGER" "{" NAMED-NUMBER+\,1$ "}") :-SEMANTICS NIL :-BUILD-FN IDENTITY*))))
+(NAMED-NUMBER . #S(ZEBU::ZB-RULE :-NAME NAMED-NUMBER :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (IDENTIFIER "(" SIGNED-NUMBER ")") :-SEMANTICS NIL :-BUILD-FN IDENTITY*))))
+(SEQUENCE-TYPE . #S(ZEBU::ZB-RULE :-NAME SEQUENCE-TYPE :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX ("SEQUENCE" "{" GARBAGE* "}") :-SEMANTICS NIL :-BUILD-FN IDENTITY*))))
+(SEQUENCE-OF-TYPE . #S(ZEBU::ZB-RULE :-NAME SEQUENCE-OF-TYPE :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX ("SEQUENCE" "OF" TYPE) :-SEMANTICS NIL :-BUILD-FN IDENTITY*))))
+(TAGGED-TYPE . #S(ZEBU::ZB-RULE :-NAME TAGGED-TYPE :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (TAG TYPE) :-SEMANTICS NIL :-BUILD-FN IDENTITY*) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (TAG "IMPLICIT" TYPE) :-SEMANTICS NIL :-BUILD-FN IDENTITY*) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (TAG "EXPLICIT" TYPE) :-SEMANTICS NIL :-BUILD-FN IDENTITY*))))
+(TAG . #S(ZEBU::ZB-RULE :-NAME TAG :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX ("[" CLASS CLASS-NUMBER "]") :-SEMANTICS NIL :-BUILD-FN IDENTITY*))))
+(CLASS-NUMBER . #S(ZEBU::ZB-RULE :-NAME CLASS-NUMBER :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (SIGNED-NUMBER) :-SEMANTICS NIL :-BUILD-FN IDENTITY))))
+(CLASS . #S(ZEBU::ZB-RULE :-NAME CLASS :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX ("UNIVERSAL") :-SEMANTICS NIL :-BUILD-FN IDENTITY) #S(ZEBU::PRODUCTION-RHS :-SYNTAX ("APPLICATION") :-SEMANTICS NIL :-BUILD-FN IDENTITY) #S(ZEBU::PRODUCTION-RHS :-SYNTAX ("PRIVATE") :-SEMANTICS NIL :-BUILD-FN IDENTITY) #S(ZEBU::PRODUCTION-RHS :-SYNTAX NIL :-SEMANTICS NIL :-BUILD-FN IDENTITY*))))
+(GARBAGE* . #S(ZEBU::ZB-RULE :-NAME GARBAGE* :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX NIL :-SEMANTICS NIL :-BUILD-FN IDENTITY*) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (GARBAGE GARBAGE*) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE KB-SEQUENCE :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL FIRST :-VALUE GARBAGE) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL REST :-VALUE GARBAGE*))) :-BUILD-FN GARBAGE*17))))
+(NAMED-NUMBER+\,1$ . #S(ZEBU::ZB-RULE :-NAME NAMED-NUMBER+\,1$ :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (NAMED-NUMBER) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE KB-SEQUENCE :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL FIRST :-VALUE NAMED-NUMBER))) :-BUILD-FN NAMED-NUMBER+\,1$15) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (NAMED-NUMBER "," NAMED-NUMBER+\,1$) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE KB-SEQUENCE :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL FIRST :-VALUE NAMED-NUMBER) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL REST :-VALUE NAMED-NUMBER+\,1$))) :-BUILD-FN NAMED-NUMBER+\,1$16))))
+(OBJ-ID-COMPONENTS+ . #S(ZEBU::ZB-RULE :-NAME OBJ-ID-COMPONENTS+ :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (OBJ-ID-COMPONENTS) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE KB-SEQUENCE :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL FIRST :-VALUE OBJ-ID-COMPONENTS))) :-BUILD-FN OBJ-ID-COMPONENTS+13) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (OBJ-ID-COMPONENTS OBJ-ID-COMPONENTS+) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE KB-SEQUENCE :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL FIRST :-VALUE OBJ-ID-COMPONENTS) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL REST :-VALUE OBJ-ID-COMPONENTS+))) :-BUILD-FN OBJ-ID-COMPONENTS+14))))
+(MODULE-COMPLIANCE-GROUP+ . #S(ZEBU::ZB-RULE :-NAME MODULE-COMPLIANCE-GROUP+ :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (MODULE-COMPLIANCE-GROUP) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE KB-SEQUENCE :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL FIRST :-VALUE MODULE-COMPLIANCE-GROUP))) :-BUILD-FN MODULE-COMPLIANCE-GROUP+11) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (MODULE-COMPLIANCE-GROUP MODULE-COMPLIANCE-GROUP+) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE KB-SEQUENCE :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL FIRST :-VALUE MODULE-COMPLIANCE-GROUP) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL REST :-VALUE MODULE-COMPLIANCE-GROUP+))) :-BUILD-FN MODULE-COMPLIANCE-GROUP+12))))
+(IDENTIFIER+\,1$ . #S(ZEBU::ZB-RULE :-NAME IDENTIFIER+\,1$ :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (IDENTIFIER) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE KB-SEQUENCE :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL FIRST :-VALUE IDENTIFIER))) :-BUILD-FN IDENTIFIER+\,1$9) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (IDENTIFIER "," IDENTIFIER+\,1$) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE KB-SEQUENCE :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL FIRST :-VALUE IDENTIFIER) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL REST :-VALUE IDENTIFIER+\,1$))) :-BUILD-FN IDENTIFIER+\,1$10))))
+(MODULE-REVISION* . #S(ZEBU::ZB-RULE :-NAME MODULE-REVISION* :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX NIL :-SEMANTICS NIL :-BUILD-FN IDENTITY*) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (MODULE-REVISION MODULE-REVISION*) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE KB-SEQUENCE :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL FIRST :-VALUE MODULE-REVISION) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL REST :-VALUE MODULE-REVISION*))) :-BUILD-FN MODULE-REVISION*8))))
+(GARBAGE+ . #S(ZEBU::ZB-RULE :-NAME GARBAGE+ :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (GARBAGE) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE KB-SEQUENCE :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL FIRST :-VALUE GARBAGE))) :-BUILD-FN GARBAGE+6) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (GARBAGE GARBAGE+) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE KB-SEQUENCE :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL FIRST :-VALUE GARBAGE) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL REST :-VALUE GARBAGE+))) :-BUILD-FN GARBAGE+7))))
+(SYMBOL+\,1$ . #S(ZEBU::ZB-RULE :-NAME SYMBOL+\,1$ :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX (SYMBOL) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE KB-SEQUENCE :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL FIRST :-VALUE SYMBOL))) :-BUILD-FN SYMBOL+\,1$4) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (SYMBOL "," SYMBOL+\,1$) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE KB-SEQUENCE :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL FIRST :-VALUE SYMBOL) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL REST :-VALUE SYMBOL+\,1$))) :-BUILD-FN SYMBOL+\,1$5))))
+(SYMBOLS-FROM-MODULE* . #S(ZEBU::ZB-RULE :-NAME SYMBOLS-FROM-MODULE* :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX NIL :-SEMANTICS NIL :-BUILD-FN IDENTITY*) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (SYMBOLS-FROM-MODULE SYMBOLS-FROM-MODULE*) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE KB-SEQUENCE :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL FIRST :-VALUE SYMBOLS-FROM-MODULE) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL REST :-VALUE SYMBOLS-FROM-MODULE*))) :-BUILD-FN SYMBOLS-FROM-MODULE*3))))
+(|Rest-SYMBOL*,1$| . #S(ZEBU::ZB-RULE :-NAME |Rest-SYMBOL*,1$| :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX NIL :-SEMANTICS NIL :-BUILD-FN IDENTITY*) #S(ZEBU::PRODUCTION-RHS :-SYNTAX ("," SYMBOL |Rest-SYMBOL*,1$|) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE KB-SEQUENCE :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL FIRST :-VALUE SYMBOL) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL REST :-VALUE |Rest-SYMBOL*,1$|))) :-BUILD-FN |Rest-SYMBOL*,1$2|))))
+(SYMBOL*\,1$ . #S(ZEBU::ZB-RULE :-NAME SYMBOL*\,1$ :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX NIL :-SEMANTICS NIL :-BUILD-FN IDENTITY*) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (SYMBOL |Rest-SYMBOL*,1$|) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE KB-SEQUENCE :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL FIRST :-VALUE SYMBOL) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL REST :-VALUE |Rest-SYMBOL*,1$|))) :-BUILD-FN SYMBOL*\,1$1))))
+(ASSIGNMENT* . #S(ZEBU::ZB-RULE :-NAME ASSIGNMENT* :-PRODUCTIONS (#S(ZEBU::PRODUCTION-RHS :-SYNTAX NIL :-SEMANTICS NIL :-BUILD-FN IDENTITY*) #S(ZEBU::PRODUCTION-RHS :-SYNTAX (ASSIGNMENT ASSIGNMENT*) :-SEMANTICS #S(ZEBU::FEAT-TERM :-TYPE KB-SEQUENCE :-SLOTS (#S(ZEBU::LABEL-VALUE-PAIR :-LABEL FIRST :-VALUE ASSIGNMENT) #S(ZEBU::LABEL-VALUE-PAIR :-LABEL REST :-VALUE ASSIGNMENT*))) :-BUILD-FN ASSIGNMENT*0))))
+)
\ No newline at end of file
Modified: trunk/asn.1/ber.lisp
==============================================================================
--- trunk/asn.1/ber.lisp (original)
+++ trunk/asn.1/ber.lisp Wed Sep 19 08:35:54 2007
@@ -127,88 +127,27 @@
(read-byte stream))
nil)
-;;;;;;;;;;;;;;;;;;;;;;;
-;;;; Special Types ;;;;
-;;;;;;;;;;;;;;;;;;;;;;;
+;;;; Test Code
-;;; Integer (:integer)
-
-(defmethod ber-encode ((value integer))
- (assert (<= 0 value))
- (labels ((iter (n acc l)
- (if (zerop n) (values acc l)
- (multiple-value-bind (q r) (floor n 256)
- (iter q (cons r acc) (1+ l))))))
- (multiple-value-bind (v l) (iter value nil 0)
- (nconc (ber-encode-type 0 0 2)
- (ber-encode-length l)
- v))))
-
-(defmethod ber-decode-value ((stream stream) (type (eql :integer)) length)
- (declare (type stream stream)
- (type fixnum length)
- (ignore type))
- (labels ((iter (i acc)
- (if (= i length) acc
- (iter (1+ i) (logior (ash acc 8) (read-byte stream))))))
- (iter 0 0)))
-
-;;; OCTET STRING (:octet-string)
-
-(defmethod ber-encode ((value simple-base-string))
- (nconc (ber-encode-type 0 0 4)
- (ber-encode-length (length value))
- (map 'list #'char-code value)))
-
-(defmethod ber-decode-value ((stream stream) (type (eql :octet-string)) length)
- (declare (type stream stream)
- (type fixnum length)
- (ignore type))
- (let ((str (make-string length)))
- (map-into str #'(lambda () (code-char (read-byte stream))))))
-
-;;; SEQUENCE (:sequence)
-
-(defmethod ber-encode ((value sequence))
- (let ((sub-encode (apply #'nconc
- (map 'list #'ber-encode value))))
- (nconc (ber-encode-type 0 1 16)
- (ber-encode-length (length sub-encode))
- sub-encode)))
-
-(defmethod ber-decode-value ((stream stream) (type (eql :sequence)) length)
- (declare (type stream stream)
- (type fixnum length)
- (ignore type))
- (labels ((iter (length-left acc)
- (if (zerop length-left)
- (nreverse acc)
- (multiple-value-bind (sub-type sub-type-length)
- (ber-decode-type stream)
- (multiple-value-bind (sub-length sub-length-length)
- (ber-decode-length stream)
- (iter (- length-left
- sub-type-length
- sub-length-length
- sub-length)
- (cons (ber-decode-value stream sub-type sub-length) acc)))))))
- (iter length nil)))
-
-;;; NULL (:null)
-(defmethod ber-encode ((value (eql nil)))
- (declare (ignore value))
- (nconc (ber-encode-type 0 0 5)
- (ber-encode-length 0)))
-
-(defmethod ber-decode-value ((stream stream) (type (eql :null)) length)
- (declare (type stream stream)
- (type fixnum length)
- (ignore type))
- (assert (zerop length))
- nil)
-
-(eval-when (:load-toplevel :execute)
- (install-asn.1-type :integer 0 0 2)
- (install-asn.1-type :octet-string 0 0 4)
- (install-asn.1-type :null 0 0 5)
- (install-asn.1-type :sequence 0 1 16))
+(defclass ber-stream (fundamental-input-stream)
+ ((sequence :type sequence :initarg :seq :reader ber-sequence)
+ (length :type integer :accessor ber-length)
+ (position :type integer :initform 0 :accessor ber-position)))
+
+(defmethod shared-initialize :after ((instance ber-stream) slot-names &rest initargs)
+ (declare (ignore slot-names initargs))
+ (setf (ber-length instance) (length (ber-sequence instance))))
+
+(defmethod stream-read-byte ((instance ber-stream))
+ (if (= (ber-position instance) (ber-length instance))
+ :eof
+ (let ((byte (elt (ber-sequence instance) (ber-position instance))))
+ (incf (ber-position instance))
+ byte)))
+
+(defun ber-test (x)
+ (let ((code (ber-encode x)))
+ (format t "~A -> ~A~%~{~8,'0B ~}~%~{~D ~}~%"
+ x (ber-decode (make-instance 'ber-stream :seq code))
+ code code)
+ x))
Modified: trunk/asn.1/mib-parse.lisp
==============================================================================
--- trunk/asn.1/mib-parse.lisp (original)
+++ trunk/asn.1/mib-parse.lisp Wed Sep 19 08:35:54 2007
@@ -1,16 +1,2 @@
(in-package :asn.1)
-(defun parse-oid-def (syntax-tree)
- (let ((module (car syntax-tree)))
- (let ((assignment-list (Module-Body-assignment-list
- (Module-Definition-body module))))
- (labels ((iter (kb-seq acc)
- (if (null (kb-sequence-rest kb-seq))
- (nreverse (cons (kb-sequence-first kb-seq) acc))
- (iter (kb-sequence-rest kb-seq)
- (cons (kb-sequence-first kb-seq) acc)))))
- (mapcar #'cdr
- (delete-if-not #'(lambda (x) (eq (car x) :value))
- (mapcar #'(lambda (x) (cons (assignment-type x)
- (assignment-value x)))
- (iter assignment-list nil))))))))
Modified: trunk/asn.1/mib.lisp
==============================================================================
--- trunk/asn.1/mib.lisp (original)
+++ trunk/asn.1/mib.lisp Wed Sep 19 08:35:54 2007
@@ -55,19 +55,40 @@
'("RFC1155-SMI"
"SNMPv2-SMI"))
-(defvar *asn.1-def* (merge-pathnames
- (make-pathname :name "asn.1" :type "zb"
- :directory '(:relative "asn.1"))
- (asdf:component-pathname (asdf:find-system :net-snmp))))
-
-(defparameter *asn.1-syntax* (merge-pathnames
- (make-pathname :name "asn.1" :type "tab"
- :directory '(:relative "asn.1"))
- (asdf:component-pathname (asdf:find-system :net-snmp))))
-
(defun parse-mib (file &key (verbose nil))
(let ((zb:*comment-start* "--")
(zb:*comment-brackets* '(("/*" . "*/")))
(zb:*preserve-case* t))
- (zb:file-parser file :grammar (zb:find-grammar "ASN.1") :verbose verbose)))
+ (zb:file-parser file :grammar (find-grammar "ASN.1") :verbose verbose)))
+
+(defun parse-oid-def (syntax-tree)
+ (let ((module (car syntax-tree)))
+ (let ((assignment-list (Module-Body-assignment-list
+ (Module-Definition-body module))))
+ (labels ((iter (kb-seq acc)
+ (if (null (kb-sequence-rest kb-seq))
+ (nreverse (cons (kb-sequence-first kb-seq) acc))
+ (iter (kb-sequence-rest kb-seq)
+ (cons (kb-sequence-first kb-seq) acc)))))
+ (mapcar #'cdr
+ (delete-if-not #'(lambda (x) (eq (car x) :value))
+ (mapcar #'(lambda (x) (cons (assignment-type x)
+ (assignment-value x)))
+ (iter assignment-list nil))))))))
+
+(defun test-parse (name)
+ (parse-oid-def (parse-mib (mib-pathname name))))
+
+(defun mib-display (name &optional (lines 10))
+ (let ((file (mib-pathname name)))
+ (with-open-file (s file :direction :input :element-type 'base-char)
+ (dotimes (i lines file)
+ (princ (read-line s))
+ (fresh-line)))))
+
+(defun test-syntax (name)
+ (parse-mib (merge-pathnames
+ (make-pathname :name name :type "asn"
+ :directory '(:relative "asn.1" "test"))
+ (asdf:component-pathname (asdf:find-system :net-snmp)))))
Added: trunk/asn.1/smi.lisp
==============================================================================
--- (empty file)
+++ trunk/asn.1/smi.lisp Wed Sep 19 08:35:54 2007
@@ -0,0 +1,87 @@
+(in-package :asn.1)
+
+;;;;;;;;;;;;;;;;;;;;;;;
+;;;; Special Types ;;;;
+;;;;;;;;;;;;;;;;;;;;;;;
+
+;;; Integer (:integer)
+
+(defmethod ber-encode ((value integer))
+ (assert (<= 0 value))
+ (labels ((iter (n acc l)
+ (if (zerop n) (values acc l)
+ (multiple-value-bind (q r) (floor n 256)
+ (iter q (cons r acc) (1+ l))))))
+ (multiple-value-bind (v l) (iter value nil 0)
+ (nconc (ber-encode-type 0 0 2)
+ (ber-encode-length l)
+ v))))
+
+(defmethod ber-decode-value ((stream stream) (type (eql :integer)) length)
+ (declare (type stream stream)
+ (type fixnum length)
+ (ignore type))
+ (labels ((iter (i acc)
+ (if (= i length) acc
+ (iter (1+ i) (logior (ash acc 8) (read-byte stream))))))
+ (iter 0 0)))
+
+;;; OCTET STRING (:octet-string)
+
+(defmethod ber-encode ((value simple-base-string))
+ (nconc (ber-encode-type 0 0 4)
+ (ber-encode-length (length value))
+ (map 'list #'char-code value)))
+
+(defmethod ber-decode-value ((stream stream) (type (eql :octet-string)) length)
+ (declare (type stream stream)
+ (type fixnum length)
+ (ignore type))
+ (let ((str (make-string length)))
+ (map-into str #'(lambda () (code-char (read-byte stream))))))
+
+;;; SEQUENCE (:sequence)
+
+(defmethod ber-encode ((value sequence))
+ (let ((sub-encode (apply #'nconc
+ (map 'list #'ber-encode value))))
+ (nconc (ber-encode-type 0 1 16)
+ (ber-encode-length (length sub-encode))
+ sub-encode)))
+
+(defmethod ber-decode-value ((stream stream) (type (eql :sequence)) length)
+ (declare (type stream stream)
+ (type fixnum length)
+ (ignore type))
+ (labels ((iter (length-left acc)
+ (if (zerop length-left)
+ (nreverse acc)
+ (multiple-value-bind (sub-type sub-type-length)
+ (ber-decode-type stream)
+ (multiple-value-bind (sub-length sub-length-length)
+ (ber-decode-length stream)
+ (iter (- length-left
+ sub-type-length
+ sub-length-length
+ sub-length)
+ (cons (ber-decode-value stream sub-type sub-length) acc)))))))
+ (iter length nil)))
+
+;;; NULL (:null)
+(defmethod ber-encode ((value (eql nil)))
+ (declare (ignore value))
+ (nconc (ber-encode-type 0 0 5)
+ (ber-encode-length 0)))
+
+(defmethod ber-decode-value ((stream stream) (type (eql :null)) length)
+ (declare (type stream stream)
+ (type fixnum length)
+ (ignore type))
+ (assert (zerop length))
+ nil)
+
+(eval-when (:load-toplevel :execute)
+ (install-asn.1-type :integer 0 0 2)
+ (install-asn.1-type :octet-string 0 0 4)
+ (install-asn.1-type :null 0 0 5)
+ (install-asn.1-type :sequence 0 1 16))
Modified: trunk/asn.1/stream-test.lisp
==============================================================================
--- trunk/asn.1/stream-test.lisp (original)
+++ trunk/asn.1/stream-test.lisp Wed Sep 19 08:35:54 2007
@@ -3,47 +3,3 @@
(eval-when (:compile-toplevel :load-toplevel)
(clc:clc-require :zebu-compiler))
-(defclass ber-stream (fundamental-input-stream)
- ((sequence :type sequence :initarg :seq :reader ber-sequence)
- (length :type integer :accessor ber-length)
- (position :type integer :initform 0 :accessor ber-position)))
-
-(defmethod shared-initialize :after ((instance ber-stream) slot-names &rest initargs)
- (declare (ignore slot-names initargs))
- (setf (ber-length instance) (length (ber-sequence instance))))
-
-(defmethod stream-read-byte ((instance ber-stream))
- (if (= (ber-position instance) (ber-length instance))
- :eof
- (let ((byte (elt (ber-sequence instance) (ber-position instance))))
- (incf (ber-position instance))
- byte)))
-
-(defun ber-test (x)
- (let ((code (ber-encode x)))
- (format t "~A -> ~A~%~{~8,'0B ~}~%~{~D ~}~%"
- x (ber-decode (make-instance 'ber-stream :seq code))
- code code)
- x))
-
-(defun mib-display (name &optional (lines 10))
- (let ((file (mib-pathname name)))
- (with-open-file (s file :direction :input :element-type 'base-char)
- (dotimes (i lines file)
- (princ (read-line s))
- (fresh-line)))))
-
-(defun load-syntax (&optional (def *asn.1-def*) (syntax *asn.1-syntax*))
- (let ((zb:*warn-conflicts* t)
- (zb:*allow-conflicts* t))
- (zb:zebu-compile-file def :output-file syntax))
- (zb:zebu-load-file syntax))
-
-(defun test-syntax (name)
- (parse-mib (merge-pathnames
- (make-pathname :name name :type "asn"
- :directory '(:relative "asn.1" "test"))
- (asdf:component-pathname (asdf:find-system :net-snmp)))))
-
-(defun test-parse (name)
- (parse-oid-def (parse-mib (mib-pathname name))))
Added: trunk/asn.1/syntax.lisp
==============================================================================
--- (empty file)
+++ trunk/asn.1/syntax.lisp Wed Sep 19 08:35:54 2007
@@ -0,0 +1,21 @@
+(in-package :asn.1)
+
+(defvar *asn.1-syntax-source* (merge-pathnames
+ (make-pathname :name "asn.1" :type "zb"
+ :directory '(:relative "asn.1"))
+ (asdf:component-pathname (asdf:find-system :net-snmp))))
+
+(defparameter *asn.1-syntax* (merge-pathnames
+ (make-pathname :name "asn.1" :type "tab"
+ :directory '(:relative "asn.1"))
+ (asdf:component-pathname (asdf:find-system :net-snmp))))
+
+(eval-when (:load-toplevel :execute)
+ (zebu-load-file *asn.1-syntax*))
+
+(defun update-syntax (&optional (zb *asn.1-syntax-source*) (tab *asn.1-syntax*))
+ (let ((*warn-conflicts* t)
+ (*allow-conflicts* t))
+ (zebu-compile-file zb :output-file tab)
+ (zebu-load-file tab)))
+
More information about the Cl-net-snmp-cvs
mailing list