[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 03/17] parser: expose a list of symbols
From: |
Akim Demaille |
Subject: |
[PATCH 03/17] parser: expose a list of symbols |
Date: |
Sun, 20 Sep 2020 10:37:35 +0200 |
* src/parse-gram.y (%type): Also use current_class.
(symbol_decl.1): Rename as...
(symbols.1): this.
---
src/parse-gram.y | 23 +++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/src/parse-gram.y b/src/parse-gram.y
index 73a2ccea..c849eb80 100644
--- a/src/parse-gram.y
+++ b/src/parse-gram.y
@@ -449,7 +449,7 @@ grammar_declaration:
;
-%type <symbol_list*> nterm_decls symbol_decls symbol_decl.1
+%type <symbol_list*> nterm_decls symbol_decls symbols.1
token_decls token_decls_for_prec
token_decl.1 token_decl_for_prec.1;
symbol_declaration:
@@ -463,8 +463,9 @@ symbol_declaration:
current_class = unknown_sym;
symbol_list_free ($syms);
}
-| "%type" symbol_decls[syms]
+| "%type" { current_class = pct_type_sym; } symbol_decls[syms]
{
+ current_class = unknown_sym;
symbol_list_free ($syms);
}
| precedence_declarator token_decls_for_prec[syms]
@@ -630,30 +631,32 @@ token_decl_for_prec:
// A non empty list of typed symbols (for %type).
symbol_decls:
- symbol_decl.1[syms]
+ symbols.1[syms]
{
$$ = $syms;
}
-| TAG symbol_decl.1[syms]
+| TAG symbols.1[syms]
{
$$ = symbol_list_type_set ($syms, $TAG);
}
-| symbol_decls TAG symbol_decl.1[syms]
+| symbol_decls TAG symbols.1[syms]
{
$$ = symbol_list_append ($1, symbol_list_type_set ($syms, $TAG));
}
;
-// One or more token declarations (for %type).
-symbol_decl.1:
+// One or more symbols.
+symbols.1:
symbol
{
- symbol_class_set ($symbol, pct_type_sym, @symbol, false);
+ if (current_class != unknown_sym)
+ symbol_class_set ($symbol, current_class, @symbol, false);
$$ = symbol_list_sym_new ($symbol, @symbol);
}
- | symbol_decl.1 symbol
+ | symbols.1 symbol
{
- symbol_class_set ($symbol, pct_type_sym, @symbol, false);
+ if (current_class != unknown_sym)
+ symbol_class_set ($symbol, current_class, @symbol, false);
$$ = symbol_list_append ($1, symbol_list_sym_new ($symbol, @symbol));
}
;
--
2.28.0
- [PATCH 00/17] RFC: multiple start symbols, Akim Demaille, 2020/09/20
- [PATCH 01/17] gram: more debugging information, Akim Demaille, 2020/09/20
- [PATCH 02/17] reader: get ready to create several initial rules, Akim Demaille, 2020/09/20
- [PATCH 03/17] parser: expose a list of symbols,
Akim Demaille <=
- [PATCH 04/17] regen, Akim Demaille, 2020/09/20
- [PATCH 05/17] multistart: turn start symbols into rules on $accept, Akim Demaille, 2020/09/20
- [PATCH 06/17] regen, Akim Demaille, 2020/09/20
- [PATCH 07/17] multistart: adjust computation of initial core and adjust reports, Akim Demaille, 2020/09/20
- [PATCH 08/17] multistart: also check the HTML report, Akim Demaille, 2020/09/20
- [PATCH 09/17] multistart: pass the list of start symbols to the backend, Akim Demaille, 2020/09/20
- [PATCH 10/17] multistart: equip yacc.c, Akim Demaille, 2020/09/20
- [PATCH 11/17] multistart: toy with it in lexcalc, Akim Demaille, 2020/09/20
- [PATCH 12/17] todo: more, Akim Demaille, 2020/09/20
- [PATCH 13/17] multistart: adjust reader checks for generated rules, Akim Demaille, 2020/09/20