Skip to content

Commit 13b2a1e

Browse files
committed
Merge tree-sitter-fortran/master (to be finished)
2 parents 39b3f3f + 1b08f4c commit 13b2a1e

File tree

9 files changed

+923
-363
lines changed

9 files changed

+923
-363
lines changed

grammar.js

Lines changed: 217 additions & 106 deletions
Large diffs are not rendered by default.

package-lock.json

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/scanner.c

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ static bool is_exp_sentinel(char chr) {
5858
case 'd':
5959
case 'E':
6060
case 'e':
61+
case 'Q':
62+
case 'q':
6163
return true;
6264
default:
6365
return false;
@@ -113,6 +115,7 @@ static BoolOrErr scan_number(TSLexer *lexer) {
113115
advance(lexer);
114116
if (lexer->lookahead == '+' || lexer->lookahead == '-') {
115117
advance(lexer);
118+
lexer->mark_end(lexer);
116119
}
117120
switch (scan_int(lexer)) {
118121
case False:
@@ -122,7 +125,6 @@ static BoolOrErr scan_number(TSLexer *lexer) {
122125
case Error:
123126
return Error;
124127
}
125-
lexer->mark_end(lexer);
126128
lexer->result_symbol = FLOAT_LITERAL;
127129
}
128130
}
@@ -165,13 +167,13 @@ static bool skip_literal_continuation_sequence(TSLexer *lexer) {
165167
return true;
166168
}
167169

168-
skip(lexer);
170+
advance(lexer);
169171
while (iswspace(lexer->lookahead)) {
170-
skip(lexer);
172+
advance(lexer);
171173
}
172-
// second '&' required to continue the literal
174+
// second '&' technically required to continue the literal
173175
if (lexer->lookahead == '&') {
174-
skip(lexer);
176+
advance(lexer);
175177
return true;
176178
}
177179
return false;
@@ -209,7 +211,7 @@ static bool scan_hollerith_constant(TSLexer *lexer) {
209211
advance(lexer);
210212

211213
// Read exactly 'n' characters
212-
for (int i = 0; i < length; i++) {
214+
for (unsigned i = 0; i < length; i++) {
213215
if (!lexer->lookahead || lexer->eof(lexer)) {
214216
return false;
215217
}
@@ -377,6 +379,7 @@ static bool scan_string_literal(TSLexer *lexer) {
377379
// the end of the literal. We also need to check that an
378380
// escaped quote isn't split in half by a line
379381
// continuation -- people do this!
382+
lexer->mark_end(lexer);
380383
skip_literal_continuation_sequence(lexer);
381384
if (lexer->lookahead != opening_quote) {
382385
return true;

0 commit comments

Comments
 (0)