CN113535139A - Method for realizing function, interpreter and computer readable storage medium - Google Patents

Method for realizing function, interpreter and computer readable storage medium Download PDF

Info

Publication number
CN113535139A
CN113535139A CN202010297372.0A CN202010297372A CN113535139A CN 113535139 A CN113535139 A CN 113535139A CN 202010297372 A CN202010297372 A CN 202010297372A CN 113535139 A CN113535139 A CN 113535139A
Authority
CN
China
Prior art keywords
function
character
name
parameter
specific character
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010297372.0A
Other languages
Chinese (zh)
Inventor
许贝贝
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing A&e Technologies Co ltd
Original Assignee
Beijing A&e Technologies Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing A&e Technologies Co ltd filed Critical Beijing A&e Technologies Co ltd
Priority to CN202010297372.0A priority Critical patent/CN113535139A/en
Publication of CN113535139A publication Critical patent/CN113535139A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

The application discloses a method for realizing a function, an interpreter and a computer readable storage medium, wherein the method comprises the following steps: acquiring an input function, wherein the function is input in a function character string mode; analyzing the function character string, and extracting a function name and a function parameter of the function from the function character string; creating an example object of the function according to the function name and the function parameter; the instance object is executed. The method provided by the application can simplify the programming process, improve the programming efficiency and reduce the requirements on programmers.

Description

Method for realizing function, interpreter and computer readable storage medium
Technical Field
The present application relates to the field of programming technologies, and in particular, to a method for implementing a function, an interpreter, and a computer-readable storage medium.
Background
Common high-level programming languages, such as C language, C + + language, Java, etc., are complex in syntax and rich in included semantics. Programming in such languages requires professional basic knowledge of the operator.
However, for some application scenarios for professional use, no complex grammar and flexible rules are required for implementing software design of some specific functions, so that in order to reduce the difficulty of programming, some simple grammar rules need to be designed on the basis of general high-level programming speech to form a customized interpreter.
Disclosure of Invention
The application provides a method for realizing a function, which forms an example object of the function by extracting a function name and a function parameter in an input function character string, executes the example object, and further executes the function, thereby finally simplifying a programming process and improving programming efficiency.
The first aspect of the present application provides an implementation method of an interpreter, where the implementation method includes: acquiring an input function, wherein the function is input in the form of a function character string; analyzing the function character string, and extracting a function name and a function parameter of the function from the function character string; creating an instance object of the function according to the function name and the function parameter; executing the instance object.
Based on the first aspect of the present application, in a first implementation manner of the first aspect of the present application, before creating the instance object of the function according to the function name and the function parameter, the method further includes: judging whether the function name exists in a preset function library or not; if the function name exists in the function library, checking whether the function type and/or the parameter quantity of the function parameter conform to the function description corresponding to the function name through a preset checker; if the function type and/or the parameter number of the function parameter conform to the function description corresponding to the function name, executing the step of creating the instance object of the function according to the function name and the function parameter; and if the function type and/or the parameter number of the function parameter do not accord with the function description corresponding to the function name, performing error reporting processing.
By checking the extracted function name and function parameters, the correct instance object can be ensured to be established subsequently.
Based on the first aspect of the present application to the first implementation manner of the first aspect, or the second implementation manner of the first aspect of the present application, the determining whether the function name exists in a preset function library includes: judging whether a standard function name with similarity exceeding a similarity threshold exists in the function library or not; if the function library is judged to have a standard function name with the similarity exceeding the similarity threshold, judging that the function name exists in the function library; and if the function library does not have the standard function name with the similarity exceeding the similarity threshold, judging that the function name does not exist in the function library.
When the similarity between the extracted function name and the standard function name in the function library exceeds the similarity threshold, the extracted function name is judged to exist in the function library, and the phenomenon that the user cannot successfully establish the instance object due to the fact that the function name is wrongly input when inputting the function character string can be avoided.
Based on the first aspect of the present application, the first implementation manner of the first aspect, the second implementation manner of the first aspect of the present application, and the third implementation manner of the first aspect of the present application, the extracting a function name of the function from the function string includes: sequentially traversing the characters in the function character string from the character at the beginning of the function character string until the traversed current character is a first specific character; and intercepting the character at the beginning of the function character string to the character on the left side of the first specific character as the function name.
The method for extracting the function name can accord with the rule that a user inputs the function character string usually.
Based on the first to third implementation manners of the first aspect to the first aspect of the present application, and the fourth implementation manner of the first aspect of the present application, the extracting the function parameter of the function from the function string includes: traversing a target character between a first specific character and a second specific character in the function character string, and taking the target character as the function parameter
Based on the first to fourth implementation manners of the first to fourth aspects of the present application, in a fifth implementation manner of the first aspect of the present application, a third specific character is further included between the first specific character and the second specific character, and an adjacent character located between the first specific character and the second specific character and on the left side of the third specific character is the function parameter.
The extraction mode of the function parameters can accord with the rule that a user inputs a function character string usually.
Based on the first to fifth implementation manners of the first aspect of the present application, in a sixth implementation manner of the first aspect of the present application, the first specific character is a left bracket, the second specific character is a right bracket, and the third specific character is a comma.
The first specific character is set to be a left bracket, the second specific character is set to be a right bracket, and the third specific character is set to be a comma, so that the rule of the user for inputting the function character string can be further met.
Based on the first to sixth implementation manners of the first aspect of the present application and the seventh implementation manner of the first aspect of the present application, the creating an instance object of the function according to the function name and the function parameter includes: and creating an instance object of the function according to the function name and the function parameter by using a C + + programming language or a Java programming language.
The execution efficiency can be improved by creating the instance object of the function by using the C + + programming language or the Java programming language.
A second aspect of the application provides an interpreter comprising processing circuitry and communication circuitry coupled to each other, the processing circuitry and the communication circuitry being operable to implement the method of any of the first aspects described above.
A third aspect of the present application provides a computer-readable storage medium comprising instructions which, when executed on a computer, cause the computer to perform the method of any of the first aspects described above.
The beneficial effect of this application is: according to the method and the device, the function name and the function parameter in the function character string are extracted to establish the example object of the function, and the example object is executed.
Drawings
In order to more clearly illustrate the technical solutions in the embodiments of the present application, the drawings needed to be used in the description of the embodiments are briefly introduced below, and it is obvious that the drawings in the following description are only some embodiments of the present application, and it is obvious for those skilled in the art to obtain other drawings based on these drawings without creative efforts. Wherein:
FIG. 1 is a flow chart illustrating an embodiment of a method for implementing a function according to the present application;
FIG. 2 is a flow chart illustrating another embodiment of a method for implementing a function according to the present application;
FIG. 3 is a schematic diagram of the structure of an embodiment of the interpreter of the present application;
FIG. 4 is a schematic structural diagram of another embodiment of the interpreter of the present application;
FIG. 5 is a schematic structural diagram of an embodiment of a computer-readable storage medium according to the present application.
Detailed Description
The technical solutions in the embodiments of the present application will be clearly and completely described below with reference to the drawings in the embodiments of the present application, and it is obvious that the described embodiments are only a part of the embodiments of the present application, and not all the embodiments. All other embodiments, which can be derived by a person skilled in the art from the embodiments given herein without making any creative effort, shall fall within the protection scope of the present application.
Referring to fig. 1, fig. 1 is a schematic flow chart of an embodiment of a method for implementing a function according to the present application, where the method includes:
s110: and acquiring an input function, wherein the function is input in the form of a function character string.
When a user needs to execute the function of a certain function, the function character string can be directly input on the corresponding interface.
When a user inputs a function character string, the function character string is input according to a preset rule, and the input function character string must include a function name and a function parameter.
S120: and analyzing the function character string, and extracting the function name and the function parameter of the function from the function character string.
And decomposing the function character string input by the user, and extracting the function name and the function parameter in the function character string according to preset regulations.
S130: and creating an instance object of the function according to the function name and the function parameter.
S140: the instance object is executed.
The method comprises the steps of creating an example object of a function according to a function name and function parameters, wherein the example object is specifically in a function expression form, executing the example object to obtain a result of the function, and finally realizing the function which a user wants to realize, namely, the embodiment converts a function character string input by the user into a function expression to realize the function, so that an interpreter of the function expression is realized.
In an application scenario, the method for implementing the interpreter in the embodiment is suitable for the requirement of table programming of a visual system, and can complete a visual task.
It can be seen from the above contents that, the method in this embodiment only needs the user to input the corresponding function string, and does not need to use a high-level programming language for writing, which not only lowers the programming threshold, but also can simplify the programming process and improve the programming efficiency, so as to be used in an industrial pipeline environment.
In the present embodiment, in order to improve the execution efficiency, an instance object of a function is created using the C + + programming language or the Java programming language.
Specifically, the C + + programming language is an inheritance of the C programming language, and can perform procedural programming of the C language, object-based programming characterized by abstract data function types, and object-oriented programming characterized by inheritance and polymorphism. The C + + programming language is good at object-oriented programming and at the same time can also be used for process-based programming.
The Java programming language is an object-oriented programming language, not only absorbs various advantages of the C + + language, but also abandons concepts such as multiple inheritance, pointers and the like which are difficult to understand in the C + +, so the Java programming language has two characteristics of strong function, simplicity and easy use. The Java programming language, which is representative of the static object-oriented programming language, excellently implements object-oriented theory, allowing programmers to perform complex programming in an elegant, mental manner. The Java programming language has the characteristics of simplicity, object-oriented property, distribution, robustness, safety, platform independence and portability, multithreading, dynamism and the like.
Of course, in other embodiments, other programming languages may be used to create instance objects of functions, which is not limited herein.
Referring to fig. 2, fig. 2 is a schematic flow chart of another embodiment of the method for implementing the interpreter of the present application. The method comprises the following steps:
s210: and acquiring an input function, wherein the function is input in the form of a function character string.
S220: and analyzing the function character string, and extracting the function name and the function parameter of the function from the function character string.
The extracting of the function name in the function character string specifically includes: starting from a character at the beginning of the function character string, sequentially traversing characters in the function character string until the traversed current character is a first specific character; and intercepting the character at the beginning of the function character string to the character at the left side of the first specific character as a function name.
Specifically, when the user inputs a function string, the user is required to write a function name in the beginning part and take the first specific character as a separator of the function name from other parts.
The extracting of the function parameter in the function character string specifically includes: and traversing a target character between the first specific character and the second specific character in the function character string, and taking the target character as a function parameter.
Specifically, when the user inputs the function character string, the user is required to write the function parameter between the first specific character and the second specific character, so that when the function parameter is extracted, the first specific character and the second specific character are directly searched, and then the searched target character is used as the function parameter.
The function parameters may be more than one, so that a parameter list may be established in the searching process, the searched function parameters are all added to the parameter list, and then all the function parameters are obtained.
In an application scene, a third specific character is further included between the first specific character and the second specific character, wherein an adjacent character located between the first specific character and the second specific character and located on the left side of the third specific character is a function parameter.
That is, the user writes the function parameters between the first specific character and the second specific character and spaced apart by the third specific character when inputting the function character string.
Generally, according to the convention that designers generally write function strings, a function string generally comprises a left bracket and a right bracket, wherein a function parameter is located between the left bracket and the right bracket, two adjacent function parameters are separated by a comma, and a function name is located from the beginning of the function string to the left side of the left bracket.
Of course, in other embodiments, the rule of the user input function string may also be re-specified, and the first specific character, the second specific character, and the third specific character corresponding thereto may be other characters, which is not limited herein.
S230: and judging whether the function name exists in a preset function library or not.
If the determination result is no, the process proceeds to step S270, and if the determination result is yes, the process proceeds to step S240.
Various standard function names are stored in the preset function library in advance, when the extracted function name exists in the preset function library, the extracted function name is correct, the next step is carried out, if the extracted function name does not exist in the preset function library, the extracted function name is wrong, the reason may be that the function character string input by the user is wrong, and the step S270 is executed: and performing error reporting processing, wherein when the error reporting processing is performed, the reason of the error can be displayed so that a user can correct the error.
In other embodiments, in order to avoid the reason that the extracted function name does not exist in the preset function library, the function string itself input by the user is not in error, but in the process of extraction, when it is determined that the function name does not exist in the preset function library, the process may return to step S220, that is, the function name in the function string is re-extracted, and when the re-extracted function name does not exist in the preset function library, the error reporting process is performed again.
Meanwhile, in the present embodiment, when it is determined whether the extracted function name exists in the preset function library, the extracted function name is used as a keyword to search in the preset function library.
Meanwhile, in this embodiment, step S230 further specifically includes: judging whether a standard function name with similarity exceeding a similarity threshold exists in a preset function library or not; if the judgment result is yes, judging that the function name exists in a preset function library; if the judgment result is negative, judging that the function name does not exist in the preset function library.
Wherein, the similarity threshold may be set to 100%, 80%, etc., wherein it is understood that, when the similarity threshold is set to 100%, the extracted function name is determined to be stored in the preset function library only if the extracted function name is completely identical to the standard function name in the function library, and when the similarity threshold is set to less than 100%, the extracted function name is determined to be stored in the function library even if the extracted function name is not completely identical to the standard function name in the function library, in which case, a phenomenon that the function name is mistakenly input when the user inputs the function character string, which results in a failure to successfully create the instance object, that is, a phenomenon that the user is allowed to make an error in a small range when inputting the function name, for example, two letters before and after the function name are mistaken in order, one or two letters in the function name are omitted, etc., and in this case, and when the similarity between the extracted function name and the standard function name exceeds a similarity threshold, updating the extracted function name into the standard function name.
S240: and judging whether the function type and/or the parameter quantity of the function parameters conform to the function description corresponding to the function name or not through a preset checker.
If the function type and/or the number of parameters of the function parameter pass the check of the checker, the process proceeds to step S250, and if the function type and/or the number of parameters of the function parameter do not pass the check of the checker, the process proceeds to step S270.
When the function name exists in the function library, a function description corresponding to the function name necessarily exists, and the function description is used for specifying a corresponding function expression, wherein the function description specifically comprises the function type and/or the parameter number of the input function parameter.
Therefore, the checker is used for checking whether the function type and/or the parameter number of the function parameter are in accordance with the corresponding function description, if so, the subsequent steps are executed, and if not, the error reporting processing is carried out.
Meanwhile, similar to the above steps, in order to avoid that the reason that the function type and/or the number of the function parameters do not conform to the function description is not incorrect input by the user but an error occurs in the extraction process, when the checker fails to check, the method may return to step S220 to extract the function parameters again, and if the function parameters extracted again do not conform to the function description, error reporting processing is performed again.
S250: and creating an instance object of the function according to the function name and the function parameter.
S260: the instance object is executed.
Before executing the instance object, it is necessary to ensure that the created instance object is correct, specifically, it is determined whether the function type and the number of parameters of the function parameter in the created instance object are the same as those of the function parameter extracted before, if so, the instance object is executed to obtain a result of the function, if not, the step S250 is returned to create the instance object again, and if the re-created instance object cannot pass the check, an error reporting process is performed.
S270: and performing error reporting processing.
It should be noted that, in other embodiments, the function parameters may not be extracted first, but the function parameters may be extracted only when it is determined that the extracted function name exists in the function library.
Referring to fig. 3, fig. 3 is a schematic structural diagram of an embodiment of the interpreter of the present application. The interpreter 300 includes an acquisition module 310 and a processing module 320 coupled to the acquisition module 310.
The obtaining module 310 is configured to obtain an input function, where the function is input in the form of a function string.
The processing module 320 is configured to parse the function string, and extract a function name and a function parameter of the function from the function string; creating an example object of the function according to the function name and the function parameter; the instance object is executed.
In another optional implementation manner, the processing module 320 is further configured to determine whether a function name exists in a preset function library; if the function name exists in the function library, the processing module 320 checks whether the function type and/or the parameter number of the function parameter conform to the function description corresponding to the function name through a preset checker; if the function type and/or the parameter number of the function parameter conform to the function description corresponding to the function name, the processing module 320 performs a step of creating an instance object of the function according to the function name and the function parameter; if the function type and/or the parameter number of the function parameter do not conform to the function description corresponding to the function name, the processing module 320 performs error reporting.
In another optional implementation manner, the processing module 320 is further configured to determine whether a standard function name whose similarity with the function name exceeds a similarity threshold exists in the function library; if the function library has a standard function name whose similarity with the function name exceeds the similarity threshold, the processing module 320 determines that the function name exists in the function library; if it is determined that the function library does not have a standard function name whose similarity with the function name exceeds the similarity threshold, the processing module 320 determines that the function name does not exist in the function library.
In another alternative implementation, the processing module 320 is further configured to sequentially traverse the characters in the function string, starting from the character at the beginning of the function string, until the traversed current character is the first specific character; the processing module 320 then intercepts the first character of the function string to the left character of the first specific character as the function name.
In another alternative implementation, the processing module 320 traverses a target character between the first specific character and the second specific character in the function character string, and takes the target character as a function parameter.
In another optional implementation manner, a third specific character is further included between the first specific character and the second specific character, and an adjacent character located between the first specific character and the second specific character and on the left side of the third specific character is a function parameter.
In another alternative implementation, the first specific character is a left bracket, the second specific character is a right bracket, and the third specific character is a comma.
In another alternative implementation manner, the processing module 320 is further configured to create an instance object of the function according to the function name and the function parameter by using a C + + programming language or a Java programming language.
Referring to fig. 4, fig. 4 is a schematic structural diagram of another embodiment of the interpreter of the present application. The final interpreter 400 includes a processing circuit 410 and a communication circuit 420 coupled to each other, and the processing circuit 410 and the communication circuit 420 implement any one of the above methods during operation, wherein the detailed methods can be referred to the above embodiments and are not described herein again.
Referring to fig. 5, fig. 5 is a schematic structural diagram of an embodiment of a computer-readable storage medium according to the present application. The computer-readable storage medium 500 includes instructions 510, which, when the instructions 510 are executed on a computer, cause the computer to perform any one of the methods described above, where the detailed methods can be referred to the above embodiments and are not described herein again.
The computer-readable storage medium 500 may be a server, a usb disk, a removable hard disk, a Read-Only Memory (ROM), a Random Access Memory (RAM), a magnetic disk, or an optical disk.
The above description is only for the purpose of illustrating embodiments of the present application and is not intended to limit the scope of the present application, and all modifications of equivalent structures and equivalent processes, which are made by the contents of the specification and the drawings of the present application or are directly or indirectly applied to other related technical fields, are also included in the scope of the present application.

Claims (10)

1. A method for implementation of a function, the method comprising:
acquiring an input function, wherein the function is input in the form of a function character string;
analyzing the function character string, and extracting a function name and a function parameter of the function from the function character string;
creating an instance object of the function according to the function name and the function parameter;
executing the instance object.
2. The method of claim 1, wherein before creating the instance object of the function according to the function name and the function parameter, the method further comprises:
judging whether the function name exists in a preset function library or not;
if the function name exists in the function library, checking whether the function type and/or the parameter quantity of the function parameter conform to the function description corresponding to the function name through a preset checker;
if the function type and/or the parameter number of the function parameter conform to the function description corresponding to the function name, executing the step of creating the instance object of the function according to the function name and the function parameter;
and if the function type and/or the parameter number of the function parameter do not accord with the function description corresponding to the function name, performing error reporting processing.
3. The method of claim 2, wherein the determining whether the function name exists in a preset function library comprises:
judging whether a standard function name with similarity exceeding a similarity threshold exists in the function library or not;
if the function library is judged to have a standard function name with the similarity exceeding the similarity threshold, judging that the function name exists in the function library;
and if the function library does not have the standard function name with the similarity exceeding the similarity threshold, judging that the function name does not exist in the function library.
4. The method according to any one of claims 1-3, wherein extracting the function name of the function from the function string comprises:
sequentially traversing the characters in the function character string from the character at the beginning of the function character string until the traversed current character is a first specific character;
and intercepting the character at the beginning of the function character string to the character on the left side of the first specific character as the function name.
5. The method of claim 4, wherein extracting function parameters of the function from the function string comprises:
and traversing a target character between the first specific character and the second specific character in the function character string, and taking the target character as the function parameter.
6. The method according to claim 5, further comprising a third specific character between the first specific character and the second specific character, wherein an adjacent character located between the first specific character and the second specific character and located at the left side of the third specific character is the function parameter.
7. The method according to claim 6, wherein the first specific character is a left bracket, the second specific character is a right bracket, and the third specific character is a comma.
8. The method of claim 1, wherein creating the instance object of the function according to the function name and the function parameter comprises:
and creating an instance object of the function according to the function name and the function parameter by using a C + + programming language or a Java programming language.
9. An interpreter, comprising processing circuitry and communication circuitry coupled to each other, the processing circuitry and the communication circuitry being operable to implement a method according to any one of claims 1 to 8.
10. A computer-readable storage medium comprising instructions which, when executed on a computer, cause the computer to perform the method of any one of claims 1 to 8.
CN202010297372.0A 2020-04-15 2020-04-15 Method for realizing function, interpreter and computer readable storage medium Pending CN113535139A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010297372.0A CN113535139A (en) 2020-04-15 2020-04-15 Method for realizing function, interpreter and computer readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010297372.0A CN113535139A (en) 2020-04-15 2020-04-15 Method for realizing function, interpreter and computer readable storage medium

Publications (1)

Publication Number Publication Date
CN113535139A true CN113535139A (en) 2021-10-22

Family

ID=78088273

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010297372.0A Pending CN113535139A (en) 2020-04-15 2020-04-15 Method for realizing function, interpreter and computer readable storage medium

Country Status (1)

Country Link
CN (1) CN113535139A (en)

Similar Documents

Publication Publication Date Title
US10146532B2 (en) Apparatus and method for detecting code cloning of software
US10970097B2 (en) Adaptive web-based robotic process automation
US20240078168A1 (en) Test Case Generation Method and Apparatus and Device
EP3819785A1 (en) Feature word determining method, apparatus, and server
CN103455471B (en) A kind of method and apparatus that text resolution is become key-value pair
US20230035121A1 (en) Automatic event graph construction method and device for multi-source vulnerability information
CN112579466B (en) Method and device for generating test cases and computer readable storage medium
CN112328489B (en) Test case generation method and device, terminal equipment and storage medium
CN111079408A (en) Language identification method, device, equipment and storage medium
CN112749151A (en) Data migration method and device among different types of databases and storage medium
CN106886446B (en) Software source code verification method and device
CN113742205A (en) Code vulnerability intelligent detection method based on man-machine cooperation
CN105302827A (en) Event search method and device
CN113535139A (en) Method for realizing function, interpreter and computer readable storage medium
CN113807077B (en) Natural language test script analysis processing method and device and electronic equipment
CN111381826A (en) Method and device for generating syntax tree of code file and electronic equipment
CN115438341A (en) Method and device for extracting code loop counter, storage medium and electronic equipment
CN115391785A (en) Method, device and equipment for detecting risks of software bugs
CN110895529B (en) Processing method of structured query language and related device
CN112989066A (en) Data processing method and device, electronic equipment and computer readable medium
CN111381814A (en) Method and device for generating syntax tree of code file and electronic equipment
CN111381827A (en) Method and device for generating syntax tree of code file and electronic equipment
US11100412B2 (en) Extending question and answer samples
CN116432185B (en) Abnormality detection method and device, readable storage medium and electronic equipment
CN111651348B (en) Debugging system of chat robot

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination