<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Improving LLM-based Code Completion Using LR Parsing-Based Candidates</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Md</forename><surname>Monir</surname></persName>
							<email>monir024@jnu.ac.kr</email>
						</author>
						<author>
							<persName><forename type="first">Ahammod</forename><surname>Bin</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">Chonnam National University</orgName>
								<address>
									<postCode>61186</postCode>
									<settlement>Gwangju</settlement>
									<country key="KR">South Korea</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Kwanghoon</forename><surname>Choi</surname></persName>
							<email>kwanghoon.choi@jnu.ac.kr</email>
							<affiliation key="aff0">
								<orgName type="institution">Chonnam National University</orgName>
								<address>
									<postCode>61186</postCode>
									<settlement>Gwangju</settlement>
									<country key="KR">South Korea</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Isao</forename><surname>Sasano</surname></persName>
							<email>sasano@sic.shibaura-it.ac.jp</email>
							<affiliation key="aff1">
								<orgName type="institution">Shibaura Institute of Technology</orgName>
								<address>
									<settlement>Tokyo</settlement>
									<country key="JP">Japan</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Hyeon-Ah</forename><surname>Moon</surname></persName>
							<email>hamoon@sogang.ac.kr</email>
							<affiliation key="aff2">
								<orgName type="institution">Sogang University</orgName>
								<address>
									<settlement>Seoul</settlement>
									<country key="KR">South Korea</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Improving LLM-based Code Completion Using LR Parsing-Based Candidates</title>
					</analytic>
					<monogr>
						<idno type="ISSN">1613-0073</idno>
					</monogr>
					<idno type="MD5">283590BDC14C88BFA271212FEC0442EF</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2025-04-23T18:35+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>Syntax Completion</term>
					<term>Large Language Model</term>
					<term>LR parsing</term>
					<term>Integrated Development Environments</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Programmers often use syntax completion and code suggestion features. Our methodology enhances code completion by combining structural candidate information from LR parsing with LLMs. These structural candidates are utilized to compose prompts so that ChatGPT can predict actual code under the specified structure. Tested on Small Basic and C benchmarks, this approach offers textual suggestions rather than just structural ones, showing nearly 50% prediction accuracy for Small Basic programs. While effective for Small Basic, we report that challenges remain with C11 programs.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.">Introduction</head><p>Many integrated development environments (IDEs), such as Visual Studio Code, provide syntax completion features that ease the editing process for various programming languages. Developers of IDEs should prioritize incorporating syntax completion for each supported language. To make the process more efficient and cost-effective, it is beneficial to approach this implementation methodically, guided by a detailed specification.</p><p>An analytic approach is based on syntax analysis using the well-developed LR parsing theory <ref type="bibr" target="#b1">[1]</ref>. Sasano &amp; Choi <ref type="bibr" target="#b2">[2]</ref> defined code completion candidates 𝛾 for a prefix 𝛼𝛽 as suffix sentential forms derived from a start symbol 𝑆 if there is a production 𝐴 → 𝛽𝛾 in the LR grammar so that 𝛽𝛾 can be reduced to a nonterminal 𝐴. Figure <ref type="figure" target="#fig_0">1</ref> describes this idea. The idea of structural candidates for code completion using LR parsing <ref type="bibr" target="#b2">[2]</ref> For example, on a request for a code completion on (the part of) a prefix 'For i = 1', 𝛽 is 'For ID = Expr', which is a sequence of terminal and noterminal symbols describing the beginning of the for loop.</p><p>Sasano &amp; Choi's method <ref type="bibr" target="#b2">[2]</ref>  <ref type="bibr" target="#b3">[3]</ref> can automatically uncover a candidate 𝛾, which is 'To Expr OptStep CRStmtCRs EndFor' to complete the rest of the for loop by a production 'Stmt → For ID = Expr To Expr OptStep CRStmtCRs EndFor'. Consequently, IDEs will respond with this candidate 𝛾 to the request for a code completion on 'For i = 1'. Their continuing research <ref type="bibr" target="#b4">[4]</ref> proposed a ranking method useful to choose more likely candidate than the others when there are more than one candidate possible for a prefix. It pre-investigates the frequencies of the occurrences of the candidates in the existing open-source projects.</p><p>These methods <ref type="bibr" target="#b2">[2]</ref>[3] <ref type="bibr" target="#b4">[4]</ref> are advantageous. The suggested candidates are guaranteed to be correct syntactically, ranking can be customized for an individual software project, and this method can be implemented in a programming language agnostic way.</p><p>However, the suggested candidates by the methods are limited to the form of terminal and noterminal symbols. After choosing a candidate, programmers should manually edit it into a code text, which diminishes productivity. Determining such a code text for a candidate is beyond the LR parsing-based syntax analysis.</p><p>In this work, we study how Large Language Model <ref type="bibr" target="#b5">[5]</ref> can complement these methods. Given a prefix text for 𝛼𝛽, the LR parsing based method firstly suggests a candidate 𝛾, and the LLM produces a code completion satisfying the structure of the suggested candidate for the given prefix text. For example, our system can automatically compose a prompt to the LLM as where the suggested structural candidate is placed inside the braces. Then the LLM successfuly returned exactly what we expected as this.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>6:</head><p>To 5 7: TextWindow.Write(name[i] + ", ") 8: EndFor Thus the two approaches can complement each other. The LR parsing based analytic approach can precisely specify the syntactic code structure to complete, while the LLM-based statistical approach can predict the code text under the specified structure. According to <ref type="bibr" target="#b4">[4]</ref>, the top 1.8 suggested candidates in the SmallBasic programs and the top 3.15 suggested candidates in the C11 programs on average were found to be what are expected for testing. This evaluation results imply that candidates in the form of the rest structural candidates should not be considered by the LLM. Composing prompts using the top suggested structual candidates will be effective to instruct the LLM to exclude the bottom ones for code completion.</p><p>To the best of our knowledge, this is the first attempt to guide an LLM using prompts that utilize candidate structural information obtained from LR-parsing. We report ongoing work in this direction.</p><p>Our contributions are as follows.</p><p>Firstly, we propose a code completion prediction method that combines LR-parsing-based ranking of candidate skeletons with Large Language Model (LLM)-based fleshing out of those skeletons.</p><p>Secondly, we have setup an environment to evaluate the proposed method and report initial results using SmallBasic and C11 benchmarks.</p><p>Section 2 introduces our system and presents initial evaluation results . Section 3 compares our work with existing research. Section 4 concludes the paper with future work.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">An Overview of Our System and Its Evaluation</head><p>Figure <ref type="figure" target="#fig_1">2</ref> shows an overview of our system. The system operates in two phases. The collection phase constructs a database from sample programs, mapping parse states to sets of ranked candidates. The query phase retrieves a sorted list of candidates based on their ranks for a parse state corresponding to a given cursor position being edited. The top suggested structural candidates are chosen from the sorted list to compose a prompt, and then the LLM fleshes out the structural candidates to produce textual candidates, which will be displayed to the programmer for code completion. In this work, we focus on one aspect of this system: automatically composing prompts to the LLM using structural candidates offered by the LR-based method is feasible and is an advancement to the previous work <ref type="bibr" target="#b4">[4]</ref> in that this system can now suggest textual candidates rather than structural candiates.</p><p>Under this goal, we design an experiment to evaluate the effectiveness of using ChatGPT for code completion suggestions and to offer structural candidates (composed of terminals and nonterminals) to guide these suggestions. Our proposed system can be assessed by addressing the following two research questions (RQ):</p><p>• RQ1: Does the proposed system offer textual (actual) candidate suggestions with the aid of LLM such as ChatGPT that are beneficial in introductory programming? • RQ2: Is it reasonable to implement the system as a language-parametric tool?</p><p>In order to address the above research questions, our methodology includes the following steps. Selection of Programming Languages: We selected two programming languages, Microsoft SmallBasic (MSB) and C11, for our experiments as in the previous work <ref type="bibr" target="#b4">[4]</ref>. These languages are popular choices for introductory programming. Data Collection: The testing set for SmallBasic was obtained from its community. It consists of 27 programs totaling 155 lines taken from the well-known MSB tutorial. Talking about C, the test set of C11 comprises 106 programs (11,218 lines in total) that are solutions from the well-known book on the C programming language by Kernighan and Ritchie. Prefix Extraction: Prefixes were collected from the source code files, along with cursor position information. This information was obtained from candidates' database by the lexical analysis in the LR parsing-based method <ref type="bibr" target="#b4">[4]</ref>. Prompt Engineering: Using the collected prefix and structural candidate data, we crafted prompts for ChatGPT. In this experiment, we selected the 'gpt-3.5-turbo-0125' model for its better performance with code completion. These information were then fed into the ChatGPT prompt to ask for substitutes for our structural candidates into actual candidates. We compared the answers provided by ChatGPT with the correct answers from our database. Evaluation: The responses from ChatGPT were evaluated using well-known techniques such as SacreBLEU, which is a popular method for assessing large language models and SequenceMatcher similarity. The SacreBLEU score measures the n-gram (sequences of n items, typically words or characters) similarity between the reference code sequence and the generated code sequence. It counts how many n-grams in the generated code sequence match (token-by-token) n-grams in the the reference code sequence. The SequenceMatcher is a class available in python module named "difflib". It compares the similarity between two sequences of strings (in terms of characters) by identifying the best alignment between them. Given two sequences, find the length of the longest subsequence present in both of them. Here, we used the parameter isjunk=None so that no elements are ignored. The data set as well as the developed software are all available in the public repository <ref type="foot" target="#foot_0">1</ref> .</p><p>We present a summary of the experimental results for both MSB and C11 which is dipicted in Table <ref type="table" target="#tab_1">1</ref>. For MSB, we experimented with 27 programs where, for each program, we iterated our system for each structural candidate, calculated the evaluating metrics values, and then averaged the precision for the whole program. This process was done for every program. Finally, we calculated the mean precision for the 27 programs in terms of SacreBLEU and sequence matcher similarity. On average, our system predicts the textual code suggestion with over 45% accuracy for each testing program when using SacreBLEU as an evaluation metric. Precision is almost similar at nearly 45% when sequence matcher similarity is taken into account. The similar process was used with C11. For 106 C11 programs, the average SacreBLEU score is 21.463%, indicating that our system the correct code completion suggestions. Sequence matcher similarity is nearly the same for C11. To show the effectiveness of guidance by a structural candidate, we discuss a case representing the best prediction of our system as this. In the MSB experiment case depicted in Figure <ref type="figure" target="#fig_2">3</ref>, line 2600 marks the parse state and cursor position, followed by the next few lines (2602 to 2612), which provide the prompt for the ChatGPT. Lines spanning from 2603 to 2608 represent the prefix code. Subsequently, a candidate structure appears in line 2609: 'To Expression OptStep CRStmtCRs EndFor'. It interprets that the actual candidate should be 'To 5 \n TextWindow . Write ( name [ i ] + ", " ) \n EndFor', which is shown in line 2618. Line 2614 outlines the time taken from the query to the ChatGPT response, which is 0.6903 seconds. In this candidate structure, the response generated by ChatGPT is highly accurate. The precision at the unigram level (1-gram) is 100% which is seen at line 2621, and other metric also show satisfactory result (line 2622). This example demonstrates that our candidate suggestion plays a crucial role in guiding ChatGPT's responses. Each terminal and non-terminal component contributes to achieving an accurate result from ChatGPT. Based on the evidence provided, we can answer Research Question 1 in the affirmative. Using ChatGPT with LR parsing-based structural candidates is effective in providing code completion suggestions for introductory programming languages, particularly for MSB. Our system shows correct suggestions with minimal prefixes (hints), which is notable. This indicates that the system can be beneficial in educational contexts where MSB is used. However, improvements are needed to increase precision, especially for more complex languages like C11. The precision for C programs in C11 is low due to short candidate structures like '[', ';' and complex, hard-to-infer structures. Additionally, predicting the next token or line of code with minimal prefix is challenging, especially in long files.</p><p>On answering the second research question, based on the successful application of our system to the two programming languages, we can claim that our code completion system is language-agnostic. This system can incorporated into any programming language.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Related Work</head><p>There are various studies conducted up to now which use large code base and/or machine learning to code completion. One is by Svyatkovskiy et al. from Microsoft, who introduced a system named IntelliCode Compose <ref type="bibr" target="#b6">[6]</ref>. This system leverages GPT-C, a variant of OpenAI's GPT-2 <ref type="bibr" target="#b5">[5]</ref>, trained on a vast dataset of program source code. It is designed to generate sequences of tokens that form syntactically correct language constructs, such as statements containing local variables, method names, and keywords, for languages including C#. Another study by <ref type="bibr" target="#b7">[7]</ref> explored identifier completion with ranking candidates. They sought solutions to improve the efficiency of the completion process. Rather than relying on prefix matching, used in many completion systems, they introduced subsequence matching, where user-input sequences of characters are compared to names containing them, even if they are non-consecutive. Recently a study by <ref type="bibr" target="#b8">[8]</ref> delved into method invocation and field access completion. Nguyen et al. <ref type="bibr" target="#b9">[9]</ref> combined program analysis and langauge model for completing a partially-input statement or suggesting a statement that immediately follows the current statement if it is a complete one. Gabel et al. <ref type="bibr" target="#b10">[10]</ref> first observed the regularity of software code mentioned above. There are infinitely many syntactically valid statements, but there are much smaller, or may even be finite, number of pracitally useful statements. Liu et al. <ref type="bibr" target="#b11">[11]</ref> presented a non-autoregressive model for concurrently computating candidates, each of which is a line of code starting at the cursor position. 10 lines of code immediately before the current empty line is given to the completion system when programmers write code, and also 10 lines of code immediately before every line is given as training data together with the current line. They also use some information of tokens such as keywords, identifiers, operators, etc.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Conclusion and Future Work</head><p>In this research, we introduced a method for automatically composing prompts to the LLM using structural candidates offered by the LR-based method and assessed the method using two programming languages. Compared to the the previous work <ref type="bibr" target="#b4">[4]</ref>, this system can now suggest textual candidates rather than structural candiates. By using structural candidates in the prompts, the system can effectively instruct the LLM to exclude the bottom structural candidates for code completion.</p><p>There are many topics for future work. A few important topics are to build an IDE for usability evaluation, to measure the effectiveness of structural candidates in the prompts to the LLM, and to compare the prediction performance of our system with that of the others particularly based on the Large Language Models. Support Project. Also, this work was partially supported by JSPS KAKENHI under Grant Number 23K11053.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1:The idea of structural candidates for code completion using LR parsing<ref type="bibr" target="#b2">[2]</ref> </figDesc><graphic coords="1,94.57,494.48,406.15,99.90" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 2 :</head><label>2</label><figDesc>Figure 2: Overview of our system</figDesc><graphic coords="3,94.57,183.16,406.14,55.74" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 3 :</head><label>3</label><figDesc>Figure 3: High Prediction Result (MSB)</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head>Table 1</head><label>1</label><figDesc>Experimental results (precision) on specific languages</figDesc><table><row><cell>PLs</cell><cell cols="2">Microsoft SmallBasic (%) C11 (%)</cell></row><row><cell>SacreBLEU Precision</cell><cell>45.247</cell><cell>21.463</cell></row><row><cell>Sequence Matcher Precision</cell><cell>44.354</cell><cell>20.384</cell></row></table></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">https://github.com/monircse061/ChatGPT-Code-Completion-Work</note>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Acknowledgments</head><p>This work was supported by Innovative Human Resource Development for Local Intellectualization program through the Institute of Information &amp; Communications Technology Planning &amp; Evaluation (IITP) grant funded by the Korea government (MSIT) (IITP-2023-RS-2023-00256629). This work was partially supported by the Korea Internet &amp; Security Agency (KISA) -Information Security College</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<idno>0.8462619469026548</idno>
		<title level="m">Expression OptStep CRStmtCRs EndFor&apos; part of the code 2611: in the Small Basic programming language. Just show your answer in place 2612: of &apos;To Expression OptStep CRStmtCRs EndFor</title>
				<imprint>
			<date type="published" when="2600">2600</date>
			<biblScope unit="volume">2613</biblScope>
		</imprint>
	</monogr>
	<note>Sequence Matcher Similarity Precision</note>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">V</forename><surname>Aho</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">S</forename><surname>Lam</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Sethi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">D</forename><surname>Ullman</surname></persName>
		</author>
		<title level="m">Compilers -principles, techniques, and tools</title>
				<imprint>
			<publisher>Addison Wesley</publisher>
			<date type="published" when="2006">2006</date>
		</imprint>
	</monogr>
	<note>2nd edition</note>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">A text-based syntax completion method using lr parsing</title>
		<author>
			<persName><forename type="first">I</forename><surname>Sasano</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Choi</surname></persName>
		</author>
		<idno type="DOI">10.1145/3441296.3441395</idno>
		<idno>doi:10.1145/3441296.3441395</idno>
		<ptr target="https://doi.org/10.1145/3441296.3441395" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of 2021 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, PEPM 2021</title>
				<meeting>2021 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, PEPM 2021<address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>Association for Computing Machinery</publisher>
			<date type="published" when="2021">2021</date>
			<biblScope unit="page" from="32" to="43" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">A text-based syntax completion method using lr parsing and its evaluation</title>
		<author>
			<persName><forename type="first">I</forename><surname>Sasano</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Choi</surname></persName>
		</author>
		<idno type="DOI">10.1016/j.scico.2023.102957</idno>
		<ptr target="https://doi.org/10.1016/j.scico.2023.102957" />
	</analytic>
	<monogr>
		<title level="j">Science of Computer Programming</title>
		<imprint>
			<biblScope unit="page">102957</biblScope>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Ranked syntax completion with lr parsing</title>
		<author>
			<persName><forename type="first">K</forename><surname>Choi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Hwang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Moon</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Sasano</surname></persName>
		</author>
		<idno type="DOI">10.1145/3605098.3635944</idno>
		<idno>doi:10.1145/3605098.3635944</idno>
		<ptr target="https://doi.org/10.1145/3605098.3635944" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 39th ACM/SIGAPP Symposium on Applied Computing, SAC &apos;24</title>
				<meeting>the 39th ACM/SIGAPP Symposium on Applied Computing, SAC &apos;24<address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>Association for Computing Machinery</publisher>
			<date type="published" when="2024">2024</date>
			<biblScope unit="page" from="1242" to="1251" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<monogr>
		<title level="m" type="main">Language models are unsupervised multitask learners</title>
		<author>
			<persName><forename type="first">A</forename><surname>Radford</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Wu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Child</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Luan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Amodei</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Sutskever</surname></persName>
		</author>
		<ptr target="https://paperswithcode.com/paper/language-models-are-unsupervised-multitask" />
		<imprint>
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Intellicode compose: Code generation using transformer</title>
		<author>
			<persName><forename type="first">A</forename><surname>Svyatkovskiy</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">K</forename><surname>Deng</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Fu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Sundaresan</surname></persName>
		</author>
		<idno type="DOI">10.1145/3368089.3417058</idno>
		<idno>doi:10.1145/3368089.3417058</idno>
		<ptr target="https://doi.org/10.1145/3368089.3417058" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, ESEC/FSE 2020</title>
				<meeting>the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, ESEC/FSE 2020<address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>Association for Computing Machinery</publisher>
			<date type="published" when="2020">2020</date>
			<biblScope unit="page" from="1433" to="1443" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Scope-aware code completion with discriminative modeling</title>
		<author>
			<persName><forename type="first">S</forename><surname>Hu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Xiao</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Ishikawa</surname></persName>
		</author>
		<idno type="DOI">10.2197/ipsjjip.27.469</idno>
	</analytic>
	<monogr>
		<title level="j">Journal of Information Processing</title>
		<imprint>
			<biblScope unit="volume">27</biblScope>
			<biblScope unit="page" from="469" to="478" />
			<date type="published" when="2019">2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Heuristic and neural network based prediction of project-specific api member access</title>
		<author>
			<persName><forename type="first">L</forename><surname>Jiang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Liu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Jiang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Zhang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Mei</surname></persName>
		</author>
		<idno type="DOI">10.1109/TSE.2020.3017794</idno>
	</analytic>
	<monogr>
		<title level="j">IEEE Transactions on Software Engineering</title>
		<imprint>
			<biblScope unit="volume">48</biblScope>
			<biblScope unit="page" from="1249" to="1267" />
			<date type="published" when="2022">2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Combining program analysis and statistical language model for code statement completion</title>
		<author>
			<persName><forename type="first">S</forename><surname>Nguyen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">N</forename><surname>Nguyen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Li</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Wang</surname></persName>
		</author>
		<idno type="DOI">10.1109/ASE.2019.00072</idno>
		<ptr target="https://doi.org/10.1109/ASE.2019.00072.doi:10.1109/ASE.2019.00072" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 34th IEEE/ACM International Conference on Automated Software Engineering, ASE &apos;19</title>
				<meeting>the 34th IEEE/ACM International Conference on Automated Software Engineering, ASE &apos;19</meeting>
		<imprint>
			<publisher>IEEE Press</publisher>
			<date type="published" when="2020">2020</date>
			<biblScope unit="page" from="710" to="721" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">A study of the uniqueness of source code</title>
		<author>
			<persName><forename type="first">M</forename><surname>Gabel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Su</surname></persName>
		</author>
		<idno type="DOI">10.1145/1882291.1882315</idno>
		<idno>doi:10.1145/1882291.1882315</idno>
		<ptr target="https://doi.org/10.1145/1882291.1882315" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the Eighteenth ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE &apos;10</title>
				<meeting>the Eighteenth ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE &apos;10<address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>Association for Computing Machinery</publisher>
			<date type="published" when="2010">2010</date>
			<biblScope unit="page" from="147" to="156" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Non-autoregressive line-level code completion</title>
		<author>
			<persName><forename type="first">F</forename><surname>Liu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Fu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Li</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Jin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Liu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Hao</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Zhang</surname></persName>
		</author>
		<idno type="DOI">10.1145/3649594</idno>
		<ptr target="https://doi.org/10.1145/3649594.doi:10.1145/3649594" />
	</analytic>
	<monogr>
		<title level="j">ACM Trans. Softw. Eng. Methodol</title>
		<imprint>
			<date type="published" when="2024">2024</date>
		</imprint>
	</monogr>
	<note>just Accepted</note>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
