Class: OrgParse::StructParser
- Inherits:
-
Racc::Parser
- Object
- Racc::Parser
- OrgParse::StructParser
- Includes:
- InlineUtils, Utils
- Defined in:
- lib/org-parse/struct-parser.rb,
lib/org-parse/struct-parser.tab.rb
Overview
パーサー
構造レベルの構文解析を行う。 各行の中身については、InlineParserを、内部的に呼び出して解析している。
ROOT–+– ブロック要素
| +--- ブロック要素
+-- ブロック要素
の様な形式の構文木を作成する。
Node クラスを参照
Constant Summary collapse
- Racc_arg =
[ racc_action_table, racc_action_check, racc_action_default, racc_action_pointer, racc_goto_table, racc_goto_check, racc_goto_default, racc_goto_pointer, racc_nt_base, racc_reduce_table, racc_token_table, racc_shift_n, racc_reduce_n, racc_use_result_var ]
- Racc_token_to_s_table =
[ '$end', 'error', 'PLOW', 'TEXTLINE', 'WHITELINE', 'TABLE_ROW', 'TABLE_SEP', 'QUOTE', 'BLOCK_END', 'EXAMPLE', 'DOCUMENT_START', 'HEADLINE', 'VARIABLELINE', 'SEC_END', 'BLOCK_START', 'UL_START', 'UL_END', 'OL_START', 'OL_END', 'DL_START', 'DL_END', 'LI_START', 'LI_END', 'P_END', 'FOOTNOTE', '$start', 'document', 'dummy_section', 'sections', 'doc_start', 'items', 'section', 'section_body', 'headline', 'sitems', 'sitem', 'textlines', 'block', 'table', 'lists', 'whitelines', 'variable', 'footnote', 'item', 'textline', 'html_quote', 'unordered_list', 'ordered_list', 'description_list', 'examples', 'example', 'list_items', 'list_item', 'table_rows', 'table_sep', 'table_row']
- Racc_debug_parser =
false
Instance Method Summary collapse
- #_reduce_none(val, _values, result) ⇒ Object
-
#initialize(src, opts) ⇒ StructParser
constructor
コンストラクタ.
- #next_token ⇒ Object
-
#parse ⇒ Object
構文解析を実行し、構文木を返す.
- #update_nodes(node, opt = {}) ⇒ Object
- #variables ⇒ Object
Methods included from InlineUtils
#line_parse, #set_struct_parser
Methods included from Utils
Constructor Details
#initialize(src, opts) ⇒ StructParser
コンストラクタ
25 26 27 28 29 30 |
# File 'lib/org-parse/struct-parser.rb', line 25 def initialize(src, opts) @scanner = StructScanner.new(src, opts) @variables = [] @yydebug = true set_struct_parser self end |
Instance Method Details
#_reduce_none(val, _values, result) ⇒ Object
602 603 604 |
# File 'lib/org-parse/struct-parser.tab.rb', line 602 def _reduce_none( val, _values, result ) result end |
#next_token ⇒ Object
65 66 67 68 69 |
# File 'lib/org-parse/struct-parser.rb', line 65 def next_token (token, variables) = @scanner.next_token @variables = variables unless variables.empty? token end |
#parse ⇒ Object
構文解析を実行し、構文木を返す
33 34 35 36 37 38 |
# File 'lib/org-parse/struct-parser.rb', line 33 def parse @scanner.scan root = do_parse update_nodes root root end |
#update_nodes(node, opt = {}) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/org-parse/struct-parser.rb', line 40 def update_nodes(node, opt = {}) cnt = 1; section_no = node.section_no if node.kind == :SECTION node.children.each do |n| if n.is_a? Array n.each {|a| a.parent = node update_nodes a, opt } next end n.parent = node if n.kind == :SECTION if node.kind == :ROOT n.section_no = cnt.to_s else n.section_no = section_no + "." + cnt.to_s end cnt += 1 end update_nodes n, opt end end |
#variables ⇒ Object
71 72 73 74 75 |
# File 'lib/org-parse/struct-parser.rb', line 71 def variables ret = @variables.dup @variables.clear ret end |