CINXE.COM

再帰下降構文解析 - Wikipedia

<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-sticky-header-enabled vector-toc-available" lang="ja" dir="ltr"> <head> <meta charset="UTF-8"> <title>再帰下降構文解析 - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-sticky-header-enabled vector-toc-available";var cookie=document.cookie.match(/(?:^|; )jawikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"ja", "wgMonthNames":["","1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"wgRequestId":"b116318c-98c2-4168-966b-decb6af561c7","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"再帰下降構文解析","wgTitle":"再帰下降構文解析","wgCurRevisionId":103728453,"wgRevisionId":103728453,"wgArticleId":857904,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["FOLDOCを情報源とする記事","ISBNマジックリンクを使用しているページ","構文解析アルゴリズム"],"wgPageViewLanguage":"ja","wgPageContentLanguage":"ja","wgPageContentModel":"wikitext","wgRelevantPageName":"再帰下降構文解析","wgRelevantArticleId":857904,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":true, "wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"ja","pageLanguageDir":"ltr","pageVariantFallbacks":"ja"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":true,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":8000,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q1323264","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.gadget.PDFLinkIcon":"ready","ext.gadget.RedirectColor":"ready","ext.globalCssJs.user.styles":"ready","site.styles":"ready", "user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.pygments":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.pygments.view","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.NormalizeCharWidth","ext.gadget.suppressEnterAtSummaryBox","ext.gadget.checkSignature","ext.gadget.charinsert","ext.gadget.WikiMiniAtlas","ext.gadget.switcher","ext.gadget.protectionIndicator","ext.urlShortener.toolbar","ext.centralauth.centralautologin","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents", "ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.growthExperiments.SuggestedEditSession"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=ja&amp;modules=ext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&amp;only=styles&amp;skin=vector-2022"> <script async="" src="/w/load.php?lang=ja&amp;modules=startup&amp;only=scripts&amp;raw=1&amp;skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=ja&amp;modules=ext.gadget.PDFLinkIcon%2CRedirectColor&amp;only=styles&amp;skin=vector-2022"> <link rel="stylesheet" href="/w/load.php?lang=ja&amp;modules=site.styles&amp;only=styles&amp;skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.16"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="再帰下降構文解析 - Wikipedia"> <meta property="og:type" content="website"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//ja.m.wikipedia.org/wiki/%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90"> <link rel="alternate" type="application/x-wiki" title="編集" href="/w/index.php?title=%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90&amp;action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (ja)"> <link rel="EditURI" type="application/rsd+xml" href="//ja.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://ja.wikipedia.org/wiki/%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.ja"> <link rel="alternate" type="application/atom+xml" title="Wikipediaの Atom フィード" href="/w/index.php?title=%E7%89%B9%E5%88%A5:%E6%9C%80%E8%BF%91%E3%81%AE%E6%9B%B4%E6%96%B0&amp;feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-再帰下降構文解析 rootpage-再帰下降構文解析 skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">コンテンツにスキップ</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="サイト"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" title="メインメニュー" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="メインメニュー" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">メインメニュー</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">メインメニュー</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">サイドバーに移動</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">非表示</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> 案内 </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8" title="メインページに移動する [z]" accesskey="z"><span>メインページ</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%E3%83%BB%E3%83%9D%E3%83%BC%E3%82%BF%E3%83%AB" title="このプロジェクトについて、できること、情報を入手する場所"><span>コミュニティ・ポータル</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:%E6%9C%80%E8%BF%91%E3%81%AE%E5%87%BA%E6%9D%A5%E4%BA%8B" title="最近の出来事の背景を知る"><span>最近の出来事</span></a></li><li id="n-newpages" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E6%96%B0%E3%81%97%E3%81%84%E3%83%9A%E3%83%BC%E3%82%B8" title="最近新規に作成されたページの一覧"><span>新しいページ</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E6%9C%80%E8%BF%91%E3%81%AE%E6%9B%B4%E6%96%B0" title="このウィキにおける最近の更新の一覧 [r]" accesskey="r"><span>最近の更新</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E3%81%8A%E3%81%BE%E3%81%8B%E3%81%9B%E8%A1%A8%E7%A4%BA" title="無作為に選択されたページを読み込む [x]" accesskey="x"><span>おまかせ表示</span></a></li><li id="n-sandbox" class="mw-list-item"><a href="/wiki/Wikipedia:%E3%82%B5%E3%83%B3%E3%83%89%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9" title="練習用のページ"><span>練習用ページ</span></a></li><li id="n-commonsupload" class="mw-list-item"><a href="//commons.wikimedia.org/wiki/Special:UploadWizard?uselang=ja" title="画像やメディアファイルをウィキメディア・コモンズにアップロード"><span>アップロード (ウィキメディア・コモンズ)</span></a></li><li id="n-specialpages" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E7%89%B9%E5%88%A5%E3%83%9A%E3%83%BC%E3%82%B8%E4%B8%80%E8%A6%A7"><span>特別ページ</span></a></li> </ul> </div> </div> <div id="p-help" class="vector-menu mw-portlet mw-portlet-help" > <div class="vector-menu-heading"> ヘルプ </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:%E7%9B%AE%E6%AC%A1" title="情報を得る場所"><span>ヘルプ</span></a></li><li id="n-villagepump" class="mw-list-item"><a href="/wiki/Wikipedia:%E4%BA%95%E6%88%B8%E7%AB%AF" title="プロジェクトについての意見交換"><span>井戸端</span></a></li><li id="n-notice" class="mw-list-item"><a href="/wiki/Wikipedia:%E3%81%8A%E7%9F%A5%E3%82%89%E3%81%9B" title="プロジェクトについてのお知らせ"><span>お知らせ</span></a></li><li id="n-bugreportspage" class="mw-list-item"><a href="/wiki/Wikipedia:%E3%83%90%E3%82%B0%E3%81%AE%E5%A0%B1%E5%91%8A" title="ウィキペディア・ソフトウェアのバグ報告"><span>バグの報告</span></a></li><li id="n-contact" class="mw-list-item"><a href="/wiki/Wikipedia:%E9%80%A3%E7%B5%A1%E5%85%88" title="ウィキペディアやウィキメディア財団に関する連絡先"><span>ウィキペディアに関するお問い合わせ</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-ja.svg" style="width: 7.5em; height: 1.25em;"> <img class="mw-logo-tagline" alt="" src="/static/images/mobile/copyright/wikipedia-tagline-ja.svg" width="100" height="14" style="width: 6.25em; height: 0.875em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/%E7%89%B9%E5%88%A5:%E6%A4%9C%E7%B4%A2" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Wikipedia内を検索 [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>検索</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Wikipedia内を検索" aria-label="Wikipedia内を検索" autocapitalize="sentences" title="Wikipedia内を検索 [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="特別:検索"> </div> <button class="cdx-button cdx-search-input__end-button">検索</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="個人用ツール"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="表示"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="ページのフォントサイズ、幅、色の外観を変更する" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="表示" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">表示</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/?wmf_source=donate&amp;wmf_medium=sidebar&amp;wmf_campaign=ja.wikipedia.org&amp;uselang=ja" class=""><span>寄付</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=%E7%89%B9%E5%88%A5:%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E4%BD%9C%E6%88%90&amp;returnto=%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90" title="アカウントを作成してログインすることをお勧めしますが、必須ではありません" class=""><span>アカウント作成</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=%E7%89%B9%E5%88%A5:%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3&amp;returnto=%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90" title="ログインすることを推奨します。ただし、必須ではありません。 [o]" accesskey="o" class=""><span>ログイン</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="その他の操作" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="個人用ツール" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">個人用ツール</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="利用者メニュー" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/?wmf_source=donate&amp;wmf_medium=sidebar&amp;wmf_campaign=ja.wikipedia.org&amp;uselang=ja"><span>寄付</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=%E7%89%B9%E5%88%A5:%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E4%BD%9C%E6%88%90&amp;returnto=%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90" title="アカウントを作成してログインすることをお勧めしますが、必須ではありません"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>アカウント作成</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=%E7%89%B9%E5%88%A5:%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3&amp;returnto=%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90" title="ログインすることを推奨します。ただし、必須ではありません。 [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>ログイン</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> ログアウトした編集者のページ <a href="/wiki/Wikipedia:%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2%E3%81%B8%E3%82%88%E3%81%86%E3%81%93%E3%81%9D" aria-label="編集の詳細"><span>もっと詳しく</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E8%87%AA%E5%88%86%E3%81%AE%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2" title="このIPアドレスからなされた編集の一覧 [y]" accesskey="y"><span>投稿記録</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E3%83%88%E3%83%BC%E3%82%AF%E3%83%9A%E3%83%BC%E3%82%B8" title="このIPアドレスからなされた編集についての議論 [n]" accesskey="n"><span>トーク</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="サイト"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="目次" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">目次</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">サイドバーに移動</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">非表示</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">ページ先頭</div> </a> </li> <li id="toc-概要" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#概要"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>概要</span> </div> </a> <ul id="toc-概要-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-パーサの例" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#パーサの例"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>パーサの例</span> </div> </a> <ul id="toc-パーサの例-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-関数型言語での実装" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#関数型言語での実装"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>関数型言語での実装</span> </div> </a> <ul id="toc-関数型言語での実装-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-実例" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#実例"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>実例</span> </div> </a> <ul id="toc-実例-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-種類" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#種類"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>種類</span> </div> </a> <ul id="toc-種類-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-参考文献" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#参考文献"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>参考文献</span> </div> </a> <ul id="toc-参考文献-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="目次" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" title="目次" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="目次の表示・非表示を切り替え" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">目次の表示・非表示を切り替え</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">再帰下降構文解析</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="特定の記事の別の言語版に移動します。 利用可能な言語12件" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-12" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">12の言語版</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D8%A7%D9%84%D8%AA%D8%B1%D9%85%D9%8A%D8%B2_%D8%A7%D9%84%D8%AA%D9%83%D8%B1%D8%A7%D8%B1%D9%8A_%D8%A7%D9%84%D9%86%D9%85%D9%88%D8%B0%D8%AC%D9%8A" title="アラビア語: الترميز التكراري النموذجي" lang="ar" hreflang="ar" data-title="الترميز التكراري النموذجي" data-language-autonym="العربية" data-language-local-name="アラビア語" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/Anal%C3%BDza_rekurzivn%C3%ADm_sestupem" title="チェコ語: Analýza rekurzivním sestupem" lang="cs" hreflang="cs" data-title="Analýza rekurzivním sestupem" data-language-autonym="Čeština" data-language-local-name="チェコ語" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikipedia.org/wiki/Rekursiver_Abstieg" title="ドイツ語: Rekursiver Abstieg" lang="de" hreflang="de" data-title="Rekursiver Abstieg" data-language-autonym="Deutsch" data-language-local-name="ドイツ語" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-en mw-list-item"><a href="https://en.wikipedia.org/wiki/Recursive_descent_parser" title="英語: Recursive descent parser" lang="en" hreflang="en" data-title="Recursive descent parser" data-language-autonym="English" data-language-local-name="英語" class="interlanguage-link-target"><span>English</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D8%AA%D8%AC%D8%B2%DB%8C%D9%87%E2%80%8C%DA%A9%D9%86%D9%86%D8%AF%D9%87_%DA%A9%D8%A7%D9%87%D8%B4%DB%8C_%D8%A8%D8%A7%D8%B2%DA%AF%D8%B4%D8%AA%DB%8C" title="ペルシア語: تجزیه‌کننده کاهشی بازگشتی" lang="fa" hreflang="fa" data-title="تجزیه‌کننده کاهشی بازگشتی" data-language-autonym="فارسی" data-language-local-name="ペルシア語" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%EC%9E%AC%EA%B7%80_%ED%95%98%ED%96%A5_%ED%8C%8C%EC%84%9C" title="韓国語: 재귀 하향 파서" lang="ko" hreflang="ko" data-title="재귀 하향 파서" data-language-autonym="한국어" data-language-local-name="韓国語" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-no mw-list-item"><a href="https://no.wikipedia.org/wiki/Rekursiv_descendant_parser" title="ノルウェー語(ブークモール): Rekursiv descendant parser" lang="nb" hreflang="nb" data-title="Rekursiv descendant parser" data-language-autonym="Norsk bokmål" data-language-local-name="ノルウェー語(ブークモール)" class="interlanguage-link-target"><span>Norsk bokmål</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/Analisador_sint%C3%A1tico_descendente_recursivo" title="ポルトガル語: Analisador sintático descendente recursivo" lang="pt" hreflang="pt" data-title="Analisador sintático descendente recursivo" data-language-autonym="Português" data-language-local-name="ポルトガル語" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B2%D0%BD%D0%BE%D0%B3%D0%BE_%D1%81%D0%BF%D1%83%D1%81%D0%BA%D0%B0" title="ロシア語: Метод рекурсивного спуска" lang="ru" hreflang="ru" data-title="Метод рекурсивного спуска" data-language-autonym="Русский" data-language-local-name="ロシア語" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-sr mw-list-item"><a href="https://sr.wikipedia.org/wiki/Analizator_rekurzivnim_spustom" title="セルビア語: Analizator rekurzivnim spustom" lang="sr" hreflang="sr" data-title="Analizator rekurzivnim spustom" data-language-autonym="Српски / srpski" data-language-local-name="セルビア語" class="interlanguage-link-target"><span>Српски / srpski</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B2%D0%BD%D0%B8%D0%B9_%D1%81%D0%BF%D1%83%D1%81%D0%BA" title="ウクライナ語: Рекурсивний спуск" lang="uk" hreflang="uk" data-title="Рекурсивний спуск" data-language-autonym="Українська" data-language-local-name="ウクライナ語" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/%E9%80%92%E5%BD%92%E4%B8%8B%E9%99%8D%E8%A7%A3%E6%9E%90%E5%99%A8" title="中国語: 递归下降解析器" lang="zh" hreflang="zh" data-title="递归下降解析器" data-language-autonym="中文" data-language-local-name="中国語" class="interlanguage-link-target"><span>中文</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q1323264#sitelinks-wikipedia" title="言語間リンクを編集" class="wbc-editpage">リンクを編集</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="名前空間"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90" title="本文を閲覧 [c]" accesskey="c"><span>ページ</span></a></li><li id="ca-talk" class="new vector-tab-noicon mw-list-item"><a href="/w/index.php?title=%E3%83%8E%E3%83%BC%E3%83%88:%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90&amp;action=edit&amp;redlink=1" rel="discussion" class="new" title="本文ページについての議論 (存在しないページ) [t]" accesskey="t"><span>ノート</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="別の言語に切り替える" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">日本語</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="表示"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90"><span>閲覧</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90&amp;action=edit" title="このページのソースコードを編集する [e]" accesskey="e"><span>編集</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90&amp;action=history" title="このページの過去の版 [h]" accesskey="h"><span>履歴を表示</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="ページツール"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="ツール" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">ツール</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">ツール</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">サイドバーに移動</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">非表示</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="その他の操作" > <div class="vector-menu-heading"> 操作 </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90"><span>閲覧</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90&amp;action=edit" title="このページのソースコードを編集する [e]" accesskey="e"><span>編集</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90&amp;action=history"><span>履歴を表示</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> 全般 </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E3%83%AA%E3%83%B3%E3%82%AF%E5%85%83/%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90" title="ここにリンクしている全ウィキページの一覧 [j]" accesskey="j"><span>リンク元</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/%E7%89%B9%E5%88%A5:%E9%96%A2%E9%80%A3%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E6%9B%B4%E6%96%B0%E7%8A%B6%E6%B3%81/%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90" rel="nofollow" title="このページからリンクしているページの最近の更新 [k]" accesskey="k"><span>関連ページの更新状況</span></a></li><li id="t-upload" class="mw-list-item"><a href="//ja.wikipedia.org/wiki/Wikipedia:ファイルのアップロード" title="ファイルをアップロードする [u]" accesskey="u"><span>ファイルをアップロード</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90&amp;oldid=103728453" title="このページのこの版への固定リンク"><span>この版への固定リンク</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90&amp;action=info" title="このページについての詳細情報"><span>ページ情報</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=%E7%89%B9%E5%88%A5:%E3%81%93%E3%81%AE%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%92%E5%BC%95%E7%94%A8&amp;page=%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90&amp;id=103728453&amp;wpFormIdentifier=titleform" title="このページの引用方法"><span>このページを引用</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=%E7%89%B9%E5%88%A5:UrlShortener&amp;url=https%3A%2F%2Fja.wikipedia.org%2Fwiki%2F%25E5%2586%258D%25E5%25B8%25B0%25E4%25B8%258B%25E9%2599%258D%25E6%25A7%258B%25E6%2596%2587%25E8%25A7%25A3%25E6%259E%2590"><span>短縮URLを取得する</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=%E7%89%B9%E5%88%A5:QrCode&amp;url=https%3A%2F%2Fja.wikipedia.org%2Fwiki%2F%25E5%2586%258D%25E5%25B8%25B0%25E4%25B8%258B%25E9%2599%258D%25E6%25A7%258B%25E6%2596%2587%25E8%25A7%25A3%25E6%259E%2590"><span>QRコードをダウンロード</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> 印刷/書き出し </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-create_a_book" class="mw-list-item"><a href="/w/index.php?title=%E7%89%B9%E5%88%A5:%E3%83%96%E3%83%83%E3%82%AF&amp;bookcmd=book_creator&amp;referer=%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90"><span>ブックの新規作成</span></a></li><li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=%E7%89%B9%E5%88%A5:DownloadAsPdf&amp;page=%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90&amp;action=show-download-screen"><span>PDF 形式でダウンロード</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90&amp;printable=yes" title="このページの印刷用ページ [p]" accesskey="p"><span>印刷用バージョン</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> 他のプロジェクト </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q1323264" title="関連付けられたデータリポジトリ項目へのリンク [g]" accesskey="g"><span>ウィキデータ項目</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="ページツール"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="表示"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">表示</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">サイドバーに移動</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">非表示</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">出典: フリー百科事典『ウィキペディア(Wikipedia)』</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="ja" dir="ltr"><p><b>再帰下降構文解析</b>(さいきかこうこうぶんかいせき、<a href="/wiki/%E8%8B%B1%E8%AA%9E" title="英語">英語</a>&#58; <span lang="en">Recursive Descent Parsing</span>)は、<a href="/wiki/%E7%9B%B8%E4%BA%92%E5%86%8D%E5%B8%B0" title="相互再帰">相互再帰</a>型の手続き(あるいは再帰的でない同等の手続き)で構成される<a href="/wiki/LL%E6%B3%95" title="LL法">LL法</a>の<a href="/wiki/%E3%83%88%E3%83%83%E3%83%97%E3%83%80%E3%82%A6%E3%83%B3%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90" title="トップダウン構文解析">トップダウン</a><a href="/wiki/%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90" title="構文解析">構文解析</a>であり、各<a href="/wiki/%E3%83%97%E3%83%AD%E3%82%B7%E3%83%BC%E3%82%B8%E3%83%A3" title="プロシージャ">プロシージャ</a>が<a href="/wiki/%E5%BD%A2%E5%BC%8F%E6%96%87%E6%B3%95" title="形式文法">文法</a>の各生成規則を実装することが多い。従って、生成されるプログラムの構造はほぼ正確にその文法を反映したものとなる。そのような実装の<a href="/wiki/%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90%E5%99%A8" title="構文解析器">構文解析器</a>を<b>再帰下降パーサ</b>(Recursive Descent Parser)と呼ぶ。 </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="概要"><span id=".E6.A6.82.E8.A6.81"></span>概要</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90&amp;action=edit&amp;section=1" title="節を編集: 概要"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><a href="/wiki/%E3%83%90%E3%83%83%E3%82%AF%E3%83%88%E3%83%A9%E3%83%83%E3%82%AF" class="mw-disambig" title="バックトラック">バックトラック</a>のない再帰下降パーサを <b>予言的パーサ</b>(predictive parser)と呼ぶ。予言的構文解析は<a href="/wiki/%E6%96%87%E8%84%88%E8%87%AA%E7%94%B1%E6%96%87%E6%B3%95" title="文脈自由文法">文脈自由文法</a>の一種である<a href="/wiki/LL%E6%B3%95" title="LL法">LL(k)</a>文法クラスでのみ可能であり、ある正の整数 k が存在し、再帰下降構文解析で次に使用すべき生成規則を選択するのに k 個のトークンを調べることで決定可能である。LL(k)文法には曖昧さがなく、<a href="/wiki/%E5%B7%A6%E5%86%8D%E5%B8%B0" title="左再帰">左再帰</a>も含まれない。文脈自由文法は左再帰のない形式に変換可能だが、左再帰を排除しただけでLL(k)文法となるわけではない。予言的パーサは<a href="/wiki/%E7%B7%9A%E5%BD%A2%E6%99%82%E9%96%93" title="線形時間">線形時間</a>で動作する。 </p><p>バックトラックのある再帰下降構文解析では、各生成規則を毎回試すことで適用すべき生成規則を決定する。バックトラックのある再帰下降構文解析はLL(k)文法以外にも適用できるが、LL(k)以外の文法で有限時間以内に構文解析が完了するかどうかは保証されない。また完了したとしても、バックトラックのある再帰下降構文解析は<a href="/wiki/%E6%8C%87%E6%95%B0%E9%96%A2%E6%95%B0%E6%99%82%E9%96%93" title="指数関数時間">指数関数時間</a>を要する。 </p><p>予言的パーサはよく使われているものの、文法をLL(k)形式に変換するよりも、<a href="/wiki/LR%E6%B3%95" title="LR法">LR法</a>や<a href="/wiki/LALR%E6%B3%95" title="LALR法">LALR法</a>のパーサを作成することも多い。 </p> <div class="mw-heading mw-heading2"><h2 id="パーサの例"><span id=".E3.83.91.E3.83.BC.E3.82.B5.E3.81.AE.E4.BE.8B"></span>パーサの例</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90&amp;action=edit&amp;section=2" title="節を編集: パーサの例"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>以下の文法はLL(1)形式の<a href="/wiki/EBNF" title="EBNF">EBNF</a>の例である(<a href="/wiki/%E3%83%8B%E3%82%AF%E3%83%A9%E3%82%A6%E3%82%B9%E3%83%BB%E3%83%B4%E3%82%A3%E3%83%AB%E3%83%88" title="ニクラウス・ヴィルト">ニクラウス・ヴィルト</a>の<a href="/wiki/PL/0" title="PL/0">PL/0</a>言語)。単純化のため、<i>ident</i> と <i>number</i> は終端記号とされている: </p> <div class="mw-highlight mw-highlight-lang-ebnf mw-content-ltr" dir="ltr"><pre><span></span> <span class="k">program </span><span class="o">=</span> <span class="k">block </span><span class="s2">&quot;.&quot;</span> <span class="p">.</span> <span class="k">block </span><span class="o">=</span> <span class="p">[</span><span class="s2">&quot;const&quot;</span> <span class="k">ident </span><span class="s2">&quot;=&quot;</span> <span class="k">number </span><span class="p">{</span><span class="s2">&quot;,&quot;</span> <span class="k">ident </span><span class="s2">&quot;=&quot;</span> <span class="k">number</span><span class="p">}</span> <span class="s2">&quot;;&quot;</span><span class="p">]</span> <span class="p">[</span><span class="s2">&quot;var&quot;</span> <span class="k">ident </span><span class="p">{</span><span class="s2">&quot;,&quot;</span> <span class="k">ident</span><span class="p">}</span> <span class="s2">&quot;;&quot;</span><span class="p">]</span> <span class="p">{</span><span class="s2">&quot;procedure&quot;</span> <span class="k">ident </span><span class="s2">&quot;;&quot;</span> <span class="k">block </span><span class="s2">&quot;;&quot;</span><span class="p">}</span> <span class="k">statement </span><span class="p">.</span> <span class="k">statement </span><span class="o">=</span> <span class="p">[</span><span class="k">ident </span><span class="s2">&quot;:=&quot;</span> <span class="k">expression</span> <span class="p">|</span> <span class="s2">&quot;call&quot;</span> <span class="k">ident</span> <span class="p">|</span> <span class="s2">&quot;begin&quot;</span> <span class="k">statement </span><span class="p">{</span><span class="s2">&quot;;&quot;</span> <span class="k">statement</span><span class="p">}</span> <span class="s2">&quot;end&quot;</span> <span class="p">|</span> <span class="s2">&quot;if&quot;</span> <span class="k">condition </span><span class="s2">&quot;then&quot;</span> <span class="k">statement</span> <span class="p">|</span> <span class="s2">&quot;while&quot;</span> <span class="k">condition </span><span class="s2">&quot;do&quot;</span> <span class="k">statement</span> <span class="p">]</span> <span class="p">.</span> <span class="k">condition </span><span class="o">=</span> <span class="s2">&quot;odd&quot;</span> <span class="k">expression</span> <span class="p">|</span> <span class="k">expression </span><span class="p">(</span><span class="s2">&quot;=&quot;</span><span class="p">|</span><span class="s2">&quot;#&quot;</span><span class="p">|</span><span class="s2">&quot;&lt;&quot;</span><span class="p">|</span><span class="s2">&quot;&lt;=&quot;</span><span class="p">|</span><span class="s2">&quot;&gt;&quot;</span><span class="p">|</span><span class="s2">&quot;&gt;=&quot;</span><span class="p">)</span> <span class="k">expression</span> <span class="p">.</span> <span class="k">expression </span><span class="o">=</span> <span class="p">[</span><span class="s2">&quot;+&quot;</span><span class="p">|</span><span class="s2">&quot;-&quot;</span><span class="p">]</span> <span class="k">term </span><span class="p">{(</span><span class="s2">&quot;+&quot;</span><span class="p">|</span><span class="s2">&quot;-&quot;</span><span class="p">)</span> <span class="k">term</span><span class="p">}</span> <span class="p">.</span> <span class="k">term </span><span class="o">=</span> <span class="k">factor </span><span class="p">{(</span><span class="s2">&quot;*&quot;</span><span class="p">|</span><span class="s2">&quot;/&quot;</span><span class="p">)</span> <span class="k">factor</span><span class="p">}</span> <span class="p">.</span> <span class="k">factor </span><span class="o">=</span> <span class="k">ident </span><span class="p">|</span> <span class="k">number </span><span class="p">|</span> <span class="s2">&quot;(&quot;</span> <span class="k">expression </span><span class="s2">&quot;)&quot;</span> <span class="p">.</span> </pre></div> <p><a href="/wiki/%E7%B5%82%E7%AB%AF%E8%A8%98%E5%8F%B7" class="mw-redirect" title="終端記号">終端記号</a>は引用符で囲まれている(<i>ident</i>と<i>number</i>以外)。各<a href="/wiki/%E9%9D%9E%E7%B5%82%E7%AB%AF%E8%A8%98%E5%8F%B7" class="mw-redirect" title="非終端記号">非終端記号</a>は文法規則で定義されている。 </p><p>以下に示す予言的パーサが上記文法を正確に反映している点に注意されたい。各非終端記号に対応したプロシージャが存在している。構文解析はトップダウン的に行われ、全非終端記号が処理されるまで行われる。入力コード(プログラムの部分)の先頭の単語は大域変数 <i>sym</i> に格納されている。そして大域関数 <i>getsym</i> を使うことで <i>sym</i> を更新する。 </p> <div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span></span><span class="k">typedef</span><span class="w"> </span><span class="k">enum</span><span class="w"> </span><span class="p">{</span><span class="n">ident</span><span class="p">,</span><span class="w"> </span><span class="n">number</span><span class="p">,</span><span class="w"> </span><span class="n">lparen</span><span class="p">,</span><span class="w"> </span><span class="n">rparen</span><span class="p">,</span><span class="w"> </span><span class="n">times</span><span class="p">,</span><span class="w"> </span><span class="n">slash</span><span class="p">,</span><span class="w"> </span><span class="n">plus</span><span class="p">,</span> <span class="w"> </span><span class="n">minus</span><span class="p">,</span><span class="w"> </span><span class="n">eql</span><span class="p">,</span><span class="w"> </span><span class="n">neq</span><span class="p">,</span><span class="w"> </span><span class="n">lss</span><span class="p">,</span><span class="w"> </span><span class="n">leq</span><span class="p">,</span><span class="w"> </span><span class="n">gtr</span><span class="p">,</span><span class="w"> </span><span class="n">geq</span><span class="p">,</span><span class="w"> </span><span class="n">callsym</span><span class="p">,</span><span class="w"> </span><span class="n">beginsym</span><span class="p">,</span><span class="w"> </span><span class="n">semicolon</span><span class="p">,</span> <span class="w"> </span><span class="n">endsym</span><span class="p">,</span><span class="w"> </span><span class="n">ifsym</span><span class="p">,</span><span class="w"> </span><span class="n">whilesym</span><span class="p">,</span><span class="w"> </span><span class="n">becomes</span><span class="p">,</span><span class="w"> </span><span class="n">thensym</span><span class="p">,</span><span class="w"> </span><span class="n">dosym</span><span class="p">,</span><span class="w"> </span><span class="n">constsym</span><span class="p">,</span><span class="w"> </span><span class="n">comma</span><span class="p">,</span> <span class="w"> </span><span class="n">varsym</span><span class="p">,</span><span class="w"> </span><span class="n">procsym</span><span class="p">,</span><span class="w"> </span><span class="n">period</span><span class="p">,</span><span class="w"> </span><span class="n">oddsym</span><span class="p">}</span><span class="w"> </span><span class="n">Symbol</span><span class="p">;</span> <span class="n">Symbol</span><span class="w"> </span><span class="n">sym</span><span class="p">;</span> <span class="kt">void</span><span class="w"> </span><span class="nf">getsym</span><span class="p">(</span><span class="kt">void</span><span class="p">);</span> <span class="kt">void</span><span class="w"> </span><span class="nf">error</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="n">msg</span><span class="p">[]);</span> <span class="kt">void</span><span class="w"> </span><span class="nf">expression</span><span class="p">(</span><span class="kt">void</span><span class="p">);</span> <span class="kt">int</span><span class="w"> </span><span class="nf">accept</span><span class="p">(</span><span class="n">Symbol</span><span class="w"> </span><span class="n">s</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">sym</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">s</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">getsym</span><span class="p">();</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="p">}</span> <span class="kt">int</span><span class="w"> </span><span class="nf">expect</span><span class="p">(</span><span class="n">Symbol</span><span class="w"> </span><span class="n">s</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">accept</span><span class="p">(</span><span class="n">s</span><span class="p">))</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span> <span class="w"> </span><span class="n">error</span><span class="p">(</span><span class="s">&quot;expect: unexpected symbol&quot;</span><span class="p">);</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="p">}</span> <span class="kt">void</span><span class="w"> </span><span class="nf">factor</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">accept</span><span class="p">(</span><span class="n">ident</span><span class="p">))</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="p">;</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">accept</span><span class="p">(</span><span class="n">number</span><span class="p">))</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="p">;</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">accept</span><span class="p">(</span><span class="n">lparen</span><span class="p">))</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">expression</span><span class="p">();</span> <span class="w"> </span><span class="n">expect</span><span class="p">(</span><span class="n">rparen</span><span class="p">);</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">error</span><span class="p">(</span><span class="s">&quot;factor: syntax error&quot;</span><span class="p">);</span> <span class="w"> </span><span class="n">getsym</span><span class="p">();</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> <span class="kt">void</span><span class="w"> </span><span class="nf">term</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">factor</span><span class="p">();</span> <span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">sym</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">times</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">sym</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">slash</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">getsym</span><span class="p">();</span> <span class="w"> </span><span class="n">factor</span><span class="p">();</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> <span class="kt">void</span><span class="w"> </span><span class="nf">expression</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">sym</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">plus</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">sym</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">minus</span><span class="p">)</span> <span class="w"> </span><span class="n">getsym</span><span class="p">();</span> <span class="w"> </span><span class="n">term</span><span class="p">();</span> <span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">sym</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">plus</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">sym</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">minus</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">getsym</span><span class="p">();</span> <span class="w"> </span><span class="n">term</span><span class="p">();</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> <span class="kt">void</span><span class="w"> </span><span class="nf">condition</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">accept</span><span class="p">(</span><span class="n">oddsym</span><span class="p">))</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">expression</span><span class="p">();</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">expression</span><span class="p">();</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">sym</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">eql</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">sym</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">neq</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">sym</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">lss</span><span class="w"> </span><span class="o">||</span> <span class="w"> </span><span class="n">sym</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">leq</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">sym</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">gtr</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">sym</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">geq</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">getsym</span><span class="p">();</span> <span class="w"> </span><span class="n">expression</span><span class="p">();</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">error</span><span class="p">(</span><span class="s">&quot;condition: invalid operator&quot;</span><span class="p">);</span> <span class="w"> </span><span class="n">getsym</span><span class="p">();</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> <span class="kt">void</span><span class="w"> </span><span class="nf">statement</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">accept</span><span class="p">(</span><span class="n">ident</span><span class="p">))</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">expect</span><span class="p">(</span><span class="n">becomes</span><span class="p">);</span> <span class="w"> </span><span class="n">expression</span><span class="p">();</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">accept</span><span class="p">(</span><span class="n">callsym</span><span class="p">))</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">expect</span><span class="p">(</span><span class="n">ident</span><span class="p">);</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">accept</span><span class="p">(</span><span class="n">beginsym</span><span class="p">))</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">statement</span><span class="p">();</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">accept</span><span class="p">(</span><span class="n">semicolon</span><span class="p">));</span> <span class="w"> </span><span class="n">expect</span><span class="p">(</span><span class="n">endsym</span><span class="p">);</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">accept</span><span class="p">(</span><span class="n">ifsym</span><span class="p">))</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">condition</span><span class="p">();</span> <span class="w"> </span><span class="n">expect</span><span class="p">(</span><span class="n">thensym</span><span class="p">);</span> <span class="w"> </span><span class="n">statement</span><span class="p">();</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">accept</span><span class="p">(</span><span class="n">whilesym</span><span class="p">))</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">condition</span><span class="p">();</span> <span class="w"> </span><span class="n">expect</span><span class="p">(</span><span class="n">dosym</span><span class="p">);</span> <span class="w"> </span><span class="n">statement</span><span class="p">();</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> <span class="kt">void</span><span class="w"> </span><span class="nf">block</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">accept</span><span class="p">(</span><span class="n">constsym</span><span class="p">))</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">expect</span><span class="p">(</span><span class="n">ident</span><span class="p">);</span> <span class="w"> </span><span class="n">expect</span><span class="p">(</span><span class="n">eql</span><span class="p">);</span> <span class="w"> </span><span class="n">expect</span><span class="p">(</span><span class="n">number</span><span class="p">);</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">accept</span><span class="p">(</span><span class="n">comma</span><span class="p">));</span> <span class="w"> </span><span class="n">expect</span><span class="p">(</span><span class="n">semicolon</span><span class="p">);</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">accept</span><span class="p">(</span><span class="n">varsym</span><span class="p">))</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">expect</span><span class="p">(</span><span class="n">ident</span><span class="p">);</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">accept</span><span class="p">(</span><span class="n">comma</span><span class="p">));</span> <span class="w"> </span><span class="n">expect</span><span class="p">(</span><span class="n">semicolon</span><span class="p">);</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">accept</span><span class="p">(</span><span class="n">procsym</span><span class="p">))</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">expect</span><span class="p">(</span><span class="n">ident</span><span class="p">);</span> <span class="w"> </span><span class="n">expect</span><span class="p">(</span><span class="n">semicolon</span><span class="p">);</span> <span class="w"> </span><span class="n">block</span><span class="p">();</span> <span class="w"> </span><span class="n">expect</span><span class="p">(</span><span class="n">semicolon</span><span class="p">);</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="n">statement</span><span class="p">();</span> <span class="p">}</span> <span class="kt">void</span><span class="w"> </span><span class="nf">program</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">getsym</span><span class="p">();</span> <span class="w"> </span><span class="n">block</span><span class="p">();</span> <span class="w"> </span><span class="n">expect</span><span class="p">(</span><span class="n">period</span><span class="p">);</span> <span class="p">}</span> </pre></div> <div class="mw-heading mw-heading2"><h2 id="関数型言語での実装"><span id=".E9.96.A2.E6.95.B0.E5.9E.8B.E8.A8.80.E8.AA.9E.E3.81.A7.E3.81.AE.E5.AE.9F.E8.A3.85"></span>関数型言語での実装</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90&amp;action=edit&amp;section=3" title="節を編集: 関数型言語での実装"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><a href="/wiki/Haskell" title="Haskell">Haskell</a>や<a href="/wiki/ML_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E)" title="ML (プログラミング言語)">ML</a>などの関数型言語での再帰下降構文解析の実装は特に簡単である。例えば、<a rel="nofollow" class="external text" href="http://www.cs.nott.ac.uk/~gmh/pearl.pdf">Functional Pearls: Monadic Parsing in Haskell</a> を参照されたい。 </p> <div class="mw-heading mw-heading2"><h2 id="実例"><span id=".E5.AE.9F.E4.BE.8B"></span>実例</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90&amp;action=edit&amp;section=4" title="節を編集: 実例"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/JavaCC" title="JavaCC">JavaCC</a> - 再帰下降パーサ生成器(コンパイラコンパイラ)</li> <li><a href="/wiki/Coco/R" title="Coco/R">Coco/R</a> - 再帰下降パーサ生成器</li> <li><a href="/wiki/ANTLR" title="ANTLR">ANTLR</a> - 再帰下降パーサ生成器</li> <li><a rel="nofollow" class="external text" href="http://spirit.sourceforge.net/">Spirit Parser Framework</a> - C++言語による再帰下降パーサ生成フレームワーク。プリコンパイル段階が不要。</li> <li><a rel="nofollow" class="external text" href="http://www.codecodex.com/wiki/index.php?title=Recursive_descent_parsing">CodeCodex: Recursive descent parsing</a> - C言語、Java言語、OCaml での再帰下降パーサの例</li> <li><a rel="nofollow" class="external text" href="https://search.cpan.org/~dconway/Parse-RecDescent-1.94/lib/Parse/RecDescent.pod">Parse::RecDescent</a>: <a href="/wiki/Perl" title="Perl">Perl</a> による各種再帰下降パーサ</li> <li><a rel="nofollow" class="external text" href="http://pyparsing.sourceforge.net/">pyparsing</a>: <a href="/wiki/Python" title="Python">Python</a> による各種再帰下降パーサ</li></ul> <div class="mw-heading mw-heading2"><h2 id="種類"><span id=".E7.A8.AE.E9.A1.9E"></span>種類</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90&amp;action=edit&amp;section=5" title="節を編集: 種類"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/Pratt%E3%83%91%E3%83%BC%E3%82%B5" title="Prattパーサ">Prattパーサ</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="参考文献"><span id=".E5.8F.82.E8.80.83.E6.96.87.E7.8C.AE"></span>参考文献</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90&amp;action=edit&amp;section=6" title="節を編集: 参考文献"><span>編集</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>The Dragon book, <a href="/wiki/%E3%82%A2%E3%83%AB%E3%83%95%E3%83%AC%E3%83%83%E3%83%89%E3%83%BB%E3%82%A8%E3%82%A4%E3%83%9B" title="アルフレッド・エイホ">Alfred V. Aho</a>, Ravi Sethi, and Jeffrey D Ullman, 特に Section 4.4.</li> <li><i>Modern Compiler Implementation in Java, Second Edition</i>, Andrew Appel, 2002, <a href="/wiki/%E7%89%B9%E5%88%A5:%E6%96%87%E7%8C%AE%E8%B3%87%E6%96%99/052182060X" class="internal mw-magiclink-isbn">ISBN 0-521-82060-X</a>.</li> <li><i>Recursive Programming Techniques</i>, W.H. Burge, 1975, <a href="/wiki/%E7%89%B9%E5%88%A5:%E6%96%87%E7%8C%AE%E8%B3%87%E6%96%99/0201144506" class="internal mw-magiclink-isbn">ISBN 0-201-14450-6</a></li> <li><i>Crafting a Compiler with C</i>, Charles N Fischer and Richard J LeBlanc, Jr, 1991, <a href="/wiki/%E7%89%B9%E5%88%A5:%E6%96%87%E7%8C%AE%E8%B3%87%E6%96%99/0805321667" class="internal mw-magiclink-isbn">ISBN 0-8053-2166-7</a>.</li> <li><i>Compiling with C# and Java</i>, Pat Terry, 2005, <a href="/wiki/%E7%89%B9%E5%88%A5:%E6%96%87%E7%8C%AE%E8%B3%87%E6%96%99/032126360X" class="internal mw-magiclink-isbn">ISBN 0-321-26360-X</a>, 624</li> <li><i>Algorithms + Data Structures = Programs</i>, <a href="/wiki/%E3%83%8B%E3%82%AF%E3%83%A9%E3%82%A6%E3%82%B9%E3%83%BB%E3%83%B4%E3%82%A3%E3%83%AB%E3%83%88" title="ニクラウス・ヴィルト">Niklaus Wirth</a>, 1975, <a href="/wiki/%E7%89%B9%E5%88%A5:%E6%96%87%E7%8C%AE%E8%B3%87%E6%96%99/0130224189" class="internal mw-magiclink-isbn">ISBN 0-13-022418-9</a></li> <li><i>Compiler Construction</i>, Niklaus Wirth, 1996, <a href="/wiki/%E7%89%B9%E5%88%A5:%E6%96%87%E7%8C%AE%E8%B3%87%E6%96%99/0201403536" class="internal mw-magiclink-isbn">ISBN 0-201-40353-6</a></li></ul> <p><style data-mw-deduplicate="TemplateStyles:r101550682">.mw-parser-output .citation{word-wrap:break-word}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}</style><span class="citation foldoc">この記事は2008年11月1日以前に<a href="/wiki/FOLDOC" title="FOLDOC">Free On-line Dictionary of Computing</a>から取得した項目の資料を元に、<a href="/wiki/GNU_Free_Documentation_License" title="GNU Free Documentation License">GFDL</a> バージョン1.3以降の「RELICENSING」(再ライセンス) 条件に基づいて組み込まれている。</span> </p> <!-- NewPP limit report Parsed by mw‐api‐ext.codfw.main‐7c4bdb7978‐458kw Cached time: 20250213060738 Cache expiry: 2592000 Reduced expiry: false Complications: [show‐toc] CPU time usage: 0.053 seconds Real time usage: 0.144 seconds Preprocessor visited node count: 115/1000000 Post‐expand include size: 846/2097152 bytes Template argument size: 90/2097152 bytes Highest expansion depth: 8/100 Expensive parser function count: 2/500 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 24346/5000000 bytes Lua time usage: 0.002/10.000 seconds Lua memory usage: 710241/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 111.780 1 -total 15.88% 17.751 1 Template:Lang-en 14.89% 16.644 1 Template:LangWithName 12.18% 13.610 1 Template:ISO639言語名 6.55% 7.318 1 Template:FOLDOC 1.38% 1.542 1 Template:Lang --> <!-- Saved in parser cache with key jawiki:pcache:857904:|#|:idhash:canonical and timestamp 20250213060746 and revision id 103728453. Rendering was triggered because: page-edit --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?useformat=desktop&amp;type=1x1&amp;usesul3=0" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">「<a dir="ltr" href="https://ja.wikipedia.org/w/index.php?title=再帰下降構文解析&amp;oldid=103728453">https://ja.wikipedia.org/w/index.php?title=再帰下降構文解析&amp;oldid=103728453</a>」から取得</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/%E7%89%B9%E5%88%A5:%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA" title="特別:カテゴリ">カテゴリ</a>: <ul><li><a href="/wiki/Category:%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0" title="Category:構文解析アルゴリズム">構文解析アルゴリズム</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">隠しカテゴリ: <ul><li><a href="/wiki/Category:FOLDOC%E3%82%92%E6%83%85%E5%A0%B1%E6%BA%90%E3%81%A8%E3%81%99%E3%82%8B%E8%A8%98%E4%BA%8B" title="Category:FOLDOCを情報源とする記事">FOLDOCを情報源とする記事</a></li><li><a href="/wiki/Category:ISBN%E3%83%9E%E3%82%B8%E3%83%83%E3%82%AF%E3%83%AA%E3%83%B3%E3%82%AF%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%83%9A%E3%83%BC%E3%82%B8" title="Category:ISBNマジックリンクを使用しているページ">ISBNマジックリンクを使用しているページ</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> 最終更新 2025年2月13日 (木) 06:07 (日時は<a href="/wiki/%E7%89%B9%E5%88%A5:%E5%80%8B%E4%BA%BA%E8%A8%AD%E5%AE%9A#mw-prefsection-rendering" title="特別:個人設定">個人設定</a>で未設定ならば<a href="/wiki/%E5%8D%94%E5%AE%9A%E4%B8%96%E7%95%8C%E6%99%82" title="協定世界時">UTC</a>)。</li> <li id="footer-info-copyright">テキストは<a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.ja">クリエイティブ・コモンズ 表示-継承ライセンス</a>のもとで利用できます。追加の条件が適用される場合があります。詳細については<a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">利用規約</a>を参照してください。</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy/ja">プライバシー・ポリシー</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6">ウィキペディアについて</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:%E5%85%8D%E8%B2%AC%E4%BA%8B%E9%A0%85">免責事項</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">行動規範</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">開発者</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/ja.wikipedia.org">統計</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookieに関する声明</a></li> <li id="footer-places-mobileview"><a href="//ja.m.wikipedia.org/w/index.php?title=%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90&amp;mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">モバイルビュー</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" lang="en" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><picture><source media="(min-width: 500px)" srcset="/w/resources/assets/poweredby_mediawiki.svg" width="88" height="31"><img src="/w/resources/assets/mediawiki_compact.svg" alt="Powered by MediaWiki" width="25" height="25" loading="lazy"></picture></a></li> </ul> </footer> </div> </div> </div> <div class="vector-header-container vector-sticky-header-container"> <div id="vector-sticky-header" class="vector-sticky-header"> <div class="vector-sticky-header-start"> <div class="vector-sticky-header-icon-start vector-button-flush-left vector-button-flush-right" aria-hidden="true"> <button class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-sticky-header-search-toggle" tabindex="-1" data-event-name="ui.vector-sticky-search-form.icon"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>検索</span> </button> </div> <div role="search" class="vector-search-box-vue vector-search-box-show-thumbnail vector-search-box"> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail"> <form action="/w/index.php" id="vector-sticky-search-form" class="cdx-search-input cdx-search-input--has-end-button"> <div class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Wikipedia内を検索"> <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="特別:検索"> </div> <button class="cdx-button cdx-search-input__end-button">検索</button> </form> </div> </div> </div> <div class="vector-sticky-header-context-bar"> <nav aria-label="目次" class="vector-toc-landmark"> <div id="vector-sticky-header-toc" class="vector-dropdown mw-portlet mw-portlet-sticky-header-toc vector-sticky-header-toc vector-button-flush-left" > <input type="checkbox" id="vector-sticky-header-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-sticky-header-toc" class="vector-dropdown-checkbox " aria-label="目次の表示・非表示を切り替え" > <label id="vector-sticky-header-toc-label" for="vector-sticky-header-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">目次の表示・非表示を切り替え</span> </label> <div class="vector-dropdown-content"> <div id="vector-sticky-header-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div class="vector-sticky-header-context-bar-primary" aria-hidden="true" ><span class="mw-page-title-main">再帰下降構文解析</span></div> </div> </div> <div class="vector-sticky-header-end" aria-hidden="true"> <div class="vector-sticky-header-icons"> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-talk-sticky-header" tabindex="-1" data-event-name="talk-sticky-header"><span class="vector-icon mw-ui-icon-speechBubbles mw-ui-icon-wikimedia-speechBubbles"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-subject-sticky-header" tabindex="-1" data-event-name="subject-sticky-header"><span class="vector-icon mw-ui-icon-article mw-ui-icon-wikimedia-article"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-history-sticky-header" tabindex="-1" data-event-name="history-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-history mw-ui-icon-wikimedia-wikimedia-history"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only mw-watchlink" id="ca-watchstar-sticky-header" tabindex="-1" data-event-name="watch-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-star mw-ui-icon-wikimedia-wikimedia-star"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-edit-sticky-header" tabindex="-1" data-event-name="wikitext-edit-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-wikiText mw-ui-icon-wikimedia-wikimedia-wikiText"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-ve-edit-sticky-header" tabindex="-1" data-event-name="ve-edit-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-edit mw-ui-icon-wikimedia-wikimedia-edit"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-viewsource-sticky-header" tabindex="-1" data-event-name="ve-edit-protected-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-editLock mw-ui-icon-wikimedia-wikimedia-editLock"></span> <span></span> </a> </div> <div class="vector-sticky-header-buttons"> <button class="cdx-button cdx-button--weight-quiet mw-interlanguage-selector" id="p-lang-btn-sticky-header" tabindex="-1" data-event-name="ui.dropdown-p-lang-btn-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-language mw-ui-icon-wikimedia-wikimedia-language"></span> <span>12の言語版</span> </button> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive" id="ca-addsection-sticky-header" tabindex="-1" data-event-name="addsection-sticky-header"><span class="vector-icon mw-ui-icon-speechBubbleAdd-progressive mw-ui-icon-wikimedia-speechBubbleAdd-progressive"></span> <span>話題追加</span> </a> </div> <div class="vector-sticky-header-icon-end"> <div class="vector-user-links"> </div> </div> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-b766959bd-htvg6","wgBackendResponseTime":123,"wgPageParseReport":{"limitreport":{"cputime":"0.053","walltime":"0.144","ppvisitednodes":{"value":115,"limit":1000000},"postexpandincludesize":{"value":846,"limit":2097152},"templateargumentsize":{"value":90,"limit":2097152},"expansiondepth":{"value":8,"limit":100},"expensivefunctioncount":{"value":2,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":24346,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 111.780 1 -total"," 15.88% 17.751 1 Template:Lang-en"," 14.89% 16.644 1 Template:LangWithName"," 12.18% 13.610 1 Template:ISO639言語名"," 6.55% 7.318 1 Template:FOLDOC"," 1.38% 1.542 1 Template:Lang"]},"scribunto":{"limitreport-timeusage":{"value":"0.002","limit":"10.000"},"limitreport-memusage":{"value":710241,"limit":52428800}},"cachereport":{"origin":"mw-api-ext.codfw.main-7c4bdb7978-458kw","timestamp":"20250213060738","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"\u518d\u5e30\u4e0b\u964d\u69cb\u6587\u89e3\u6790","url":"https:\/\/ja.wikipedia.org\/wiki\/%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90","sameAs":"http:\/\/www.wikidata.org\/entity\/Q1323264","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q1323264","author":{"@type":"Organization","name":"\u30a6\u30a3\u30ad\u30e1\u30c7\u30a3\u30a2\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u8ca2\u732e\u8005"},"publisher":{"@type":"Organization","name":"\u30a6\u30a3\u30ad\u30e1\u30c7\u30a3\u30a2\u8ca1\u56e3","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2007-01-24T08:34:43Z","dateModified":"2025-02-13T06:07:38Z"}</script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10