lrama 0.5.9 → 0.5.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/test.yaml +25 -0
- data/.gitignore +7 -4
- data/Gemfile +9 -5
- data/Rakefile +13 -0
- data/Steepfile +13 -11
- data/lib/lrama/context.rb +1 -3
- data/lib/lrama/counterexamples/path.rb +0 -46
- data/lib/lrama/counterexamples/production_path.rb +17 -0
- data/lib/lrama/counterexamples/start_path.rb +21 -0
- data/lib/lrama/counterexamples/transition_path.rb +17 -0
- data/lib/lrama/counterexamples.rb +3 -0
- data/lib/lrama/grammar/code/initial_action_code.rb +28 -0
- data/lib/lrama/grammar/code/no_reference_code.rb +24 -0
- data/lib/lrama/grammar/code/printer_code.rb +34 -0
- data/lib/lrama/grammar/code/rule_action.rb +62 -0
- data/lib/lrama/grammar/code.rb +9 -93
- data/lib/lrama/grammar/counter.rb +15 -0
- data/lib/lrama/grammar/error_token.rb +3 -3
- data/lib/lrama/grammar/parameterizing_rules/builder/base.rb +36 -0
- data/lib/lrama/grammar/parameterizing_rules/builder/list.rb +28 -0
- data/lib/lrama/grammar/parameterizing_rules/builder/nonempty_list.rb +28 -0
- data/lib/lrama/grammar/parameterizing_rules/builder/option.rb +28 -0
- data/lib/lrama/grammar/parameterizing_rules/builder/separated_list.rb +39 -0
- data/lib/lrama/grammar/parameterizing_rules/builder/separated_nonempty_list.rb +34 -0
- data/lib/lrama/grammar/parameterizing_rules/builder.rb +60 -0
- data/lib/lrama/grammar/printer.rb +3 -3
- data/lib/lrama/grammar/reference.rb +7 -16
- data/lib/lrama/grammar/rule.rb +19 -2
- data/lib/lrama/grammar/rule_builder.rb +177 -0
- data/lib/lrama/grammar/symbol.rb +16 -2
- data/lib/lrama/grammar/type.rb +6 -0
- data/lib/lrama/grammar.rb +115 -325
- data/lib/lrama/lexer/location.rb +22 -0
- data/lib/lrama/lexer/token/parameterizing.rb +18 -3
- data/lib/lrama/lexer/token/tag.rb +4 -0
- data/lib/lrama/lexer/token/user_code.rb +54 -4
- data/lib/lrama/lexer/token.rb +35 -10
- data/lib/lrama/lexer.rb +32 -31
- data/lib/lrama/options.rb +1 -2
- data/lib/lrama/output.rb +2 -2
- data/lib/lrama/parser.rb +514 -424
- data/lib/lrama/report/profile.rb +1 -12
- data/lib/lrama/version.rb +1 -1
- data/lib/lrama.rb +0 -1
- data/parser.y +111 -52
- data/rbs_collection.lock.yaml +6 -8
- data/rbs_collection.yaml +1 -0
- data/sig/lrama/grammar/code/printer_code.rbs +15 -0
- data/sig/lrama/grammar/code.rbs +24 -0
- data/sig/lrama/grammar/counter.rbs +11 -0
- data/sig/lrama/grammar/error_token.rbs +11 -0
- data/sig/lrama/grammar/parameterizing_rules/builder/base.rbs +26 -0
- data/sig/lrama/grammar/parameterizing_rules/builder/list.rbs +10 -0
- data/sig/lrama/grammar/parameterizing_rules/builder/nonempty_list.rbs +10 -0
- data/sig/lrama/grammar/parameterizing_rules/builder/option.rbs +10 -0
- data/sig/lrama/grammar/parameterizing_rules/builder/separated_list.rbs +11 -0
- data/sig/lrama/grammar/parameterizing_rules/builder/separated_nonempty_list.rbs +11 -0
- data/sig/lrama/grammar/parameterizing_rules/builder.rbs +23 -0
- data/sig/lrama/grammar/precedence.rbs +11 -0
- data/sig/lrama/grammar/printer.rbs +11 -0
- data/sig/lrama/grammar/reference.rbs +6 -6
- data/sig/lrama/grammar/rule.rbs +13 -0
- data/sig/lrama/grammar/rule_builder.rbs +42 -0
- data/sig/lrama/grammar/symbol.rbs +37 -0
- data/sig/lrama/lexer/location.rbs +14 -0
- data/sig/lrama/lexer/token/parameterizing.rbs +9 -0
- data/sig/lrama/lexer/token/tag.rbs +1 -0
- data/sig/lrama/lexer/token/user_code.rbs +8 -1
- data/sig/lrama/lexer/token.rbs +9 -4
- data/sig/stdlib/strscan/string_scanner.rbs +5 -0
- data/template/bison/yacc.c +5 -2
- metadata +38 -3
- data/lib/lrama/type.rb +0 -4
@@ -0,0 +1,37 @@
|
|
1
|
+
module Lrama
|
2
|
+
class Grammar
|
3
|
+
class Symbol
|
4
|
+
attr_accessor id: Lexer::Token
|
5
|
+
attr_accessor alias_name: String
|
6
|
+
attr_accessor number: Integer
|
7
|
+
attr_accessor tag: Lexer::Token?
|
8
|
+
attr_accessor term: bool
|
9
|
+
attr_accessor token_id: Integer
|
10
|
+
attr_accessor nullable: bool
|
11
|
+
attr_accessor precedence: Precedence?
|
12
|
+
attr_accessor printer: Printer?
|
13
|
+
attr_accessor error_token: ErrorToken
|
14
|
+
|
15
|
+
attr_accessor first_set: Set[Array[Symbol]]
|
16
|
+
attr_accessor first_set_bitmap: Integer
|
17
|
+
attr_writer eof_symbol: Symbol
|
18
|
+
attr_writer error_symbol: Symbol
|
19
|
+
attr_writer undef_symbol: Symbol
|
20
|
+
attr_writer accept_symbol: Symbol
|
21
|
+
|
22
|
+
def initialize: (
|
23
|
+
id: Lexer::Token, alias_name: String?, number: Integer?, tag: Lexer::Token?,
|
24
|
+
term: bool, token_id: Integer?, nullable: bool?, precedence: Precedence?, printer: Printer?) -> void
|
25
|
+
|
26
|
+
def term?: () -> bool
|
27
|
+
def nterm?: () -> bool
|
28
|
+
def eof_symbol?: () -> bool
|
29
|
+
def error_symbol?: () -> bool
|
30
|
+
def undef_symbol?: () -> bool
|
31
|
+
def accept_symbol?: () -> bool
|
32
|
+
def display_name: () -> String
|
33
|
+
def enum_name: () -> String
|
34
|
+
def comment: () -> String
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Lrama
|
2
|
+
class Lexer
|
3
|
+
class Location
|
4
|
+
attr_reader first_line: Integer
|
5
|
+
attr_reader first_column: Integer
|
6
|
+
attr_reader last_line: Integer
|
7
|
+
attr_reader last_column: Integer
|
8
|
+
|
9
|
+
def initialize: (first_line: Integer, first_column: Integer, last_line: Integer, last_column: Integer) -> void
|
10
|
+
|
11
|
+
def ==: (Location other) -> bool
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -2,6 +2,15 @@ module Lrama
|
|
2
2
|
class Lexer
|
3
3
|
class Token
|
4
4
|
class Parameterizing < Token
|
5
|
+
attr_accessor args: Array[Lrama::Lexer::Token]
|
6
|
+
|
7
|
+
def initialize: (s_value: String, ?alias_name: String, ?location: Location, ?args: Array[Lrama::Lexer::Token]) -> void
|
8
|
+
|
9
|
+
def option?: () -> bool
|
10
|
+
def nonempty_list?: () -> bool
|
11
|
+
def list?: () -> bool
|
12
|
+
def separated_nonempty_list?: () -> bool
|
13
|
+
def separated_list?: () -> bool
|
5
14
|
end
|
6
15
|
end
|
7
16
|
end
|
@@ -2,7 +2,14 @@ module Lrama
|
|
2
2
|
class Lexer
|
3
3
|
class Token
|
4
4
|
class UserCode < Token
|
5
|
-
|
5
|
+
@references: Array[Lrama::Grammar::Reference]
|
6
|
+
|
7
|
+
def references: () -> Array[Lrama::Grammar::Reference]
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def _references: () -> Array[Lrama::Grammar::Reference]
|
12
|
+
def scan_reference: (StringScanner scanner) -> Lrama::Grammar::Reference?
|
6
13
|
end
|
7
14
|
end
|
8
15
|
end
|
data/sig/lrama/lexer/token.rbs
CHANGED
@@ -1,17 +1,22 @@
|
|
1
1
|
module Lrama
|
2
2
|
class Lexer
|
3
3
|
class Token
|
4
|
-
|
4
|
+
attr_reader s_value: String
|
5
5
|
attr_accessor alias_name: String
|
6
|
-
|
7
|
-
attr_accessor column: Integer
|
6
|
+
attr_reader location: Location
|
8
7
|
attr_accessor referred: bool
|
9
8
|
|
10
|
-
def initialize: (
|
9
|
+
def initialize: (s_value: String, ?alias_name: String, ?location: Location) -> void
|
11
10
|
|
12
11
|
def to_s: () -> String
|
13
12
|
def referred_by?: (String string) -> bool
|
14
13
|
def ==: (Token other) -> bool
|
14
|
+
def first_line: () -> Integer
|
15
|
+
def first_column: () -> Integer
|
16
|
+
def last_line: () -> Integer
|
17
|
+
def last_column: () -> Integer
|
18
|
+
alias line first_line
|
19
|
+
alias column first_column
|
15
20
|
end
|
16
21
|
end
|
17
22
|
end
|
data/template/bison/yacc.c
CHANGED
@@ -69,11 +69,12 @@
|
|
69
69
|
|
70
70
|
|
71
71
|
<%# b4_user_pre_prologue -%>
|
72
|
+
<%- if output.aux.prologue -%>
|
72
73
|
/* First part of user prologue. */
|
73
74
|
#line <%= output.aux.prologue_first_lineno %> "<%= output.grammar_file_path %>"
|
74
|
-
|
75
75
|
<%= output.aux.prologue %>
|
76
76
|
#line [@oline@] [@ofile@]
|
77
|
+
<%- end -%>
|
77
78
|
|
78
79
|
<%# b4_cast_define -%>
|
79
80
|
# ifndef YY_CAST
|
@@ -1483,6 +1484,7 @@ YYLTYPE yylloc = yyloc_default;
|
|
1483
1484
|
<%# b4_declare_parser_state_variables -%>
|
1484
1485
|
/* Number of syntax errors so far. */
|
1485
1486
|
int yynerrs = 0;
|
1487
|
+
YY_USE (yynerrs); /* Silence compiler warning. */
|
1486
1488
|
|
1487
1489
|
yy_state_fast_t yystate = 0;
|
1488
1490
|
/* Number of tokens to shift before error messages enabled. */
|
@@ -2043,7 +2045,8 @@ yyreturnlab:
|
|
2043
2045
|
}
|
2044
2046
|
|
2045
2047
|
<%# b4_percent_code_get([[epilogue]]) -%>
|
2048
|
+
<%- if output.aux.epilogue -%>
|
2046
2049
|
#line <%= output.aux.epilogue_first_lineno - 1 %> "<%= output.grammar_file_path %>"
|
2047
|
-
|
2048
2050
|
<%= output.aux.epilogue -%>
|
2051
|
+
<%- end -%>
|
2049
2052
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lrama
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yuichiro Kaneko
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: LALR (1) parser generator written by Ruby
|
14
14
|
email:
|
@@ -40,21 +40,39 @@ files:
|
|
40
40
|
- lib/lrama/counterexamples/derivation.rb
|
41
41
|
- lib/lrama/counterexamples/example.rb
|
42
42
|
- lib/lrama/counterexamples/path.rb
|
43
|
+
- lib/lrama/counterexamples/production_path.rb
|
44
|
+
- lib/lrama/counterexamples/start_path.rb
|
43
45
|
- lib/lrama/counterexamples/state_item.rb
|
46
|
+
- lib/lrama/counterexamples/transition_path.rb
|
44
47
|
- lib/lrama/counterexamples/triple.rb
|
45
48
|
- lib/lrama/digraph.rb
|
46
49
|
- lib/lrama/grammar.rb
|
47
50
|
- lib/lrama/grammar/auxiliary.rb
|
48
51
|
- lib/lrama/grammar/code.rb
|
52
|
+
- lib/lrama/grammar/code/initial_action_code.rb
|
53
|
+
- lib/lrama/grammar/code/no_reference_code.rb
|
54
|
+
- lib/lrama/grammar/code/printer_code.rb
|
55
|
+
- lib/lrama/grammar/code/rule_action.rb
|
56
|
+
- lib/lrama/grammar/counter.rb
|
49
57
|
- lib/lrama/grammar/error_token.rb
|
58
|
+
- lib/lrama/grammar/parameterizing_rules/builder.rb
|
59
|
+
- lib/lrama/grammar/parameterizing_rules/builder/base.rb
|
60
|
+
- lib/lrama/grammar/parameterizing_rules/builder/list.rb
|
61
|
+
- lib/lrama/grammar/parameterizing_rules/builder/nonempty_list.rb
|
62
|
+
- lib/lrama/grammar/parameterizing_rules/builder/option.rb
|
63
|
+
- lib/lrama/grammar/parameterizing_rules/builder/separated_list.rb
|
64
|
+
- lib/lrama/grammar/parameterizing_rules/builder/separated_nonempty_list.rb
|
50
65
|
- lib/lrama/grammar/percent_code.rb
|
51
66
|
- lib/lrama/grammar/precedence.rb
|
52
67
|
- lib/lrama/grammar/printer.rb
|
53
68
|
- lib/lrama/grammar/reference.rb
|
54
69
|
- lib/lrama/grammar/rule.rb
|
70
|
+
- lib/lrama/grammar/rule_builder.rb
|
55
71
|
- lib/lrama/grammar/symbol.rb
|
72
|
+
- lib/lrama/grammar/type.rb
|
56
73
|
- lib/lrama/grammar/union.rb
|
57
74
|
- lib/lrama/lexer.rb
|
75
|
+
- lib/lrama/lexer/location.rb
|
58
76
|
- lib/lrama/lexer/token.rb
|
59
77
|
- lib/lrama/lexer/token/char.rb
|
60
78
|
- lib/lrama/lexer/token/ident.rb
|
@@ -77,7 +95,6 @@ files:
|
|
77
95
|
- lib/lrama/states.rb
|
78
96
|
- lib/lrama/states/item.rb
|
79
97
|
- lib/lrama/states_reporter.rb
|
80
|
-
- lib/lrama/type.rb
|
81
98
|
- lib/lrama/version.rb
|
82
99
|
- lib/lrama/warning.rb
|
83
100
|
- lrama.gemspec
|
@@ -90,8 +107,25 @@ files:
|
|
90
107
|
- sig/lrama/bitmap.rbs
|
91
108
|
- sig/lrama/digraph.rbs
|
92
109
|
- sig/lrama/grammar.rbs
|
110
|
+
- sig/lrama/grammar/code.rbs
|
111
|
+
- sig/lrama/grammar/code/printer_code.rbs
|
112
|
+
- sig/lrama/grammar/counter.rbs
|
113
|
+
- sig/lrama/grammar/error_token.rbs
|
114
|
+
- sig/lrama/grammar/parameterizing_rules/builder.rbs
|
115
|
+
- sig/lrama/grammar/parameterizing_rules/builder/base.rbs
|
116
|
+
- sig/lrama/grammar/parameterizing_rules/builder/list.rbs
|
117
|
+
- sig/lrama/grammar/parameterizing_rules/builder/nonempty_list.rbs
|
118
|
+
- sig/lrama/grammar/parameterizing_rules/builder/option.rbs
|
119
|
+
- sig/lrama/grammar/parameterizing_rules/builder/separated_list.rbs
|
120
|
+
- sig/lrama/grammar/parameterizing_rules/builder/separated_nonempty_list.rbs
|
93
121
|
- sig/lrama/grammar/percent_code.rbs
|
122
|
+
- sig/lrama/grammar/precedence.rbs
|
123
|
+
- sig/lrama/grammar/printer.rbs
|
94
124
|
- sig/lrama/grammar/reference.rbs
|
125
|
+
- sig/lrama/grammar/rule.rbs
|
126
|
+
- sig/lrama/grammar/rule_builder.rbs
|
127
|
+
- sig/lrama/grammar/symbol.rbs
|
128
|
+
- sig/lrama/lexer/location.rbs
|
95
129
|
- sig/lrama/lexer/token.rbs
|
96
130
|
- sig/lrama/lexer/token/char.rbs
|
97
131
|
- sig/lrama/lexer/token/ident.rbs
|
@@ -101,6 +135,7 @@ files:
|
|
101
135
|
- sig/lrama/report/duration.rbs
|
102
136
|
- sig/lrama/report/profile.rbs
|
103
137
|
- sig/lrama/warning.rbs
|
138
|
+
- sig/stdlib/strscan/string_scanner.rbs
|
104
139
|
- template/bison/_yacc.h
|
105
140
|
- template/bison/yacc.c
|
106
141
|
- template/bison/yacc.h
|
data/lib/lrama/type.rb
DELETED