# This file is part of NIT ( http://www.nitlanguage.org ). # # Copyright 2008 Jean Privat # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. SABLECC=sablecc3 all: parser.nit # first sed start from first line to line /*I*/ and remove /*.*/ # second sed clones /*B*/ productions, substitute /*B*/ with no_bra and delete /*N*/ lines # third sed from line /*I*/ to last line and remove /*.*/ nit.sablecc3: nit.sablecc3xx @test -f nit.sablecc3 && chmod +w nit.sablecc3 || touch nit.sablecc3 @echo -n "// This file is autogenerated, no dot modify it" > nit.sablecc3.t sed -n -e '1,/\/\*I\*\//{s/\/\*[BIN]\*\///g;p}' nit.sablecc3xx >> nit.sablecc3.t sed -n -e '/\/\*B\*\//,/;/{s/\/\*B\*\//_nobra/g;/\/\*N\*\//d;p}' nit.sablecc3xx >> nit.sablecc3.t sed -n -e '/\/\*I\*\//,$${s/\/\*[BIN]\*\///g;p}' nit.sablecc3xx >> nit.sablecc3.t > nit.sablecc3 sed -n -e '1,/\/\*I2\*\//{s/\/\*[BIN]2\*\///g;p}' nit.sablecc3.t >> nit.sablecc3 sed -n -e '/\/\*B2\*\//,/;/{s/\/\*B2\*\//_withelse/g;/\/\*N2\*\//d;p}' nit.sablecc3.t >> nit.sablecc3 sed -n -e '/\/\*I2\*\//,$${s/\/\*[BIN]2\*\///g;p}' nit.sablecc3.t >> nit.sablecc3 cp nit.sablecc3 nit.sablecc3.t > nit.sablecc3 sed -n -e '1,/\/\*I3\*\//{s/\/\*[BIN]3\*\///g;p}' nit.sablecc3.t >> nit.sablecc3 sed -n -e '/\/\*B3\*\//,/;/{s/\/\*B3\*\//_nopar/g;/\/\*N3\*\//d;p}' nit.sablecc3.t >> nit.sablecc3 sed -n -e '/\/\*I3\*\//,$${s/\/\*[BIN]3\*\///g;p}' nit.sablecc3.t >> nit.sablecc3 rm nit.sablecc3.t @sed -i -e '{s/\/\/#.*//}' nit.sablecc3 @chmod -w nit.sablecc3 # Note that parser_nodes is automatically synced with the grammar parser.nit: nit.sablecc3 xss/*.xss cp parser_abs.nit parser_abs.nit.bak || true ${SABLECC} -c nit.sablecc3.dump -t xss/main.xss -p usermodule parser_nodes nit.sablecc3 diff -u parser_abs.nit.bak parser_abs.nit > parser_abs.patch || true patch parser_nodes.nit < parser_abs.patch || true clean: rm -f -- nit.sablecc3 nit.sablecc3.dump parser_abs.patch || true dist-clean: clean rm -f -- parser.nit parser_abs.nit parser_abs.patch parser_abs.nit.bak parser_prod.nit parser_tables.nit lexer.nit || true