📄 syntax.cs
字号:
using System;using Tools;
namespace RFC1157 {
//%+ObjectType
[Serializable] public class ObjectType : SYMBOL{
public string help ="";
public ObjectType (Parser yyq, Attribs b ):base(yyq){ help = b . help ;
}
public override string yyname() { return "ObjectType"; }
public ObjectType(Parser yyp):base(yyp){}}
//%+Defs
[Serializable] public class Defs : SYMBOL{
public static System . Collections . Hashtable defs = new System . Collections . Hashtable ();
public static void Enter ( Def d ){ Def a =( Def )defs[ d . name ];
if ( a == null ){defs[ d . name ]= d ;
if ( d . name =="iso") d . ix =1;
}
else { bool merge = true ;
if ( a . parentname . Length >0&& d . parentname . Length >0&& a . parentname != d . parentname ) merge = false ;
if ( a . ix !=9999&& d . ix !=9999&& a . ix != d . ix ) merge = false ;
if ( merge ){ if ( a . parentname . Length ==0) a . parentname = d . parentname ;
if ( a . ix ==9999) a . ix = d . ix ;
d = a ;
}
else defs[ d . name ]= d ;
}
if ( d . parentname . Length >0){ Def p =( Def )defs[ d . parentname ];
if ( p == null ) Console . WriteLine ("no parent "+ a . parentname );
else { p .nodes[ d . ix ]= d ;
p .names[ d . name ]= d ;
d . parent = p ;
}
}
}
public override string yyname() { return "Defs"; }
public Defs(Parser yyp):base(yyp){}}
//%+Def
[Serializable] public class Def : SYMBOL{
public Def parent = null ;
public uint ix =0;
public string parentname ="";
public string name ;
public string help ="";
public System . Collections . Hashtable names = new System . Collections . Hashtable ();
public System . Collections . Hashtable nodes = new System . Collections . Hashtable ();
public Def this[ string s ]{ get { return ( Def )names[ s ];
}
}
public Def this[ uint k ]{ get { return ( Def )nodes[ k ];
}
}
public uint[] path { get { System . Collections . ArrayList a = new System . Collections . ArrayList ();
for ( Def d = this ;
d != null ;
d = d . parent ) a . Add ( d . ix );
uint[] r = new uint[ a . Count ];
for ( int j =0;
j < a . Count ;
j ++)r[ j ]=( uint )a[ a . Count - j -1];
return r ;
}
}
public string Lookup (uint[] u , int p ){ string s = name ;
if ( p >= u . Length ) return s ;
Def m = this[u[ p ]];
if ( m != null ) return s +"."+ m . Lookup ( u , p +1);
while ( p < u . Length ) s +="."+u[ p ++];
return s ;
}
public string[] Kids (){string[] r = new string[ names . Count ];
int j =0;
System . Collections . IDictionaryEnumerator d = names . GetEnumerator ();
while ( d . MoveNext ())r[ j ++]=( string ) d . Key ;
return r ;
}
public Def (Parser yyq, string i , ObjectType t ):base(yyq){ name = i ;
if ( t != null ) help = t . help ;
}
public Def (Parser yyq, string i , ObjectType t , Oid e ):this(yyq, i , t ){ string b ;
string pn ="";
uint n =0;
for (;
e != null && e . head != null ;
e = e . tail ){ b = e . head . name ;
n = e . head . val ;
if ( b . Length >0){ Def d =( Def ) Defs .defs[ b ];
if ( d == null ){ d = new Def (yyq, b , null );
d . parentname = pn ;
d . ix = n ;
Defs . Enter ( d );
}
pn = b ;
}
}
parentname = pn ;
ix = n ;
Defs . Enter ( this );
}
public override string yyname() { return "Def"; }
public Def(Parser yyp):base(yyp){}}
//%+Attrib
[Serializable] public class Attrib : SYMBOL{
public string val = null ;
public Attrib (Parser yyq, string o ):base(yyq){ val = Fix ( o );
}
string Fix ( string s ){string[] t = s . Split ('\n');
string r ="";
for ( int j =0;
j < t . Length ;
j ++) r +=t[ j ]. Trim ()+"\n";
return r ;
}
public override string yyname() { return "Attrib"; }
public Attrib(Parser yyp):base(yyp){}}
//%+Attribs
[Serializable] public class Attribs : SYMBOL{
public string help ="";
public Attribs tail ;
public Attrib head ;
public Attribs (Parser yyq, Attrib h , Attribs t ):base(yyq){ head = h ;
tail = t ;
if ( h . val != null ) help = h . val ;
else if ( tail != null ) help = tail . help ;
}
public override string yyname() { return "Attribs"; }
public Attribs(Parser yyp):base(yyp){}}
//%+Oid
[Serializable] public class Oid : SYMBOL{
public EnumItem head = null ;
public Oid tail ;
public Oid (Parser yyq, EnumItem h , Oid t ):base(yyq){ head = h ;
tail = t ;
}
public override string yyname() { return "Oid"; }
public Oid(Parser yyp):base(yyp){}}
//%+EnumItem
[Serializable] public class EnumItem : SYMBOL{
public string name ;
public uint val ;
public EnumItem (Parser yyq, string n , uint v ):base(yyq){ name = n ;
val = v ;
}
public override string yyname() { return "EnumItem"; }
public EnumItem(Parser yyp):base(yyp){}}
[Serializable] public class Mib : SYMBOL {
public Mib(Parser yyq):base(yyq) { }
public override string yyname() { return "Mib"; }}
[Serializable] public class Block : SYMBOL {
public Block(Parser yyq):base(yyq) { }
public override string yyname() { return "Block"; }}
[Serializable] public class Def_1 : Def {
public Def_1(Parser yyq):base(yyq, ((ID)(yyq.StackAt(6).m_value)) .id, ((ObjectType)(yyq.StackAt(5).m_value)) , ((Oid)(yyq.StackAt(2).m_value)) ){}}
[Serializable] public class Asn : SYMBOL {
public Asn(Parser yyq):base(yyq) { }
public override string yyname() { return "Asn"; }}
[Serializable] public class ObjectType_1 : ObjectType {
public ObjectType_1(Parser yyq):base(yyq, ((Attribs)(yyq.StackAt(1).m_value)) ){}}
[Serializable] public class TrapType : SYMBOL {
public TrapType(Parser yyq):base(yyq) { }
public override string yyname() { return "TrapType"; }}
[Serializable] public class Attribs_1 : Attribs {
public Attribs_1(Parser yyq):base(yyq, ((Attrib)(yyq.StackAt(1).m_value)) ,null){}}
[Serializable] public class Attribs_2 : Attribs {
public Attribs_2(Parser yyq):base(yyq, ((Attrib)(yyq.StackAt(1).m_value)) , ((Attribs)(yyq.StackAt(2).m_value)) ){}}
[Serializable] public class Type : SYMBOL {
public Type(Parser yyq):base(yyq) { }
public override string yyname() { return "Type"; }}
[Serializable] public class MacroBody : SYMBOL {
public MacroBody(Parser yyq):base(yyq) { }
public override string yyname() { return "MacroBody"; }}
[Serializable] public class MacroEntry : SYMBOL {
public MacroEntry(Parser yyq):base(yyq) { }
public override string yyname() { return "MacroEntry"; }}
[Serializable] public class MacroStuff : SYMBOL {
public MacroStuff(Parser yyq):base(yyq) { }
public override string yyname() { return "MacroStuff"; }}
[Serializable] public class MacroBit : SYMBOL {
public MacroBit(Parser yyq):base(yyq) { }
public override string yyname() { return "MacroBit"; }}
[Serializable] public class Values : SYMBOL {
public Values(Parser yyq):base(yyq) { }
public override string yyname() { return "Values"; }}
[Serializable] public class Attrib_1 : Attrib {
public Attrib_1(Parser yyq):base(yyq, ((STRING)(yyq.StackAt(1).m_value)) .yytext){}}
[Serializable] public class Imports : SYMBOL {
public Imports(Parser yyq):base(yyq) { }
public override string yyname() { return "Imports"; }}
[Serializable] public class ImportList : SYMBOL {
public ImportList(Parser yyq):base(yyq) { }
public override string yyname() { return "ImportList"; }}
[Serializable] public class IdList : SYMBOL {
public IdList(Parser yyq):base(yyq) { }
public override string yyname() { return "IdList"; }}
[Serializable] public class Exports : SYMBOL {
public Exports(Parser yyq):base(yyq) { }
public override string yyname() { return "Exports"; }}
[Serializable] public class ImportId : SYMBOL {
public ImportId(Parser yyq):base(yyq) { }
public override string yyname() { return "ImportId"; }}
[Serializable] public class Size : SYMBOL {
public Size(Parser yyq):base(yyq) { }
public override string yyname() { return "Size"; }}
[Serializable] public class Range : SYMBOL {
public Range(Parser yyq):base(yyq) { }
public override string yyname() { return "Range"; }}
[Serializable] public class Alt : SYMBOL {
public Alt(Parser yyq):base(yyq) { }
public override string yyname() { return "Alt"; }}
[Serializable] public class Sequence : SYMBOL {
public Sequence(Parser yyq):base(yyq) { }
public override string yyname() { return "Sequence"; }}
[Serializable] public class Entry : SYMBOL {
public Entry(Parser yyq):base(yyq) { }
public override string yyname() { return "Entry"; }}
[Serializable] public class Enum : SYMBOL {
public Enum(Parser yyq):base(yyq) { }
public override string yyname() { return "Enum"; }}
[Serializable] public class EnumItem_1 : EnumItem {
public EnumItem_1(Parser yyq):base(yyq, ((ID)(yyq.StackAt(4).m_value)) .id, ((UNSIGNED)(yyq.StackAt(2).m_value)) .val){}}
[Serializable] public class EnumItem_2 : EnumItem {
public EnumItem_2(Parser yyq):base(yyq, ((ID)(yyq.StackAt(1).m_value)) .id,(uint)9999){}}
[Serializable] public class EnumItem_3 : EnumItem {
public EnumItem_3(Parser yyq):base(yyq,"", ((UNSIGNED)(yyq.StackAt(1).m_value)) .val){}}
[Serializable] public class Oid_1 : Oid {
public Oid_1(Parser yyq):base(yyq,null,null){}}
[Serializable] public class Oid_2 : Oid {
public Oid_2(Parser yyq):base(yyq, ((EnumItem)(yyq.StackAt(2).m_value)) , ((Oid)(yyq.StackAt(1).m_value)) ){}}
[Serializable] public class yysyntax: Symbols { public override object Action(Parser yyq,SYMBOL yysym, int yyact) { switch(yyact) { case -1: break; //// keep compiler happy
} return null; }
[Serializable] public class Mib_1 : Mib {
public Mib_1(Parser yyq):base(yyq){}}
[Serializable] public class Defs_1 : Defs {
public Defs_1(Parser yyq):base(yyq){}}
[Serializable] public class Defs_2 : Defs {
public Defs_2(Parser yyq):base(yyq){}}
[Serializable] public class Block_1 : Block {
public Block_1(Parser yyq):base(yyq){}}
[Serializable] public class Def_2 : Def {
public Def_2(Parser yyq):base(yyq){}}
[Serializable] public class Def_3 : Def {
public Def_3(Parser yyq):base(yyq){}}
[Serializable] public class Asn_1 : Asn {
public Asn_1(Parser yyq):base(yyq){}}
[Serializable] public class Asn_2 : Asn {
public Asn_2(Parser yyq):base(yyq){}}
[Serializable] public class Def_4 : Def {
public Def_4(Parser yyq):base(yyq){}}
[Serializable] public class ObjectType_2 : ObjectType {
public ObjectType_2(Parser yyq):base(yyq){}}
[Serializable] public class TrapType_1 : TrapType {
public TrapType_1(Parser yyq):base(yyq){}}
[Serializable] public class Sequence_1 : Sequence {
public Sequence_1(Parser yyq):base(yyq){}}
[Serializable] public class Type_1 : Type {
public Type_1(Parser yyq):base(yyq){}}
[Serializable] public class Sequence_2 : Sequence {
public Sequence_2(Parser yyq):base(yyq){}}
[Serializable] public class Entry_1 : Entry {
public Entry_1(Parser yyq):base(yyq){}}
[Serializable] public class Entry_2 : Entry {
public Entry_2(Parser yyq):base(yyq){}}
[Serializable] public class Entry_3 : Entry {
public Entry_3(Parser yyq):base(yyq){}}
[Serializable] public class Entry_4 : Entry {
public Entry_4(Parser yyq):base(yyq){}}
[Serializable] public class Type_2 : Type {
public Type_2(Parser yyq):base(yyq){}}
[Serializable] public class Attrib_2 : Attrib {
public Attrib_2(Parser yyq):base(yyq){}}
[Serializable] public class Type_3 : Type {
public Type_3(Parser yyq):base(yyq){}}
[Serializable] public class Type_4 : Type {
public Type_4(Parser yyq):base(yyq){}}
[Serializable] public class Type_5 : Type {
public Type_5(Parser yyq):base(yyq){}}
[Serializable] public class Size_1 : Size {
public Size_1(Parser yyq):base(yyq){}}
[Serializable] public class Size_2 : Size {
public Size_2(Parser yyq):base(yyq){}}
[Serializable] public class Range_1 : Range {
public Range_1(Parser yyq):base(yyq){}}
[Serializable] public class Alt_1 : Alt {
public Alt_1(Parser yyq):base(yyq){}}
[Serializable] public class Range_2 : Range {
public Range_2(Parser yyq):base(yyq){}}
[Serializable] public class Alt_2 : Alt {
public Alt_2(Parser yyq):base(yyq){}}
[Serializable] public class Type_6 : Type {
public Type_6(Parser yyq):base(yyq){}}
[Serializable] public class Attrib_3 : Attrib {
public Attrib_3(Parser yyq):base(yyq){}}
[Serializable] public class Attrib_4 : Attrib {
public Attrib_4(Parser yyq):base(yyq){}}
[Serializable] public class Attrib_5 : Attrib {
public Attrib_5(Parser yyq):base(yyq){}}
[Serializable] public class Attrib_6 : Attrib {
public Attrib_6(Parser yyq):base(yyq){}}
[Serializable] public class Enum_1 : Enum {
public Enum_1(Parser yyq):base(yyq){}}
[Serializable] public class Attrib_7 : Attrib {
public Attrib_7(Parser yyq):base(yyq){}}
[Serializable] public class Enum_2 : Enum {
public Enum_2(Parser yyq):base(yyq){}}
[Serializable] public class TrapType_2 : TrapType {
public TrapType_2(Parser yyq):base(yyq){}}
[Serializable] public class MacroBody_1 : MacroBody {
public MacroBody_1(Parser yyq):base(yyq){}}
[Serializable] public class Def_5 : Def {
public Def_5(Parser yyq):base(yyq){}}
[Serializable] public class MacroBody_2 : MacroBody {
public MacroBody_2(Parser yyq):base(yyq){}}
[Serializable] public class MacroEntry_1 : MacroEntry {
public MacroEntry_1(Parser yyq):base(yyq){}}
[Serializable] public class MacroStuff_1 : MacroStuff {
public MacroStuff_1(Parser yyq):base(yyq){}}
[Serializable] public class MacroStuff_2 : MacroStuff {
public MacroStuff_2(Parser yyq):base(yyq){}}
[Serializable] public class MacroEntry_2 : MacroEntry {
public MacroEntry_2(Parser yyq):base(yyq){}}
[Serializable] public class MacroBit_1 : MacroBit {
public MacroBit_1(Parser yyq):base(yyq){}}
[Serializable] public class MacroBit_2 : MacroBit {
public MacroBit_2(Parser yyq):base(yyq){}}
[Serializable] public class Values_1 : Values {
public Values_1(Parser yyq):base(yyq){}}
[Serializable] public class Values_2 : Values {
public Values_2(Parser yyq):base(yyq){}}
[Serializable] public class MacroEntry_3 : MacroEntry {
public MacroEntry_3(Parser yyq):base(yyq){}}
[Serializable] public class Exports_1 : Exports {
public Exports_1(Parser yyq):base(yyq){}}
[Serializable] public class Exports_2 : Exports {
public Exports_2(Parser yyq):base(yyq){}}
[Serializable] public class Imports_1 : Imports {
public Imports_1(Parser yyq):base(yyq){}}
[Serializable] public class ImportList_1 : ImportList {
public ImportList_1(Parser yyq):base(yyq){}}
[Serializable] public class IdList_1 : IdList {
public IdList_1(Parser yyq):base(yyq){}}
[Serializable] public class ImportList_2 : ImportList {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -