49 lines
1.3 KiB
Plaintext
49 lines
1.3 KiB
Plaintext
# iPXE scripts (http://ipxe.org/)
|
|
|
|
vardef VAR = '\$\{[^\}]+\}'
|
|
vardef SEP = ';|&&|\|\|'
|
|
vardef ID = '[-/:\w]+'
|
|
vardef KW = "autoboot|boot|chain|choose|colour|config|console|cpair|cpuid",
|
|
"dhcp|echo|exit|fcels|fcstat|gdbstub|help|ifclose|ifconf|ifopen",
|
|
"ifstat|imgargs|imgexec|imgfetch|imgfree|imgload|imgselect|imgstat",
|
|
"imgtrust|imgverify|initrd|ipstat|iseq|isset|item|kernel|login",
|
|
"lotest|menu|module|nslookup|nstat|param|params|pciscan|ping|poweroff",
|
|
"profstat|prompt|pxebs|read|reboot|route|sanboot|sanhook|sanunhook",
|
|
"shell|sleep|sync|time|vcreate|vdestroy"
|
|
|
|
# comments
|
|
environment comment start "#"
|
|
begin
|
|
include "url.lang"
|
|
end
|
|
|
|
# labels and goto
|
|
label start '^\s*:'
|
|
(keyword, normal, variable) = `(\bgoto)(\s+)(\$\{[^\}]+\})`
|
|
(keyword, normal, label) = `(\bgoto)(\s+)([-/:\w]+)`
|
|
|
|
# variables
|
|
(keyword, normal, variable) = `(\b(?:clear|inc|show))(\s+)([-/:\w]+)`
|
|
state keyword = "set"
|
|
begin
|
|
state variable = $ID
|
|
begin
|
|
include "number.lang"
|
|
variable = $VAR
|
|
symbol = $SEP exitall
|
|
normal = '$' exitall
|
|
end
|
|
end
|
|
|
|
# keywords and statements
|
|
state keyword = $KW
|
|
begin
|
|
include "number.lang"
|
|
variable = $VAR
|
|
symbol = $SEP exit
|
|
normal = '$' exit
|
|
end
|
|
|
|
symbol = $SEP
|
|
|