SlideShare a Scribd company logo
 Lisp Input and Output
overviewRead function.Parsing of numbers and symbolsMacro charactersInput functionsOutput functionsQuerying the user
Printed representationLisp presents a representation of most objects in printed representation which is used for input/output purposes.Functions such as print takes a lisp object and send the characters of its printed representation to a stream.The collection of routines that does this is called (Lisp)printer.
What read function acceptsLisp reader accepts characters, interpret them as a printed representation of the lisp object, and construct and return such an object.The reader can also be used as a lexical analyzer for a more general user-written parser.The reader is organized as a recursive descent parser.
The reader operates by reading a character from the input stream and treating it in one of the three ways:Whitespace characters are served as separators but otherwise ignored.
Constituent and escape characters are accumulated to make a token, which is then interpreted as number or symbol.
Macro characters trigger the invocation of the functions that can perform arbitrary parsing actions, including recursive invocation of the reader.Every character that appears in the input stream must be one of the following types:Illegal, whitespace, constituents ( [,],{,},?,and !)single escape, multiple escape or macro.
Parsing of numbers and symbolsWhen an extended token is read, it is interpreted as a number or symbol.Whitespace, macro or escape character will always be treated as alphabetic within an extended token.
Lisp syntax for numbersNumber::=integer|ratio|floating-point numberInteger::=[sign] {digit}+  [decimal-point]Ratio::= [sign] {digit}+ / {digit}+Floating-point-number::= [sign] {digit}* decimal-point {digit}+ [exponent]| [sign] {digit}+ [decimal-number {digit}*] exponentSign::= +|-Decimal-point::= .Digit::= 0|1|2|3|4|5|6|7|8|9Exponent::= exponent-marker [sign] {digit}+Exponent-marker::= e|s|f|d|l|E|S|F|D|L
Token must satisfy the following requirements:It consists entirely of digits, signs (+ or -), ratio markers (/), decimal points(.), extension characters(^ or _), and number markers.It consists at least one digit.It begins with a digit, sign, decimal point, or extension character.It does not end with a sign.Ex: 1b5000, 777777q, 1.7J, ^-43^, 3.1.2.6 etc.
symbolsThe following are always treated as symbols:*read-base*The value of read base controls the interpretation  of tokens by read as being integers or ratios.Its value is the radix in which the integers or ratios are to be read.The value must be any integer from 2 to 36,and it is normally 10. for ex if the *read-base* is set as 16(hexadecimal radix),  variables with names such as a,b,f , bad and face will be treated by the reader as numbers./         /5       +    1+     1-   foo+ ab.cd   -    ^        ^/-
*read-supress*if this value is set as nil, the Lisp reader operates normally, when it is not null the most interesting operation of the reader are suppressed.*read-eval* its default value is always t, if *read-eval* is false. Reader macro signals an error.
Macro charactersWhen a macro character is encountered, then the function associated with that macro is invoked and may produce an object to be returned.Macro characters are normally defined as follows:   The left parenthesis initiates reading a pair of list. The function read is called recursively to read successive objects until a right parenthesis is found to be next in the input stream. A list of objects read are returned.
‘ single-quote provides an abbreviation to make it easier to put constants in the programs.; is used to write comments.“ double-quote character represents the printed representation of a string.A back-quote is followed by a template, a picture of a data structure to be built.# is dispatching macro-character. It reads an optional digit string and then one more character, and uses that character to select a function to run as a macro-character function.
Standard dispatching macro character syntax #\x reads in a character object that represents a character x.#\name1 reads in as the character object whose name is name1. The name1 should have the syntax of the symbol.# ’ is an abbreviation for (function foo)A series of representations of objects enclosed by #( and )is read as a simple vector of those objects.If unsigned decimal integer appears between the # and (, it specifies explicitly the length of the vector.
#:foo requires foo to have a syntax of an unqualified symbol name.It denotes an uninterened symbol whose name is foo.Every time an uninterended symbol is created when this symbol is encountered.#,foo is read as the object resulting from the evaluation of the lisp object represented by foo, which may be the printed representation of any lisp object.#B reads rational in binary(radix 2) ex:#B110113#o reads rational in octal(radix 8) ex: #o777511#X reads rational in hexadecimal(radix 16) ex: #xFoo3840
#nA constructs an n-dimensional arrayEx: #2A ((0 1 5) (foo 2(hot dog))) represents a 2 cross 3 matrix: 0  1  5                             f00 2 (hot dog)#s (name slot1 value1 slot2 value2….) denotes a structure.#+ syntax provides a read time conditionality facility; the syntax is #+feature form#- form is equivalent to #+(not feature) form.If feature is true, then this syntax represents a lisp object whose printed representation is form.If the feature is false, then this syntax is effectively white space.
The following names are standards across all implementations:Newline, spaceRubout  delete characterPage the form-feed or page-separator characterTab the tabulate character Return carriage return characterLinefeed the line-feed character
Read tableRead table is the data structure used to control the reader.It has information about the syntax of each character.*read-table* is the current read tableTo program the reader for a different syntax, begin with the copy of the standard common lisp read table and then customize the individual characters within the copy.Copy-readtable &optional from-readtable to read-table
readtable case readtable is a function used to control the readers interpretation of the case.It provides access to a slot in the read table.The possible values of the slots are::upcase replaceable characters are converted to upper case:downcase replaceable characters are converted into lower case:preserve the cases of all characters remain unchanged:invert all replicable characters of same case are converted to opposite case
Input functionsCharacters in inputs take optional arguments called:Input-streamarguments is the argument from which to obtain the input from.
eof-error-p argument controls if the input is from a file, and end of file is reached.
If eof-error-p is true , an error will be signaled at the end of the file. If it is false, then no error is signaled, instead it returns eof-value.
if end-of-file is encountered and eof-error-p argument is not nil, the kind of error that is signaled may depend on the value of recursive-p.read &optional input-stream eof-error-p eof-value recursive-preads in the printed representation of the lisp object from the input stream, builds a corresponding lisp object, and returns the object.read-delimited-list char &optional input-stream recursive-pthis reads objects from the stream until the next character after an object representation is a char.read-line &optional input-stream eof-error-p eof-value recursive-pread-line a line of text terminated by a new-line.It returns the line as a character string. read-char &optional input-stream eof-error-p eof-value recursive-p read-char input one character from the input stream and returns it as character object.
Unread-char character &optional input-stream unread-char puts the character onto the front of the input-stream. listen &optional input-stream The predicate listen is true if there is a character immediately available from the input stream, and false if not. clear-input &optional input-streamClears any buffered input associated with the input stream. Read-byte binary-input-stream &optional eof-error-p eof-value read-byte tread one byte from the binary input stream and returns it in the form of an integer.
Output functions that operate on stream of functionsThese functions take an optional argument output-stream(defaults to variable *standard-output*) on where to send the output. write object &key :stream :escape :radix :base :circle :pretty :level :length :case :gensym :array: readable: right-margin :miser-width :lines and :pprint-dispatchthe printed representation of the object is written to the output stream specified by :stream, which defaults to the value *standard-output* The other keyword arguments specify values used to control the generation of the printed representation.
Prin1 object &optional output-streamprin1 outputs the printed representation  of object to output-stream.Print object &optional output-streamprinted representation of the object is preceded by newline and followed by a space.PPrin1 object &optional output-streamtrailing space is omitted and the object is printed with the *print-pretty* flag non-nil to produce “pretty” output.Princ object &optional output-stream Is similar to prin1 except that the output has no escape characters.
Write-char character &optional output-streamoutputs the character to the output stream and returns the characterWrite-string string &optional output-stream &key :start  :endWrite-line string &optional output-stream &key :start  :endwrites the character of the specified substring to the output-stream.The :start and :end delimit a substring of string in usual manner. write-lined does the same thing but then outputs a new-line afterwards.
finish-output &optional output-stream Attempts to ensure that all the output sent to the output stream has reached the destination, only then returns nil.force-output &optional output-streaminitiates the emptying of any internal buffers and returns nil without waiting for completion.clear-output &optional output-streamAttempts to abort any outstanding poutput operation in progress in order to allow as less output as possible.Output to binary streams:Write-byte integer binary-output-stream write-byte returns one byte, the value of the integer.
Formatted outputThe function format is used for producing nicely formatted text.format destination control-string &rest argumentsFormat outputs the characters of control stringA format directive consists of a tilde(~) , optional prefix parameters separated by commas, optional colon( : ) and ( @ ) sign modifiers, and a single character indicating what kind of directive this is.

More Related Content

What's hot (20)

Nested queries in database
Nested queries in databaseNested queries in database
Nested queries in database
Satya P. Joshi
 
Top Down Parsing, Predictive Parsing
Top Down Parsing, Predictive ParsingTop Down Parsing, Predictive Parsing
Top Down Parsing, Predictive Parsing
Tanzeela_Hussain
 
Ll(1) Parser in Compilers
Ll(1) Parser in CompilersLl(1) Parser in Compilers
Ll(1) Parser in Compilers
Mahbubur Rahman
 
Type checking in compiler design
Type checking in compiler designType checking in compiler design
Type checking in compiler design
Sudip Singh
 
BNF & EBNF
BNF & EBNFBNF & EBNF
BNF & EBNF
AshaniDickowita
 
Ensemble methods in machine learning
Ensemble methods in machine learningEnsemble methods in machine learning
Ensemble methods in machine learning
SANTHOSH RAJA M G
 
Huffman Coding Algorithm Presentation
Huffman Coding Algorithm PresentationHuffman Coding Algorithm Presentation
Huffman Coding Algorithm Presentation
Akm Monir
 
Complete dbms notes
Complete dbms notesComplete dbms notes
Complete dbms notes
Tanya Makkar
 
Context free grammars
Context free grammarsContext free grammars
Context free grammars
Ronak Thakkar
 
Presentation on "Knowledge acquisition & validation"
  Presentation on "Knowledge acquisition & validation"  Presentation on "Knowledge acquisition & validation"
Presentation on "Knowledge acquisition & validation"
Aditya Sarkar
 
Lecture 01 introduction to compiler
Lecture 01 introduction to compilerLecture 01 introduction to compiler
Lecture 01 introduction to compiler
Iffat Anjum
 
Functional dependency
Functional dependencyFunctional dependency
Functional dependency
Dashani Rajapaksha
 
Production System in AI
Production System in AIProduction System in AI
Production System in AI
Bharat Bhushan
 
LR Parsing
LR ParsingLR Parsing
LR Parsing
Eelco Visser
 
Decision tree in artificial intelligence
Decision tree in artificial intelligenceDecision tree in artificial intelligence
Decision tree in artificial intelligence
MdAlAmin187
 
PAC Learning
PAC LearningPAC Learning
PAC Learning
Sanghyuk Chun
 
System Programming Unit IV
System Programming Unit IVSystem Programming Unit IV
System Programming Unit IV
Manoj Patil
 
P code
P codeP code
P code
Sandeep Rv
 
Functions in c
Functions in cFunctions in c
Functions in c
sunila tharagaturi
 
KNOWLEDGE REPRESENTATION ISSUES.ppt
KNOWLEDGE REPRESENTATION ISSUES.pptKNOWLEDGE REPRESENTATION ISSUES.ppt
KNOWLEDGE REPRESENTATION ISSUES.ppt
SuneethaChittineni
 
Nested queries in database
Nested queries in databaseNested queries in database
Nested queries in database
Satya P. Joshi
 
Top Down Parsing, Predictive Parsing
Top Down Parsing, Predictive ParsingTop Down Parsing, Predictive Parsing
Top Down Parsing, Predictive Parsing
Tanzeela_Hussain
 
Ll(1) Parser in Compilers
Ll(1) Parser in CompilersLl(1) Parser in Compilers
Ll(1) Parser in Compilers
Mahbubur Rahman
 
Type checking in compiler design
Type checking in compiler designType checking in compiler design
Type checking in compiler design
Sudip Singh
 
Ensemble methods in machine learning
Ensemble methods in machine learningEnsemble methods in machine learning
Ensemble methods in machine learning
SANTHOSH RAJA M G
 
Huffman Coding Algorithm Presentation
Huffman Coding Algorithm PresentationHuffman Coding Algorithm Presentation
Huffman Coding Algorithm Presentation
Akm Monir
 
Complete dbms notes
Complete dbms notesComplete dbms notes
Complete dbms notes
Tanya Makkar
 
Context free grammars
Context free grammarsContext free grammars
Context free grammars
Ronak Thakkar
 
Presentation on "Knowledge acquisition & validation"
  Presentation on "Knowledge acquisition & validation"  Presentation on "Knowledge acquisition & validation"
Presentation on "Knowledge acquisition & validation"
Aditya Sarkar
 
Lecture 01 introduction to compiler
Lecture 01 introduction to compilerLecture 01 introduction to compiler
Lecture 01 introduction to compiler
Iffat Anjum
 
Production System in AI
Production System in AIProduction System in AI
Production System in AI
Bharat Bhushan
 
Decision tree in artificial intelligence
Decision tree in artificial intelligenceDecision tree in artificial intelligence
Decision tree in artificial intelligence
MdAlAmin187
 
System Programming Unit IV
System Programming Unit IVSystem Programming Unit IV
System Programming Unit IV
Manoj Patil
 
KNOWLEDGE REPRESENTATION ISSUES.ppt
KNOWLEDGE REPRESENTATION ISSUES.pptKNOWLEDGE REPRESENTATION ISSUES.ppt
KNOWLEDGE REPRESENTATION ISSUES.ppt
SuneethaChittineni
 

Viewers also liked (20)

LISP: Data types in lisp
LISP: Data types in lispLISP: Data types in lisp
LISP: Data types in lisp
DataminingTools Inc
 
PROLOG: Introduction To Prolog
PROLOG: Introduction To PrologPROLOG: Introduction To Prolog
PROLOG: Introduction To Prolog
DataminingTools Inc
 
Facebook: An Innovative Influenza Pandemic Early Warning System
Facebook: An Innovative Influenza Pandemic Early Warning SystemFacebook: An Innovative Influenza Pandemic Early Warning System
Facebook: An Innovative Influenza Pandemic Early Warning System
Chen Luo
 
WEKA: Output Knowledge Representation
WEKA: Output Knowledge RepresentationWEKA: Output Knowledge Representation
WEKA: Output Knowledge Representation
DataminingTools Inc
 
PresentacióN De Quimica
PresentacióN De QuimicaPresentacióN De Quimica
PresentacióN De Quimica
guestf6a53c
 
Kidical Mass Presentation
Kidical Mass PresentationKidical Mass Presentation
Kidical Mass Presentation
Eugene SRTS
 
MS Sql Server: Manipulating Database
MS Sql Server: Manipulating DatabaseMS Sql Server: Manipulating Database
MS Sql Server: Manipulating Database
DataminingTools Inc
 
XL-Miner: Timeseries
XL-Miner: TimeseriesXL-Miner: Timeseries
XL-Miner: Timeseries
DataminingTools Inc
 
Data Applied:Decision Trees
Data Applied:Decision TreesData Applied:Decision Trees
Data Applied:Decision Trees
DataminingTools Inc
 
Procedures And Functions in Matlab
Procedures And Functions in MatlabProcedures And Functions in Matlab
Procedures And Functions in Matlab
DataminingTools Inc
 
Control Statements in Matlab
Control Statements in  MatlabControl Statements in  Matlab
Control Statements in Matlab
DataminingTools Inc
 
Bernoullis Random Variables And Binomial Distribution
Bernoullis Random Variables And Binomial DistributionBernoullis Random Variables And Binomial Distribution
Bernoullis Random Variables And Binomial Distribution
DataminingTools Inc
 
R: Apply Functions
R: Apply FunctionsR: Apply Functions
R: Apply Functions
DataminingTools Inc
 
MS Sql Server: Doing Calculations With Functions
MS Sql Server: Doing Calculations With FunctionsMS Sql Server: Doing Calculations With Functions
MS Sql Server: Doing Calculations With Functions
DataminingTools Inc
 
Classification Continued
Classification ContinuedClassification Continued
Classification Continued
DataminingTools Inc
 
HistoriografíA Latina LatíN Ii
HistoriografíA Latina LatíN IiHistoriografíA Latina LatíN Ii
HistoriografíA Latina LatíN Ii
lara
 
Anime
AnimeAnime
Anime
Yarex Mussa Gonzalez
 
Continuous Random Variables
Continuous Random VariablesContinuous Random Variables
Continuous Random Variables
DataminingTools Inc
 
Pentaho: Reporting Solution Development
Pentaho: Reporting Solution DevelopmentPentaho: Reporting Solution Development
Pentaho: Reporting Solution Development
DataminingTools Inc
 
Facebook: An Innovative Influenza Pandemic Early Warning System
Facebook: An Innovative Influenza Pandemic Early Warning SystemFacebook: An Innovative Influenza Pandemic Early Warning System
Facebook: An Innovative Influenza Pandemic Early Warning System
Chen Luo
 
WEKA: Output Knowledge Representation
WEKA: Output Knowledge RepresentationWEKA: Output Knowledge Representation
WEKA: Output Knowledge Representation
DataminingTools Inc
 
PresentacióN De Quimica
PresentacióN De QuimicaPresentacióN De Quimica
PresentacióN De Quimica
guestf6a53c
 
Kidical Mass Presentation
Kidical Mass PresentationKidical Mass Presentation
Kidical Mass Presentation
Eugene SRTS
 
MS Sql Server: Manipulating Database
MS Sql Server: Manipulating DatabaseMS Sql Server: Manipulating Database
MS Sql Server: Manipulating Database
DataminingTools Inc
 
Procedures And Functions in Matlab
Procedures And Functions in MatlabProcedures And Functions in Matlab
Procedures And Functions in Matlab
DataminingTools Inc
 
Bernoullis Random Variables And Binomial Distribution
Bernoullis Random Variables And Binomial DistributionBernoullis Random Variables And Binomial Distribution
Bernoullis Random Variables And Binomial Distribution
DataminingTools Inc
 
MS Sql Server: Doing Calculations With Functions
MS Sql Server: Doing Calculations With FunctionsMS Sql Server: Doing Calculations With Functions
MS Sql Server: Doing Calculations With Functions
DataminingTools Inc
 
HistoriografíA Latina LatíN Ii
HistoriografíA Latina LatíN IiHistoriografíA Latina LatíN Ii
HistoriografíA Latina LatíN Ii
lara
 
Pentaho: Reporting Solution Development
Pentaho: Reporting Solution DevelopmentPentaho: Reporting Solution Development
Pentaho: Reporting Solution Development
DataminingTools Inc
 
Ad

Similar to LISP: Input And Output (20)

Introduction To Lisp
Introduction To LispIntroduction To Lisp
Introduction To Lisp
kyleburton
 
LISP: Data types in lisp
LISP: Data types in lispLISP: Data types in lisp
LISP: Data types in lisp
LISP Content
 
LISP:Program structure in lisp
LISP:Program structure in lispLISP:Program structure in lisp
LISP:Program structure in lisp
DataminingTools Inc
 
LISP: Program structure in lisp
LISP: Program structure in lispLISP: Program structure in lisp
LISP: Program structure in lisp
LISP Content
 
LISP:Symbols and packages in lisp
LISP:Symbols and packages in lispLISP:Symbols and packages in lisp
LISP:Symbols and packages in lisp
DataminingTools Inc
 
LISP: Symbols and packages in lisp
LISP: Symbols and packages in lispLISP: Symbols and packages in lisp
LISP: Symbols and packages in lisp
LISP Content
 
LISP:Control Structures In Lisp
LISP:Control Structures In LispLISP:Control Structures In Lisp
LISP:Control Structures In Lisp
DataminingTools Inc
 
LISP: Control Structures In Lisp
LISP: Control Structures In LispLISP: Control Structures In Lisp
LISP: Control Structures In Lisp
LISP Content
 
AI UNIT-4 Final (2).pptx
AI UNIT-4 Final (2).pptxAI UNIT-4 Final (2).pptx
AI UNIT-4 Final (2).pptx
prakashvs7
 
06 ruby variables
06 ruby variables06 ruby variables
06 ruby variables
Walker Maidana
 
LISP: Macros in lisp
LISP: Macros in lispLISP: Macros in lisp
LISP: Macros in lisp
DataminingTools Inc
 
LISP: Macros in lisp
LISP: Macros in lispLISP: Macros in lisp
LISP: Macros in lisp
LISP Content
 
AI Programming language (LISP)
AI Programming language (LISP)AI Programming language (LISP)
AI Programming language (LISP)
Dr. SURBHI SAROHA
 
Programming For As Comp
Programming For As CompProgramming For As Comp
Programming For As Comp
David Halliday
 
Programming For As Comp
Programming For As CompProgramming For As Comp
Programming For As Comp
David Halliday
 
F# Console class
F# Console classF# Console class
F# Console class
DrRajeshreeKhande
 
LISP:Loops In Lisp
LISP:Loops In LispLISP:Loops In Lisp
LISP:Loops In Lisp
DataminingTools Inc
 
LISP: Loops In Lisp
LISP: Loops In LispLISP: Loops In Lisp
LISP: Loops In Lisp
LISP Content
 
A brief introduction to lisp language
A brief introduction to lisp languageA brief introduction to lisp language
A brief introduction to lisp language
David Gu
 
Joshua Wehner - Tomorrows Programming Languages Today
Joshua Wehner - Tomorrows Programming Languages TodayJoshua Wehner - Tomorrows Programming Languages Today
Joshua Wehner - Tomorrows Programming Languages Today
Refresh Events
 
Introduction To Lisp
Introduction To LispIntroduction To Lisp
Introduction To Lisp
kyleburton
 
LISP: Data types in lisp
LISP: Data types in lispLISP: Data types in lisp
LISP: Data types in lisp
LISP Content
 
LISP: Program structure in lisp
LISP: Program structure in lispLISP: Program structure in lisp
LISP: Program structure in lisp
LISP Content
 
LISP:Symbols and packages in lisp
LISP:Symbols and packages in lispLISP:Symbols and packages in lisp
LISP:Symbols and packages in lisp
DataminingTools Inc
 
LISP: Symbols and packages in lisp
LISP: Symbols and packages in lispLISP: Symbols and packages in lisp
LISP: Symbols and packages in lisp
LISP Content
 
LISP: Control Structures In Lisp
LISP: Control Structures In LispLISP: Control Structures In Lisp
LISP: Control Structures In Lisp
LISP Content
 
AI UNIT-4 Final (2).pptx
AI UNIT-4 Final (2).pptxAI UNIT-4 Final (2).pptx
AI UNIT-4 Final (2).pptx
prakashvs7
 
LISP: Macros in lisp
LISP: Macros in lispLISP: Macros in lisp
LISP: Macros in lisp
LISP Content
 
AI Programming language (LISP)
AI Programming language (LISP)AI Programming language (LISP)
AI Programming language (LISP)
Dr. SURBHI SAROHA
 
Programming For As Comp
Programming For As CompProgramming For As Comp
Programming For As Comp
David Halliday
 
Programming For As Comp
Programming For As CompProgramming For As Comp
Programming For As Comp
David Halliday
 
LISP: Loops In Lisp
LISP: Loops In LispLISP: Loops In Lisp
LISP: Loops In Lisp
LISP Content
 
A brief introduction to lisp language
A brief introduction to lisp languageA brief introduction to lisp language
A brief introduction to lisp language
David Gu
 
Joshua Wehner - Tomorrows Programming Languages Today
Joshua Wehner - Tomorrows Programming Languages TodayJoshua Wehner - Tomorrows Programming Languages Today
Joshua Wehner - Tomorrows Programming Languages Today
Refresh Events
 
Ad

More from DataminingTools Inc (20)

Terminology Machine Learning
Terminology Machine LearningTerminology Machine Learning
Terminology Machine Learning
DataminingTools Inc
 
Techniques Machine Learning
Techniques Machine LearningTechniques Machine Learning
Techniques Machine Learning
DataminingTools Inc
 
Machine learning Introduction
Machine learning IntroductionMachine learning Introduction
Machine learning Introduction
DataminingTools Inc
 
Areas of machine leanring
Areas of machine leanringAreas of machine leanring
Areas of machine leanring
DataminingTools Inc
 
AI: Planning and AI
AI: Planning and AIAI: Planning and AI
AI: Planning and AI
DataminingTools Inc
 
AI: Logic in AI 2
AI: Logic in AI 2AI: Logic in AI 2
AI: Logic in AI 2
DataminingTools Inc
 
AI: Logic in AI
AI: Logic in AIAI: Logic in AI
AI: Logic in AI
DataminingTools Inc
 
AI: Learning in AI 2
AI: Learning in AI 2AI: Learning in AI 2
AI: Learning in AI 2
DataminingTools Inc
 
AI: Learning in AI
AI: Learning in AI AI: Learning in AI
AI: Learning in AI
DataminingTools Inc
 
AI: Introduction to artificial intelligence
AI: Introduction to artificial intelligenceAI: Introduction to artificial intelligence
AI: Introduction to artificial intelligence
DataminingTools Inc
 
AI: Belief Networks
AI: Belief NetworksAI: Belief Networks
AI: Belief Networks
DataminingTools Inc
 
AI: AI & Searching
AI: AI & SearchingAI: AI & Searching
AI: AI & Searching
DataminingTools Inc
 
AI: AI & Problem Solving
AI: AI & Problem SolvingAI: AI & Problem Solving
AI: AI & Problem Solving
DataminingTools Inc
 
Data Mining: Text and web mining
Data Mining: Text and web miningData Mining: Text and web mining
Data Mining: Text and web mining
DataminingTools Inc
 
Data Mining: Outlier analysis
Data Mining: Outlier analysisData Mining: Outlier analysis
Data Mining: Outlier analysis
DataminingTools Inc
 
Data Mining: Mining stream time series and sequence data
Data Mining: Mining stream time series and sequence dataData Mining: Mining stream time series and sequence data
Data Mining: Mining stream time series and sequence data
DataminingTools Inc
 
Data Mining: Mining ,associations, and correlations
Data Mining: Mining ,associations, and correlationsData Mining: Mining ,associations, and correlations
Data Mining: Mining ,associations, and correlations
DataminingTools Inc
 
Data Mining: Graph mining and social network analysis
Data Mining: Graph mining and social network analysisData Mining: Graph mining and social network analysis
Data Mining: Graph mining and social network analysis
DataminingTools Inc
 
Data warehouse and olap technology
Data warehouse and olap technologyData warehouse and olap technology
Data warehouse and olap technology
DataminingTools Inc
 
Data Mining: Data processing
Data Mining: Data processingData Mining: Data processing
Data Mining: Data processing
DataminingTools Inc
 
AI: Introduction to artificial intelligence
AI: Introduction to artificial intelligenceAI: Introduction to artificial intelligence
AI: Introduction to artificial intelligence
DataminingTools Inc
 
Data Mining: Text and web mining
Data Mining: Text and web miningData Mining: Text and web mining
Data Mining: Text and web mining
DataminingTools Inc
 
Data Mining: Mining stream time series and sequence data
Data Mining: Mining stream time series and sequence dataData Mining: Mining stream time series and sequence data
Data Mining: Mining stream time series and sequence data
DataminingTools Inc
 
Data Mining: Mining ,associations, and correlations
Data Mining: Mining ,associations, and correlationsData Mining: Mining ,associations, and correlations
Data Mining: Mining ,associations, and correlations
DataminingTools Inc
 
Data Mining: Graph mining and social network analysis
Data Mining: Graph mining and social network analysisData Mining: Graph mining and social network analysis
Data Mining: Graph mining and social network analysis
DataminingTools Inc
 
Data warehouse and olap technology
Data warehouse and olap technologyData warehouse and olap technology
Data warehouse and olap technology
DataminingTools Inc
 

LISP: Input And Output

  • 1. Lisp Input and Output
  • 2. overviewRead function.Parsing of numbers and symbolsMacro charactersInput functionsOutput functionsQuerying the user
  • 3. Printed representationLisp presents a representation of most objects in printed representation which is used for input/output purposes.Functions such as print takes a lisp object and send the characters of its printed representation to a stream.The collection of routines that does this is called (Lisp)printer.
  • 4. What read function acceptsLisp reader accepts characters, interpret them as a printed representation of the lisp object, and construct and return such an object.The reader can also be used as a lexical analyzer for a more general user-written parser.The reader is organized as a recursive descent parser.
  • 5. The reader operates by reading a character from the input stream and treating it in one of the three ways:Whitespace characters are served as separators but otherwise ignored.
  • 6. Constituent and escape characters are accumulated to make a token, which is then interpreted as number or symbol.
  • 7. Macro characters trigger the invocation of the functions that can perform arbitrary parsing actions, including recursive invocation of the reader.Every character that appears in the input stream must be one of the following types:Illegal, whitespace, constituents ( [,],{,},?,and !)single escape, multiple escape or macro.
  • 8. Parsing of numbers and symbolsWhen an extended token is read, it is interpreted as a number or symbol.Whitespace, macro or escape character will always be treated as alphabetic within an extended token.
  • 9. Lisp syntax for numbersNumber::=integer|ratio|floating-point numberInteger::=[sign] {digit}+ [decimal-point]Ratio::= [sign] {digit}+ / {digit}+Floating-point-number::= [sign] {digit}* decimal-point {digit}+ [exponent]| [sign] {digit}+ [decimal-number {digit}*] exponentSign::= +|-Decimal-point::= .Digit::= 0|1|2|3|4|5|6|7|8|9Exponent::= exponent-marker [sign] {digit}+Exponent-marker::= e|s|f|d|l|E|S|F|D|L
  • 10. Token must satisfy the following requirements:It consists entirely of digits, signs (+ or -), ratio markers (/), decimal points(.), extension characters(^ or _), and number markers.It consists at least one digit.It begins with a digit, sign, decimal point, or extension character.It does not end with a sign.Ex: 1b5000, 777777q, 1.7J, ^-43^, 3.1.2.6 etc.
  • 11. symbolsThe following are always treated as symbols:*read-base*The value of read base controls the interpretation of tokens by read as being integers or ratios.Its value is the radix in which the integers or ratios are to be read.The value must be any integer from 2 to 36,and it is normally 10. for ex if the *read-base* is set as 16(hexadecimal radix), variables with names such as a,b,f , bad and face will be treated by the reader as numbers./ /5 + 1+ 1- foo+ ab.cd - ^ ^/-
  • 12. *read-supress*if this value is set as nil, the Lisp reader operates normally, when it is not null the most interesting operation of the reader are suppressed.*read-eval* its default value is always t, if *read-eval* is false. Reader macro signals an error.
  • 13. Macro charactersWhen a macro character is encountered, then the function associated with that macro is invoked and may produce an object to be returned.Macro characters are normally defined as follows: The left parenthesis initiates reading a pair of list. The function read is called recursively to read successive objects until a right parenthesis is found to be next in the input stream. A list of objects read are returned.
  • 14. ‘ single-quote provides an abbreviation to make it easier to put constants in the programs.; is used to write comments.“ double-quote character represents the printed representation of a string.A back-quote is followed by a template, a picture of a data structure to be built.# is dispatching macro-character. It reads an optional digit string and then one more character, and uses that character to select a function to run as a macro-character function.
  • 15. Standard dispatching macro character syntax #\x reads in a character object that represents a character x.#\name1 reads in as the character object whose name is name1. The name1 should have the syntax of the symbol.# ’ is an abbreviation for (function foo)A series of representations of objects enclosed by #( and )is read as a simple vector of those objects.If unsigned decimal integer appears between the # and (, it specifies explicitly the length of the vector.
  • 16. #:foo requires foo to have a syntax of an unqualified symbol name.It denotes an uninterened symbol whose name is foo.Every time an uninterended symbol is created when this symbol is encountered.#,foo is read as the object resulting from the evaluation of the lisp object represented by foo, which may be the printed representation of any lisp object.#B reads rational in binary(radix 2) ex:#B110113#o reads rational in octal(radix 8) ex: #o777511#X reads rational in hexadecimal(radix 16) ex: #xFoo3840
  • 17. #nA constructs an n-dimensional arrayEx: #2A ((0 1 5) (foo 2(hot dog))) represents a 2 cross 3 matrix: 0 1 5 f00 2 (hot dog)#s (name slot1 value1 slot2 value2….) denotes a structure.#+ syntax provides a read time conditionality facility; the syntax is #+feature form#- form is equivalent to #+(not feature) form.If feature is true, then this syntax represents a lisp object whose printed representation is form.If the feature is false, then this syntax is effectively white space.
  • 18. The following names are standards across all implementations:Newline, spaceRubout  delete characterPage the form-feed or page-separator characterTab the tabulate character Return carriage return characterLinefeed the line-feed character
  • 19. Read tableRead table is the data structure used to control the reader.It has information about the syntax of each character.*read-table* is the current read tableTo program the reader for a different syntax, begin with the copy of the standard common lisp read table and then customize the individual characters within the copy.Copy-readtable &optional from-readtable to read-table
  • 20. readtable case readtable is a function used to control the readers interpretation of the case.It provides access to a slot in the read table.The possible values of the slots are::upcase replaceable characters are converted to upper case:downcase replaceable characters are converted into lower case:preserve the cases of all characters remain unchanged:invert all replicable characters of same case are converted to opposite case
  • 21. Input functionsCharacters in inputs take optional arguments called:Input-streamarguments is the argument from which to obtain the input from.
  • 22. eof-error-p argument controls if the input is from a file, and end of file is reached.
  • 23. If eof-error-p is true , an error will be signaled at the end of the file. If it is false, then no error is signaled, instead it returns eof-value.
  • 24. if end-of-file is encountered and eof-error-p argument is not nil, the kind of error that is signaled may depend on the value of recursive-p.read &optional input-stream eof-error-p eof-value recursive-preads in the printed representation of the lisp object from the input stream, builds a corresponding lisp object, and returns the object.read-delimited-list char &optional input-stream recursive-pthis reads objects from the stream until the next character after an object representation is a char.read-line &optional input-stream eof-error-p eof-value recursive-pread-line a line of text terminated by a new-line.It returns the line as a character string. read-char &optional input-stream eof-error-p eof-value recursive-p read-char input one character from the input stream and returns it as character object.
  • 25. Unread-char character &optional input-stream unread-char puts the character onto the front of the input-stream. listen &optional input-stream The predicate listen is true if there is a character immediately available from the input stream, and false if not. clear-input &optional input-streamClears any buffered input associated with the input stream. Read-byte binary-input-stream &optional eof-error-p eof-value read-byte tread one byte from the binary input stream and returns it in the form of an integer.
  • 26. Output functions that operate on stream of functionsThese functions take an optional argument output-stream(defaults to variable *standard-output*) on where to send the output. write object &key :stream :escape :radix :base :circle :pretty :level :length :case :gensym :array: readable: right-margin :miser-width :lines and :pprint-dispatchthe printed representation of the object is written to the output stream specified by :stream, which defaults to the value *standard-output* The other keyword arguments specify values used to control the generation of the printed representation.
  • 27. Prin1 object &optional output-streamprin1 outputs the printed representation of object to output-stream.Print object &optional output-streamprinted representation of the object is preceded by newline and followed by a space.PPrin1 object &optional output-streamtrailing space is omitted and the object is printed with the *print-pretty* flag non-nil to produce “pretty” output.Princ object &optional output-stream Is similar to prin1 except that the output has no escape characters.
  • 28. Write-char character &optional output-streamoutputs the character to the output stream and returns the characterWrite-string string &optional output-stream &key :start :endWrite-line string &optional output-stream &key :start :endwrites the character of the specified substring to the output-stream.The :start and :end delimit a substring of string in usual manner. write-lined does the same thing but then outputs a new-line afterwards.
  • 29. finish-output &optional output-stream Attempts to ensure that all the output sent to the output stream has reached the destination, only then returns nil.force-output &optional output-streaminitiates the emptying of any internal buffers and returns nil without waiting for completion.clear-output &optional output-streamAttempts to abort any outstanding poutput operation in progress in order to allow as less output as possible.Output to binary streams:Write-byte integer binary-output-stream write-byte returns one byte, the value of the integer.
  • 30. Formatted outputThe function format is used for producing nicely formatted text.format destination control-string &rest argumentsFormat outputs the characters of control stringA format directive consists of a tilde(~) , optional prefix parameters separated by commas, optional colon( : ) and ( @ ) sign modifiers, and a single character indicating what kind of directive this is.
  • 31. ~D, An arg, should be an integer is printed in decimal radix.Few examples for format function:(format nil “foo”) “foo”(setq x 5)(format nil “The answer is ~D.”, x)”The answer is 5.”(format nil “The answer is ~3D.”, x) “The answer is 5.”
  • 32. Querying the userThe following functions provide a convenient interface for asking the questions of the user.y-or-n-p &optional format-string &rest argumentsThis predicate is used for asking the user a question whose answer is either yes or no.It types a message if supplied.All input and output is performed using the stream in the global variable *query-io*
  • 33. Ex:(y-or-n-p “Produce Listing file?”) opens a pop-up asking “Produce Listing file?”with two options “Yes” and ‘no”. Returns T onyes else returns NIL.(y-or-n-p “Cannot connect to network host ~S. Retry?” host)Y-or-n-p must be used when the user waiting to be questioned before preceding further.