Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move the parser out of the way #2851

Merged
merged 2 commits into from
Aug 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/src/parser/parser.nit -diff
/src/parser/parser_sablecc.nit -diff
/src/parser/parser_prod.nit -diff
/src/parser/lexer.nit -diff
/src/parser/tables_nit.c -diff
Expand Down
12 changes: 6 additions & 6 deletions src/parser/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,28 +16,28 @@

SABLECC3ALTGEN ?= sablecc3

all: parser.nit
all: parser_sablecc.nit

# Preprocess the extended sablecc gramar
.nit.sablecc3: nit.sablecc3xx
./prescc.pl $< > $@

# Note that parser_nodes is no more automatically synced with the grammar
parser.nit: .nit.sablecc3 xss/*.xss
parser_sablecc.nit: .nit.sablecc3 xss/*.xss
@${SABLECC3ALTGEN -license} >/dev/null 2>/dev/null || ( echo "***\n*** sablecc3 altgen version is needed.\n*** Set the environment variable SABLECC3ALTGEN to the executable.\n*** Aborting...\n***" ; exit 1 )
@${SABLECC3ALTGEN} | grep altgen >/dev/null 2>/dev/null || ( echo "***\n*** $$SABLECC3ALTGEN is not the sablecc3 altgen version.\n*** Set the environment variable SABLECC3ALTGEN to the executable.\n*** Aborting...\n***"; exit 1 )
${SABLECC3ALTGEN} -c .nit.sablecc3.dump -t xss/main.xss -p usermodule parser_nodes .nit.sablecc3
mv -f -- parser.nit .parser-nofact.nit
./fact_parser.pl .parser-nofact.nit > parser.nit
perl -np -i.orig -e 's/([ (\[])P([A-Z])/\1A\2/g;' -e 's/"{"/"\\{"/g;' parser.nit parser_abs.nit parser_prod.nit lexer.nit
mv -f -- parser_sablecc.nit .parser-nofact.nit
./fact_parser.pl .parser-nofact.nit > parser_sablecc.nit
perl -np -i.orig -e 's/([ (\[])P([A-Z])/\1A\2/g;' -e 's/"{"/"\\{"/g;' parser_sablecc.nit parser_abs.nit parser_prod.nit lexer.nit

clean:
rm -f -- .nit.sablecc3 .nit.sablecc3.dump .parser-nofact.nit || true

maintainer-clean: clean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
rm -f -- parser.nit parser_abs.nit parser_prod.nit lexer.nit || true
rm -f -- parser_sablecc.nit parser_abs.nit parser_prod.nit lexer.nit || true

java: .nit.sablecc3
rm -r org/nitlanguage/gen/analysis/ org/nitlanguage/gen/lexer/ org/nitlanguage/gen/node/ org/nitlanguage/gen/parser/
Expand Down
12 changes: 6 additions & 6 deletions src/parser/lexer_work.nit
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,9 @@ class Lexer
var accept_pos = -1
var accept_line = -1

var cr = _cr
var line = _line
var pos = _pos
loop
if sp >= string_len then
dfa_state = -1
Expand All @@ -177,9 +180,6 @@ class Lexer
if c >= 256 then c = 255
sp += 1

var cr = _cr
var line = _line
var pos = _pos
if c == 10 then
if cr then
cr = false
Expand Down Expand Up @@ -228,10 +228,10 @@ class Lexer
if dfa_state > -2 then break
end

_cr = cr
_line = line
_pos = pos
end
_cr = cr
_line = line
_pos = pos

if dfa_state >= 0 then
var tok = lexer_accept(dfa_state)
Expand Down
Loading
Loading