blob: e5dcbf7127b4450179c473e24ae7787cdc6ef859 [file] [log] [blame]
#!/bin/perl
## Licensed under the terms of http://www.apache.org/licenses/LICENSE-2.0
# Convert javacc token format to BNF
$/ = undef ;
$_ = <> ;
s!//.*!!g ;
s!\r!!g ;
s/\n+/\n/g ;
s/^\n// ;
#@t = split(/\n(?=\<|\[)/, $tokens) ;
@t = split(/\n/) ;
## for $t (@t)
## {
## ($tokenname,$tokenbody) = split(/::=/, $t) ;
## print $tokenname,"\n" ;
##
## }
# Rewrite to XML BNF
## #xN // [a-zA-Z], [#xN-#xN] // [abc], [#xN#xN#xN] //
## [^a-z], [^#xN-#xN] // [^abc], [^#xN#xN#xN]
# Rules
# 1 -- ~["X","Y"] => [^XY]
# 2 -- ["a"-"z","A"-"Z"] => [a-zA-Z]
# 3 -- ["!","&"] => [!&]
# 4 -- \uXXXX => #xXXXX
## Rule 1
s/~\[/\[^/g ;
## Rule 2
s/\["([^"]*)"-"([^"]*)"\]/\[$1-$2\]/g ;
## Rule 3
## s/\[.*"([^\],"]*)".*\]/\[$1\]/g ;
## Rule 4
s/\\u(....)/#x$1/g ;
print $_ ;