source: libmono-lliurex-utils/trunk/interfaces.g @ 341

Last change on this file since 341 was 341, checked in by mabarracus, 5 years ago

ported pandora code

File size: 2.0 KB
Line 
1grammar interfaces;
2
3options
4{
5    language=CSharp2;
6}
7
8tokens {
9    IFACE='iface';
10    AUTO='auto';
11    MAPPING='mapping';
12    INET='inet';
13    STATIC='static';
14    DHCP='dhcp';
15    LOOPBACK='loopback';
16    ADDRESS='address';
17    NETMASK='netmask';
18    GATEWAY='gateway';
19    NETWORK='network';
20}
21
22eval    :       
23        line
24        ;
25
26line   
27        :/*epsilon*/ | COMMENT | iface_def | auto_def | MAPPING
28        | static_methods
29        | dhcp_methods
30        | bootp_methods | ppp_methods | commands
31        ;
32
33commands
34        :('pre-up' | 'up' | 'post-up' | 'pre-down' | 'down' | 'post-down') id
35        ;
36
37static_methods
38        : address_def | netmask_def | gateway_def
39        | ('network'| 'broadcast' | 'metric' | 'pointopoint' | 'media' | 'hwaddress' | 'mtu') id {lliurex.net.InterfacesConfig.GetInstance().SetOption($static_methods.text);}
40        ;
41
42dhcp_methods
43        : ('hostname' | 'leasetime' | 'leasehours' | 'vendor' | 'client') id {lliurex.net.InterfacesConfig.GetInstance().SetOption($dhcp_methods.text);}
44        | 'hwaddress' hwclass id {lliurex.net.InterfacesConfig.GetInstance().SetOption($dhcp_methods.text);}
45        ;
46       
47bootp_methods
48        : ('bootfile' | 'server' | 'hwaddr' ) id
49        ;
50       
51ppp_methods
52        : 'provider' id
53        ;
54       
55hwclass
56        :('ether' | 'ax25' | 'ARCnet' | 'netrom')
57        ;       
58
59               
60auto_def
61        : AUTO auto_iface+
62        ;       
63       
64auto_iface
65        : id {lliurex.net.InterfacesConfig.GetInstance().AddAuto($id.text);}
66        ;
67       
68iface_def
69        : IFACE id iface_type iface_conf {lliurex.net.InterfacesConfig.GetInstance().AddInterface($id.text,$iface_type.text,$iface_conf.text);}
70        ;
71
72iface_type
73        : INET
74        ;
75       
76iface_conf
77        : STATIC | DHCP | LOOPBACK
78        ;
79       
80address_def
81        : ADDRESS id {lliurex.net.InterfacesConfig.GetInstance().SetAddress($id.text);}
82        ;       
83       
84netmask_def
85        : NETMASK id {lliurex.net.InterfacesConfig.GetInstance().SetNetmask($id.text);}
86        ;
87
88gateway_def
89        : GATEWAY id {lliurex.net.InterfacesConfig.GetInstance().SetGateway($id.text);}
90        ;
91
92
93id
94        :ID
95        ;
96
97ID
98        :('a'..'z'|'A'..'Z'|'0'..'9'|'_'|'.'|'/')+
99        ;
100
101COMMENT
102        :'#' ('.')*
103        ;
104       
105WS  :   ( ' '
106        | '\t'
107        | '\r'
108        | '\n'
109        ) {$channel=HIDDEN;}
110    ;
Note: See TracBrowser for help on using the repository browser.