{"id":142291,"updated":"2025-01-20T19:03:07.957071+00:00","links":{},"created":"2025-01-19T00:19:45.670599+00:00","metadata":{"_oai":{"id":"oai:ipsj.ixsq.nii.ac.jp:00142291","sets":["934:935:8226:8227"]},"path":["8227"],"owner":"11","recid":"142291","title":["CにLuaを容易に埋め込むための言語LuCa"],"pubdate":{"attribute_name":"公開日","attribute_value":"2015-06-02"},"_buckets":{"deposit":"3bd89994-f088-4600-8917-0bc7c91f7a30"},"_deposit":{"id":"142291","pid":{"type":"depid","value":"142291","revision_id":0},"owners":[11],"status":"published","created_by":11},"item_title":"CにLuaを容易に埋め込むための言語LuCa","author_link":["210627","210626","210628","210629"],"item_titles":{"attribute_name":"タイトル","attribute_value_mlt":[{"subitem_title":"CにLuaを容易に埋め込むための言語LuCa"},{"subitem_title":"LuCa: A Language for embedding Lua in C","subitem_title_language":"en"}]},"item_keyword":{"attribute_name":"キーワード","attribute_value_mlt":[{"subitem_subject":"[発表概要]","subitem_subject_scheme":"Other"}]},"item_type_id":"3","publish_date":"2015-06-02","item_3_text_3":{"attribute_name":"著者所属","attribute_value_mlt":[{"subitem_text_value":"電気通信大学大学院情報理工学研究科"},{"subitem_text_value":"電気通信大学大学院情報理工学研究科"}]},"item_3_text_4":{"attribute_name":"著者所属(英)","attribute_value_mlt":[{"subitem_text_value":"Graduate School of Informatics and Engineering, The University of Electro-Communications","subitem_text_language":"en"},{"subitem_text_value":"Graduate School of Informatics and Engineering, The University of Electro-Communications","subitem_text_language":"en"}]},"item_language":{"attribute_name":"言語","attribute_value_mlt":[{"subitem_language":"jpn"}]},"item_publisher":{"attribute_name":"出版者","attribute_value_mlt":[{"subitem_publisher":"情報処理学会","subitem_publisher_language":"ja"}]},"publish_status":"0","weko_shared_id":-1,"item_file_price":{"attribute_name":"Billing file","attribute_type":"file","attribute_value_mlt":[{"url":{"url":"https://ipsj.ixsq.nii.ac.jp/record/142291/files/IPSJ-TPRO0801007.pdf"},"date":[{"dateType":"Available","dateValue":"2017-06-02"}],"format":"application/pdf","billing":["billing_file"],"filename":"IPSJ-TPRO0801007.pdf","filesize":[{"value":"96.4 kB"}],"mimetype":"application/pdf","priceinfo":[{"tax":["include_tax"],"price":"0","billingrole":"5"},{"tax":["include_tax"],"price":"0","billingrole":"6"},{"tax":["include_tax"],"price":"0","billingrole":"15"},{"tax":["include_tax"],"price":"0","billingrole":"44"}],"accessrole":"open_date","version_id":"ad04f5f7-fc0f-443f-bad1-555f2f9dd924","displaytype":"detail","licensetype":"license_note","license_note":"Copyright (c) 2015 by the Information Processing Society of Japan"}]},"item_3_creator_5":{"attribute_name":"著者名","attribute_type":"creator","attribute_value_mlt":[{"creatorNames":[{"creatorName":"谷村, 明"}],"nameIdentifiers":[{}]},{"creatorNames":[{"creatorName":"岩崎, 英哉"}],"nameIdentifiers":[{}]}]},"item_3_creator_6":{"attribute_name":"著者名(英)","attribute_type":"creator","attribute_value_mlt":[{"creatorNames":[{"creatorName":"Akira, Tanimura","creatorNameLang":"en"}],"nameIdentifiers":[{}]},{"creatorNames":[{"creatorName":"Hideya, Iwasaki","creatorNameLang":"en"}],"nameIdentifiers":[{}]}]},"item_3_source_id_9":{"attribute_name":"書誌レコードID","attribute_value_mlt":[{"subitem_source_identifier":"AA11464814","subitem_source_identifier_type":"NCID"}]},"item_resource_type":{"attribute_name":"資源タイプ","attribute_value_mlt":[{"resourceuri":"http://purl.org/coar/resource_type/c_6501","resourcetype":"journal article"}]},"item_3_source_id_11":{"attribute_name":"ISSN","attribute_value_mlt":[{"subitem_source_identifier":"1882-7802","subitem_source_identifier_type":"ISSN"}]},"item_3_description_7":{"attribute_name":"論文抄録","attribute_value_mlt":[{"subitem_description":"既存の多くのスクリプト言語は,Cプログラムとの連携を意図したAPIを提供している.特にスクリプト言語Luaは,CプログラムにLuaインタプリタが組み込まれることを前提にして設計されており,Cで実装された多くの既存のソフトウェアもLuaを組み込んでいる.しかし,CプログラムとLuaを連携する際,プログラマはCとLuaの間のデータのやりとりに煩雑なC APIを利用しなければならない.このことは,プログラマにとって実装コストの増加の原因となり,さらに,C APIの規約に従う必要がある結果,ソースコードの見通しも悪くなる.この問題を解決するため,我々はC言語を拡張し,LuaコードをCコード中に直接埋め込んで記述することのできる言語LuCaを提案し,その処理系を実装する.LuCaでは,埋め込まれたLuaコードからCコードの変数や関数にアクセスすることができる.そのため,C APIを陽に使うことなくLuaコードらしい自然な記述を行うことが可能になり,プログラマの負担を軽減することができる.LuCa処理系は与えられたLuCaコードをCコードへと変換する.Luaとの連携部分はC APIを適切に利用したコードとするため,LuCa処理系は特殊なCコンパイラや特殊なLua処理系を用意する必要はない.本発表では,LuCa言語の設計とその処理系の実装について述べる.","subitem_description_type":"Other"}]},"item_3_description_8":{"attribute_name":"論文抄録(英)","attribute_value_mlt":[{"subitem_description":"Most scripting languages provide C APIs that make these languages cooperate with programs written C. Especially, scripting language Lua is designed on the assumption that its interpreter is embedded in a C program. In fact, a lot of existing software written in C embed Lua interpreter. However, when embedding a Lua program in a C program, it is necessary for the programmer to use complicated C APIs provided by Lua for trasferring data between C and Lua. This increases the developing cost of programs within which C and Lua cooperate. Worse, obeying protocols of Lua's C APIs spoils the readability of source programs. To resolve this problem, we propose a new language LuCa that extends C to make it possible to embed Lua code directly, and implement a LuCa processor. In a LuCa program, embedded Lua code can access variables and fucntions in C. Thus, using LuCa enables the programmer to write Lua-like code without explicit C APIs and reduces the programmer's burden. LuCa processor converts a given LuCa code into a C code. Since cooperating part of C and Lua is converted into C code with existing C APIs, the LuCa processor does not require special C compiler and Lua interpreter. We describe LuCa language and the implementation of its processor.","subitem_description_type":"Other"}]},"item_3_biblio_info_10":{"attribute_name":"書誌情報","attribute_value_mlt":[{"bibliographicPageEnd":"14","bibliographic_titles":[{"bibliographic_title":"情報処理学会論文誌プログラミング(PRO)"}],"bibliographicPageStart":"14","bibliographicIssueDates":{"bibliographicIssueDate":"2015-06-02","bibliographicIssueDateType":"Issued"},"bibliographicIssueNumber":"1","bibliographicVolumeNumber":"8"}]},"relation_version_is_last":true,"weko_creator_id":"11"}}