yaparc 0.2.3 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
metadata CHANGED
@@ -1,72 +1,105 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: yaparc
3
- version: !ruby/object:Gem::Version
4
- version: 0.2.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Akimichi Tatsukawa
8
- autorequire:
8
+ - gemmaro
9
+ autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
-
12
- date: 2009-01-19 00:00:00 +09:00
13
- default_executable:
14
- dependencies: []
15
-
16
- description:
17
- email: akimichi_tatsukawa@nifty.com
12
+ date: 2024-12-31 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: rubocop
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: test-unit
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ description:
57
+ email:
58
+ - akimichi.tatsukawa@gmail.com
59
+ - gemmaro.dev@gmail.com
18
60
  executables: []
19
-
20
61
  extensions: []
21
-
22
- extra_rdoc_files:
62
+ extra_rdoc_files: []
63
+ files:
64
+ - ".document"
65
+ - ".rdoc_options"
66
+ - CHANGELOG.md
67
+ - Gemfile
68
+ - LICENSE
23
69
  - README
24
- files:
25
- - test/test_sql.rb
26
- - test/test_lambda.rb
27
- - test/test_calc.rb
28
- - test/test_uri.rb
29
- - test/test_parser.rb
30
- - test/test_owl.rb
31
- - test/test_metric.rb
32
- - test/test_prolog.rb
70
+ - Rakefile
33
71
  - lib/yaparc.rb
34
- - test/n3.bnf
35
- - test/test_abc.rb.bak
36
- - test/n3-report.html
37
- - README
38
- has_rdoc: true
39
- homepage: http://rubyforge.org/projects/yaparc/
40
- post_install_message:
72
+ - manifest.scm
73
+ - sig/yaparc.gen.rbs
74
+ - sig/yaparc.rbs
75
+ - yaparc.gemspec
76
+ homepage: https://git.disroot.org/gemmaro/yaparc
77
+ licenses: []
78
+ metadata:
79
+ rubygems_mfa_required: 'true'
80
+ bug_tracker_uri: https://git.disroot.org/gemmaro/yaparc/issues
81
+ changelog_uri: https://git.disroot.org/gemmaro/yaparc/src/branch/main/CHANGELOG.md
82
+ documentation_uri: https://rubydoc.info/gems/yaparc
83
+ homepage_uri: https://git.disroot.org/gemmaro/yaparc
84
+ source_code_uri: https://git.disroot.org/gemmaro/yaparc
85
+ wiki_uri: https://git.disroot.org/gemmaro/yaparc/wiki
86
+ post_install_message:
41
87
  rdoc_options: []
42
-
43
- require_paths:
88
+ require_paths:
44
89
  - lib
45
- required_ruby_version: !ruby/object:Gem::Requirement
46
- requirements:
90
+ required_ruby_version: !ruby/object:Gem::Requirement
91
+ requirements:
47
92
  - - ">="
48
- - !ruby/object:Gem::Version
49
- version: "0"
50
- version:
51
- required_rubygems_version: !ruby/object:Gem::Requirement
52
- requirements:
93
+ - !ruby/object:Gem::Version
94
+ version: 3.1.6
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
+ requirements:
53
97
  - - ">="
54
- - !ruby/object:Gem::Version
55
- version: "0"
56
- version:
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
57
100
  requirements: []
58
-
59
- rubyforge_project: yaparc
60
- rubygems_version: 1.3.1
61
- signing_key:
62
- specification_version: 2
63
- summary: Yet Another Combinator Parser Library
64
- test_files:
65
- - test/test_sql.rb
66
- - test/test_lambda.rb
67
- - test/test_calc.rb
68
- - test/test_uri.rb
69
- - test/test_parser.rb
70
- - test/test_owl.rb
71
- - test/test_metric.rb
72
- - test/test_prolog.rb
101
+ rubygems_version: 3.3.26
102
+ signing_key:
103
+ specification_version: 4
104
+ summary: Yet another simple parser combinator library
105
+ test_files: []
data/test/n3-report.html DELETED
@@ -1,169 +0,0 @@
1
- <html><head><title>BNF</title></head><body>
2
- <h1>BNF</h1>
3
- <p>Productions are in normal type, linked to their definitions.<br>
4
- <em>Regular expressions are in italics</em><br>
5
- <b><code>Literal characters in quoted in bold</code></b><br>
6
- <em>void</em> means an empty production.
7
- </p>
8
- <dl>
9
- <dt><a name="barename">barename</a></dt><dd>
10
- <p><em>[A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿][\-0-9A-Z_a-z·À-ÖØ-öø-ͽͿ-῿‌-‍‿-⁀⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿]*</em></p>
11
- </dd>
12
- <dt><a name="barename_csl">barename_csl</a></dt><dd>
13
- <p><a href="#barename">barename</a> <a href="#barename_csl_tail">barename_csl_tail</a></p>
14
- <p><em>void</em></p>
15
- </dd>
16
- <dt><a name="barename_csl_tail">barename_csl_tail</a></dt><dd>
17
- <p><b><code>","</code></b> <a href="#barename">barename</a> <a href="#barename_csl_tail">barename_csl_tail</a></p>
18
- <p><em>void</em></p>
19
- </dd>
20
- <dt><a name="boolean">boolean</a></dt><dd>
21
- <p><b><code>"@false"</code></b></p>
22
- <p><b><code>"@true"</code></b></p>
23
- </dd>
24
- <dt><a name="decimal">decimal</a></dt><dd>
25
- <p><em>[-+]?[0-9]+(\.[0-9]+)?</em></p>
26
- </dd>
27
- <dt><a name="declaration">declaration</a></dt><dd>
28
- <p><b><code>"@base"</code></b> <a href="#explicituri">explicituri</a></p>
29
- <p><b><code>"@keywords"</code></b> <a href="#barename_csl">barename_csl</a></p>
30
- <p><b><code>"@prefix"</code></b> <a href="#prefix">prefix</a> <a href="#explicituri">explicituri</a></p>
31
- </dd>
32
- <dt><a name="document">document</a></dt><dd>
33
- <p><a href="#statements_optional">statements_optional</a> <em>EOF</em></p>
34
- </dd>
35
- <dt><a name="double">double</a></dt><dd>
36
- <p><em>[-+]?[0-9]+(\.[0-9]+)?([eE][-+]?[0-9]+)</em></p>
37
- </dd>
38
- <dt><a name="dtlang">dtlang</a></dt><dd>
39
- <p><b><code>"@"</code></b> <a href="#langcode">langcode</a></p>
40
- <p><b><code>"^^"</code></b> <a href="#symbol">symbol</a></p>
41
- <p><em>void</em></p>
42
- </dd>
43
- <dt><a name="existential">existential</a></dt><dd>
44
- <p><b><code>"@forSome"</code></b> <a href="#symbol_csl">symbol_csl</a></p>
45
- </dd>
46
- <dt><a name="explicituri">explicituri</a></dt><dd>
47
- <p><em>&lt;[^&gt;]*&gt;</em></p>
48
- </dd>
49
- <dt><a name="expression">expression</a></dt><dd>
50
- <p><a href="#pathitem">pathitem</a> <a href="#pathtail">pathtail</a></p>
51
- </dd>
52
- <dt><a name="formulacontent">formulacontent</a></dt><dd>
53
- <p><a href="#statementlist">statementlist</a></p>
54
- </dd>
55
- <dt><a name="integer">integer</a></dt><dd>
56
- <p><em>[-+]?[0-9]+</em></p>
57
- </dd>
58
- <dt><a name="langcode">langcode</a></dt><dd>
59
- <p><em>[a-z]+(-[a-z0-9]+)*</em></p>
60
- </dd>
61
- <dt><a name="literal">literal</a></dt><dd>
62
- <p><a href="#string">string</a> <a href="#dtlang">dtlang</a></p>
63
- </dd>
64
- <dt><a name="numericliteral">numericliteral</a></dt><dd>
65
- <p><a href="#decimal">decimal</a></p>
66
- <p><a href="#double">double</a></p>
67
- <p><a href="#integer">integer</a></p>
68
- </dd>
69
- <dt><a name="object">object</a></dt><dd>
70
- <p><a href="#expression">expression</a></p>
71
- </dd>
72
- <dt><a name="objecttail">objecttail</a></dt><dd>
73
- <p><b><code>","</code></b> <a href="#object">object</a> <a href="#objecttail">objecttail</a></p>
74
- <p><em>void</em></p>
75
- </dd>
76
- <dt><a name="pathitem">pathitem</a></dt><dd>
77
- <p><a href="#boolean">boolean</a></p>
78
- <p><a href="#literal">literal</a></p>
79
- <p><a href="#numericliteral">numericliteral</a></p>
80
- <p><a href="#quickvariable">quickvariable</a></p>
81
- <p><a href="#symbol">symbol</a></p>
82
- <p><b><code>"("</code></b> <a href="#pathlist">pathlist</a> <b><code>")"</code></b></p>
83
- <p><b><code>"["</code></b> <a href="#propertylist">propertylist</a> <b><code>"]"</code></b></p>
84
- <p><b><code>"{"</code></b> <a href="#formulacontent">formulacontent</a> <b><code>"}"</code></b></p>
85
- </dd>
86
- <dt><a name="pathlist">pathlist</a></dt><dd>
87
- <p><a href="#expression">expression</a> <a href="#pathlist">pathlist</a></p>
88
- <p><em>void</em></p>
89
- </dd>
90
- <dt><a name="pathtail">pathtail</a></dt><dd>
91
- <p><b><code>"!"</code></b> <a href="#expression">expression</a></p>
92
- <p><b><code>"^"</code></b> <a href="#expression">expression</a></p>
93
- <p><em>void</em></p>
94
- </dd>
95
- <dt><a name="prefix">prefix</a></dt><dd>
96
- <p><em>([A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿][\-0-9A-Z_a-z·À-ÖØ-öø-ͽͿ-῿‌-‍‿-⁀⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿]*)?:</em></p>
97
- </dd>
98
- <dt><a name="propertylist">propertylist</a></dt><dd>
99
- <p><a href="#verb">verb</a> <a href="#object">object</a> <a href="#objecttail">objecttail</a> <a href="#propertylisttail">propertylisttail</a></p>
100
- <p><em>void</em></p>
101
- </dd>
102
- <dt><a name="propertylisttail">propertylisttail</a></dt><dd>
103
- <p><b><code>";"</code></b> <a href="#propertylist">propertylist</a></p>
104
- <p><em>void</em></p>
105
- </dd>
106
- <dt><a name="qname">qname</a></dt><dd>
107
- <p><em>(([A
108
- -Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿][\-0-9A-Z_a-z·À-ÖØ-öø-ͽͿ-῿‌
109
- -‍‿-⁀⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿]*)?:)?[A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-
110
- �𐀀-󯿿][\-0-9A-Z_a-z·À-ÖØ-öø-ͽͿ-῿‌-‍‿-⁀⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿]*</em></p>
111
- </dd>
112
- <dt><a name="quickvariable">quickvariable</a></dt><dd>
113
- <p><em>\?[A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿][\-0-9A-Z_a-z·À-ÖØ-öø-ͽͿ-῿‌-‍‿-⁀⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿]*</em></p>
114
- </dd>
115
- <dt><a name="simpleStatement">simpleStatement</a></dt><dd>
116
- <p><a href="#subject">subject</a> <a href="#propertylist">propertylist</a></p>
117
- </dd>
118
- <dt><a name="statement">statement</a></dt><dd>
119
- <p><a href="#declaration">declaration</a></p>
120
- <p><a href="#existential">existential</a></p>
121
- <p><a href="#simpleStatement">simpleStatement</a></p>
122
- <p><a href="#universal">universal</a></p>
123
- </dd>
124
- <dt><a name="statementlist">statementlist</a></dt><dd>
125
- <p><a href="#statement">statement</a> <a href="#statementtail">statementtail</a></p>
126
- <p><em>void</em></p>
127
- </dd>
128
- <dt><a name="statements_optional">statements_optional</a></dt><dd>
129
- <p><a href="#statement">statement</a> <b><code>"."</code></b> <a href="#statements_optional">statements_optional</a></p>
130
- <p><em>void</em></p>
131
- </dd>
132
- <dt><a name="statementtail">statementtail</a></dt><dd>
133
- <p><b><code>"."</code></b> <a href="#statementlist">statementlist</a></p>
134
- <p><em>void</em></p>
135
- </dd>
136
- <dt><a name="string">string</a></dt><dd>
137
- <p><em>("""[^"\\]*(?:(?:\\.|"(?!""))[^"\\]*)*""")|("[^"\\]*(?:\\.[^"\\]*)*")</em></p>
138
- </dd>
139
- <dt><a name="subject">subject</a></dt><dd>
140
- <p><a href="#expression">expression</a></p>
141
- </dd>
142
- <dt><a name="symbol">symbol</a></dt><dd>
143
- <p><a href="#explicituri">explicituri</a></p>
144
- <p><a href="#qname">qname</a></p>
145
- </dd>
146
- <dt><a name="symbol_csl">symbol_csl</a></dt><dd>
147
- <p><a href="#symbol">symbol</a> <a href="#symbol_csl_tail">symbol_csl_tail</a></p>
148
- <p><em>void</em></p>
149
- </dd>
150
- <dt><a name="symbol_csl_tail">symbol_csl_tail</a></dt><dd>
151
- <p><b><code>","</code></b> <a href="#symbol">symbol</a> <a href="#symbol_csl_tail">symbol_csl_tail</a></p>
152
- <p><em>void</em></p>
153
- </dd>
154
- <dt><a name="universal">universal</a></dt><dd>
155
- <p><b><code>"@forAll"</code></b> <a href="#symbol_csl">symbol_csl</a></p>
156
- </dd>
157
- <dt><a name="verb">verb</a></dt><dd>
158
- <p><a href="#expression">expression</a></p>
159
- <p><b><code>"&lt;="</code></b></p>
160
- <p><b><code>"="</code></b></p>
161
- <p><b><code>"=&gt;"</code></b></p>
162
- <p><b><code>"@a"</code></b></p>
163
- <p><b><code>"@has"</code></b> <a href="#expression">expression</a></p>
164
- <p><b><code>"@is"</code></b> <a href="#expression">expression</a> <b><code>"@of"</code></b></p>
165
- </dd>
166
-
167
- </dl>
168
-
169
- </body></html>
data/test/n3.bnf DELETED
@@ -1,129 +0,0 @@
1
- #
2
- # Taken from http://www.w3.org/DesignIssues/Notation3.html
3
- # on 2001-08-03 (version of 2001-04-10)
4
- #
5
- # Modifications:
6
- #
7
- # $Log: n3.bnf,v $
8
- # Revision 1.4 2001/08/06 20:56:21 sandro
9
- # added space* and space+ in several places
10
- # removed "#" from forbidden chars in URI_Reference
11
- # handles comments
12
- # made directives actually part of the grammar (!)
13
- # allowed nprefix to be zero-length
14
- #
15
- # Revision 1.3 2001/08/03 13:44:43 sandro
16
- # filled in remaining non-terminals
17
- #
18
- # Revision 1.2 2001/08/03 13:02:48 sandro
19
- # standardized BNF so blindfold can compile it
20
- # added ::= for each rule
21
- # added | for branches
22
- # added ; at end of rule
23
- # added # before comments
24
- # put quotes around literals
25
- # turn hypen into underscore in identifiers
26
- # rename prefix to nprefix (hack around blindfold keyword for now)
27
- #
28
- # Revision 1.1 2001/08/03 12:34:38 sandro
29
- # added opening comments
30
- #
31
-
32
-
33
- document ::= void
34
- | statementlist;
35
-
36
- space ::= " " | "\n" | "\r" | comment;
37
-
38
- comment ::= "#" [^\r\n]*;
39
-
40
- statement ::= subject space+ property_list
41
- | directive
42
- ;
43
-
44
- statementlist ::= (statement space* ("." space*)?)* ;
45
-
46
- subject ::= node;
47
-
48
- verb ::= ">-" prop "->" # has xxx of
49
- | "<-" prop "<-" # is xxx of
50
- # | operator # has operator:xxx of??? NOT IMPLMENTED
51
- | prop # has xxx of -- shorthand
52
- | "has" prop # has xxx of
53
- | "is" prop "of" # is xxx of
54
- | "a" # has rdf:type of
55
- | "=" # has daml:equivaent of
56
- ;
57
-
58
- prop ::= node;
59
-
60
- node ::= uri_ref2
61
- | anonnode
62
- | "this"
63
- | node
64
- ;
65
-
66
- nodelist ::= void # (used in lists)
67
- | node
68
- | node nodelist
69
- ;
70
-
71
- anonnode ::= "[" property_list "]" # something which ...
72
- | "{" statementlist "}" # the statementlist itself as a resource
73
- | "(" nodelist ")" # short for eg [ n3:first node1; n3:rest [ n3:first node2; n3:rest: n3:null ]]
74
- ;
75
-
76
- property_list ::= void # to allow [...].
77
- | verb space+ object_list
78
- | verb space+ object_list space+ ";" space+ property_list
79
- | ":-" anonnode #to allow two anonymous forms to be given eg [ a :Truth; :- { :sky :color :blue } ] )
80
- | ":-" anonnode ";" property_list
81
- ;
82
-
83
- object_list ::= object
84
- | object "," object_list
85
- ;
86
-
87
- uri_ref2 ::= qname
88
- | "<" URI_Reference ">"
89
- ;
90
-
91
- qname ::= nprefix ":" localname; # ??? Allow omit colon when prefix void - keyword clash
92
-
93
- object ::= subject
94
- | string1 # " constant-value-with-escaping "
95
- | string2 # """ constant value with escaping including single or double occurences of quotes and/or newlines """
96
- # well-formed-xml-element ???? legacy or structured stuff - not implemented or distinguished
97
- ;
98
-
99
- directive ::= "bind" space+ nprefix ":" uri_ref2 # Namespace declartion. Trailing "#" is omitted & assumed. Obsolete.
100
- | "@prefix" space+ nprefix ":" space+ uri_ref2 # Namespace declaration
101
- ;
102
-
103
- # operator ::= (Not implemented)
104
- # + >- operator:plus ->
105
- # - >- operator:minus ->
106
- # / >- operator:slash->
107
- # * >- operator:star-> (etc? @@)
108
-
109
- fragid ::= alpha alphanumeric* ;
110
-
111
- alpha ::= [a-zA-Z];
112
-
113
- alphanumeric ::= alpha | [0-9] | "_";
114
-
115
- void ::= "" ; # nothing
116
-
117
- URI_Reference ::= [^{}<>]*; # short version
118
-
119
- nprefix ::= "" | ((alpha | "_") alphanumeric*);
120
-
121
- localname ::= fragid;
122
-
123
- string1 ::= '"' string1_char* '"';
124
-
125
- string1_char ::= '\\"' | [^\"] ; # should disallow some other characters, etc.
126
-
127
- string2 ::= '"""' string2_char* '"""';
128
-
129
- string2_char ::= [^"] | ([^] [^] [^"]); # something like this; need to think about it some more
data/test/test_abc.rb.bak DELETED
@@ -1,112 +0,0 @@
1
-
2
- require 'lib/yaparc.rb'
3
- require 'test/unit'
4
-
5
- ### c.f. http://www.norbeck.nu/abc/bnf/abc20bnf.htm###
6
-
7
- module ABC
8
-
9
- # KEYWORDS = %w{NOT AND OR ALL IN select from where EXISTS}
10
-
11
- # abc-file ::= *(abc-tune / comment / xcommand / file-field / text-line / tex)
12
- class AbcFile
13
- include Yaparc::Parsable
14
-
15
- def initialize
16
- @parser = lambda do
17
- Yaparc::Many.new(
18
- Yaparc::Alt.new(AbcTune.new,
19
- Comment.new,
20
- Xcommand.new,
21
- FileField.new,
22
- TextLine.new,
23
- Tex.new))
24
- end
25
- end
26
- end
27
-
28
- # file-field ::= field-area / field-book / field-composer / field-discography / field-file / field-group / field-history / field-length / field-meter / field-notes / field-origin / field-parts / field-tempo / field-rhythm / field-source / field-userdef-print / field-userdef-play / field-words / field-transcription / field-key / unused-field ; Default values for the whole file - all fields except number, title and voice
29
- class FileField
30
- include Yaparc::Parsable
31
-
32
- def initialize
33
- @parser = lambda do
34
- Yaparc::Alt.new(
35
- FieldArea.new,
36
- FieldBook.new,
37
- FieldComposer.new,
38
- FieldDiscography.new,
39
- FieldFile.new,
40
- FieldGroup.new,
41
- FieldHistory.new,
42
- FieldLength.new,
43
- FieldMeter.new,
44
- FieldNotes.new,
45
- FieldOrigin.new,
46
- FieldParts.new,
47
- FieldTempo.new,
48
- FieldRhythm.new,
49
- FieldSource.new,
50
- FieldUserdefPrint.new,
51
- FieldUserdefPlay.new,
52
- FieldWords.new,
53
- FieldTranscription.new,
54
- FieldKey.new,
55
- UnusedField.new)
56
- end
57
- end
58
- end
59
-
60
- # abc-tune ::= abc-header abc-music eol
61
- class AbcTune
62
- include Yaparc::Parsable
63
-
64
- def initialize
65
- @parser = lambda do
66
- Yaparc::Seq.new(AbcHeader.new,
67
- AbcMusic.new,
68
- Eol.new)
69
- end
70
- end
71
- end
72
-
73
- # abc-header ::= [field-number] title-fields *other-field field-key ; note that field-number is optional.
74
- class AbcTune
75
- include Yaparc::Parsable
76
-
77
- def initialize
78
- @parser = lambda do
79
- Yaparc::Seq.new(
80
- ZeroOne.new(FieldNumber.new)
81
- TitleFields.new,
82
- Many.new(OtherField.new),
83
- FieldKey.new)
84
- end
85
- end
86
- end
87
-
88
- # field-number ::= %x58.3A *WSP 1*DIGIT header-eol ; X:
89
- class FieldNumber
90
- include Yaparc::Parsable
91
-
92
- def initialize
93
- @parser = lambda do
94
- Yaparc::Seq.new(
95
-
96
- %x58.3A *WSP 1*DIGIT header-eol ; X:
97
- end
98
- end
99
- end
100
-
101
- ### eol ::= CRLF / LF / CR ; only one version should occur in the whole file - win / *nix / mac line breaks
102
- class Eol
103
- include Yaparc::Parsable
104
-
105
- def initialize
106
- @parser = lambda do
107
- Yaparc::Alt.new(Regex.new(/\n/))
108
- end
109
- end
110
- end
111
-
112
- end