SlideShare a Scribd company logo
1 of 30
 Lisp Input and Output
overview Read function. Parsing of numbers and symbols Macro characters Input functions Output functions Querying the user
Printed representation Lisp 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 accepts Lisp 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: ,[object Object]
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 symbols When 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 numbers Number::=integer|ratio|floating-point number Integer::=[sign] {digit}+  [decimal-point] Ratio::= [sign] {digit}+ / {digit}+ Floating-point-number::= [sign] {digit}* decimal-point {digit}+ [exponent]| [sign] {digit}+ [decimal-number {digit}*] exponent Sign::= +|- Decimal-point::= . Digit::= 0|1|2|3|4|5|6|7|8|9 Exponent::= 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.
symbols The 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 characters When 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  # reads in a character object that represents a character x. #ame1 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 array Ex: #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, space Rubout  delete character Page the form-feed or page-separator character Tab the tabulate character  Return carriage return character Linefeed the line-feed character
Read table Read 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 table To 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 functions Characters in inputs take optional arguments called: ,[object Object]
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.,[object 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-stream ,[object Object],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 functions These 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 character Write-string string &optional output-stream &key :start  :end Write-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-stream ,[object Object],Output to binary streams: Write-byte integer binary-output-stream  write-byte returns one byte, the value of the integer.
Formatted output The function format is used for producing nicely formatted text. ,[object Object],Format outputs the characters of control string A 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

A Role of Lexical Analyzer
A Role of Lexical AnalyzerA Role of Lexical Analyzer
A Role of Lexical AnalyzerArchana Gopinath
 
MANAGING INPUT AND OUTPUT OPERATIONS IN C MRS.SOWMYA JYOTHI.pdf
MANAGING INPUT AND OUTPUT OPERATIONS IN C    MRS.SOWMYA JYOTHI.pdfMANAGING INPUT AND OUTPUT OPERATIONS IN C    MRS.SOWMYA JYOTHI.pdf
MANAGING INPUT AND OUTPUT OPERATIONS IN C MRS.SOWMYA JYOTHI.pdfSowmyaJyothi3
 
Lex and Yacc ppt
Lex and Yacc pptLex and Yacc ppt
Lex and Yacc pptpssraikar
 
Lexical Analyzer Implementation
Lexical Analyzer ImplementationLexical Analyzer Implementation
Lexical Analyzer ImplementationAkhil Kaushik
 
3. Lexical analysis
3. Lexical analysis3. Lexical analysis
3. Lexical analysisSaeed Parsa
 
Lexical Analysis
Lexical AnalysisLexical Analysis
Lexical AnalysisMunni28
 
constants, variables and datatypes in C
constants, variables and datatypes in Cconstants, variables and datatypes in C
constants, variables and datatypes in CSahithi Naraparaju
 
Compiler design and lexical analyser
Compiler design and lexical analyserCompiler design and lexical analyser
Compiler design and lexical analyserabhishek gupta
 
Structure of c_program_to_input_output
Structure of c_program_to_input_outputStructure of c_program_to_input_output
Structure of c_program_to_input_outputAnil Dutt
 
pointer, structure ,union and intro to file handling
pointer, structure ,union and intro to file handlingpointer, structure ,union and intro to file handling
pointer, structure ,union and intro to file handlingRai University
 

What's hot (20)

A Role of Lexical Analyzer
A Role of Lexical AnalyzerA Role of Lexical Analyzer
A Role of Lexical Analyzer
 
C Tokens
C TokensC Tokens
C Tokens
 
Getting started with C++
Getting started with C++Getting started with C++
Getting started with C++
 
MANAGING INPUT AND OUTPUT OPERATIONS IN C MRS.SOWMYA JYOTHI.pdf
MANAGING INPUT AND OUTPUT OPERATIONS IN C    MRS.SOWMYA JYOTHI.pdfMANAGING INPUT AND OUTPUT OPERATIONS IN C    MRS.SOWMYA JYOTHI.pdf
MANAGING INPUT AND OUTPUT OPERATIONS IN C MRS.SOWMYA JYOTHI.pdf
 
Lex and Yacc ppt
Lex and Yacc pptLex and Yacc ppt
Lex and Yacc ppt
 
Lexical analysis-using-lex
Lexical analysis-using-lexLexical analysis-using-lex
Lexical analysis-using-lex
 
Lexical Analyzer Implementation
Lexical Analyzer ImplementationLexical Analyzer Implementation
Lexical Analyzer Implementation
 
Lexical analyzer
Lexical analyzerLexical analyzer
Lexical analyzer
 
1.Role lexical Analyzer
1.Role lexical Analyzer1.Role lexical Analyzer
1.Role lexical Analyzer
 
C++ Basics
C++ BasicsC++ Basics
C++ Basics
 
Lexical analyzer
Lexical analyzerLexical analyzer
Lexical analyzer
 
Assignment5
Assignment5Assignment5
Assignment5
 
3. Lexical analysis
3. Lexical analysis3. Lexical analysis
3. Lexical analysis
 
Lexical analyzer
Lexical analyzerLexical analyzer
Lexical analyzer
 
Lexical Analysis
Lexical AnalysisLexical Analysis
Lexical Analysis
 
constants, variables and datatypes in C
constants, variables and datatypes in Cconstants, variables and datatypes in C
constants, variables and datatypes in C
 
Compiler design and lexical analyser
Compiler design and lexical analyserCompiler design and lexical analyser
Compiler design and lexical analyser
 
Structure of c_program_to_input_output
Structure of c_program_to_input_outputStructure of c_program_to_input_output
Structure of c_program_to_input_output
 
pointer, structure ,union and intro to file handling
pointer, structure ,union and intro to file handlingpointer, structure ,union and intro to file handling
pointer, structure ,union and intro to file handling
 
Role-of-lexical-analysis
Role-of-lexical-analysisRole-of-lexical-analysis
Role-of-lexical-analysis
 

Viewers also liked

LISP: Errors In Lisp
LISP: Errors In LispLISP: Errors In Lisp
LISP: Errors In LispLISP Content
 
LISP: Control Structures In Lisp
LISP: Control Structures In LispLISP: Control Structures In Lisp
LISP: Control Structures In LispLISP Content
 
LISP: Object Sytstem Lisp
LISP: Object Sytstem LispLISP: Object Sytstem Lisp
LISP: Object Sytstem LispLISP Content
 
LISP:Declarations In Lisp
LISP:Declarations In LispLISP:Declarations In Lisp
LISP:Declarations In LispLISP Content
 
LISP: Loops In Lisp
LISP: Loops In LispLISP: Loops In Lisp
LISP: Loops In LispLISP Content
 
LISP: Introduction To Lisp
LISP: Introduction To LispLISP: Introduction To Lisp
LISP: Introduction To LispLISP Content
 
LISP: Macros in lisp
LISP: Macros in lispLISP: Macros in lisp
LISP: Macros in lispLISP Content
 
Lisp Programming Languge
Lisp Programming LangugeLisp Programming Languge
Lisp Programming LangugeYaser Jaradeh
 

Viewers also liked (9)

LISP: Errors In Lisp
LISP: Errors In LispLISP: Errors In Lisp
LISP: Errors In Lisp
 
LISP: Control Structures In Lisp
LISP: Control Structures In LispLISP: Control Structures In Lisp
LISP: Control Structures In Lisp
 
LISP: Object Sytstem Lisp
LISP: Object Sytstem LispLISP: Object Sytstem Lisp
LISP: Object Sytstem Lisp
 
LISP:Declarations In Lisp
LISP:Declarations In LispLISP:Declarations In Lisp
LISP:Declarations In Lisp
 
LISP: Loops In Lisp
LISP: Loops In LispLISP: Loops In Lisp
LISP: Loops In Lisp
 
LISP: Introduction To Lisp
LISP: Introduction To LispLISP: Introduction To Lisp
LISP: Introduction To Lisp
 
LISP: Macros in lisp
LISP: Macros in lispLISP: Macros in lisp
LISP: Macros in lisp
 
Hipogonadizm
HipogonadizmHipogonadizm
Hipogonadizm
 
Lisp Programming Languge
Lisp Programming LangugeLisp Programming Languge
Lisp Programming Languge
 

Similar to LISP: Input And Output

LISP: Data types in lisp
LISP: Data types in lispLISP: Data types in lisp
LISP: Data types in lispLISP Content
 
Python programming: Anonymous functions, String operations
Python programming: Anonymous functions, String operationsPython programming: Anonymous functions, String operations
Python programming: Anonymous functions, String operationsMegha V
 
AI UNIT-4 Final (2).pptx
AI UNIT-4 Final (2).pptxAI UNIT-4 Final (2).pptx
AI UNIT-4 Final (2).pptxprakashvs7
 
Introduction of bison
Introduction of bisonIntroduction of bison
Introduction of bisonvip_du
 
Current C++ code- parse-h -- This file contains the function prototype (1).pdf
Current C++ code- parse-h -- This file contains the function prototype (1).pdfCurrent C++ code- parse-h -- This file contains the function prototype (1).pdf
Current C++ code- parse-h -- This file contains the function prototype (1).pdfshyamsunder1211
 
Getting started with c++.pptx
Getting started with c++.pptxGetting started with c++.pptx
Getting started with c++.pptxAkash Baruah
 
Stream Based Input Output
Stream Based Input OutputStream Based Input Output
Stream Based Input OutputBharat17485
 
compiler Design course material chapter 2
compiler Design course material chapter 2compiler Design course material chapter 2
compiler Design course material chapter 2gadisaAdamu
 
Programming fundamental
Programming fundamentalProgramming fundamental
Programming fundamentalMukesh Thakur
 
Getting started with c++
Getting started with c++Getting started with c++
Getting started with c++K Durga Prasad
 
IMP PPT- Python programming fundamentals.pptx
IMP PPT- Python programming fundamentals.pptxIMP PPT- Python programming fundamentals.pptx
IMP PPT- Python programming fundamentals.pptxlemonchoos
 
Chapter 13.1.3
Chapter 13.1.3Chapter 13.1.3
Chapter 13.1.3patcha535
 
JavaScript – ECMAScript Basics By Satyen
JavaScript – ECMAScript Basics By SatyenJavaScript – ECMAScript Basics By Satyen
JavaScript – ECMAScript Basics By SatyenSatyen Pandya
 

Similar to LISP: Input And Output (20)

LISP: Data types in lisp
LISP: Data types in lispLISP: Data types in lisp
LISP: Data types in lisp
 
LISP: Data types in lisp
LISP: Data types in lispLISP: Data types in lisp
LISP: Data types in lisp
 
Python programming: Anonymous functions, String operations
Python programming: Anonymous functions, String operationsPython programming: Anonymous functions, String operations
Python programming: Anonymous functions, String operations
 
AI UNIT-4 Final (2).pptx
AI UNIT-4 Final (2).pptxAI UNIT-4 Final (2).pptx
AI UNIT-4 Final (2).pptx
 
Compilers Design
Compilers DesignCompilers Design
Compilers Design
 
Introduction of bison
Introduction of bisonIntroduction of bison
Introduction of bison
 
PHP Web Programming
PHP Web ProgrammingPHP Web Programming
PHP Web Programming
 
Current C++ code- parse-h -- This file contains the function prototype (1).pdf
Current C++ code- parse-h -- This file contains the function prototype (1).pdfCurrent C++ code- parse-h -- This file contains the function prototype (1).pdf
Current C++ code- parse-h -- This file contains the function prototype (1).pdf
 
Getting started with c++.pptx
Getting started with c++.pptxGetting started with c++.pptx
Getting started with c++.pptx
 
python_strings.pdf
python_strings.pdfpython_strings.pdf
python_strings.pdf
 
Introduction to R for beginners
Introduction to R for beginnersIntroduction to R for beginners
Introduction to R for beginners
 
Compiler Design
Compiler DesignCompiler Design
Compiler Design
 
Stream Based Input Output
Stream Based Input OutputStream Based Input Output
Stream Based Input Output
 
compiler Design course material chapter 2
compiler Design course material chapter 2compiler Design course material chapter 2
compiler Design course material chapter 2
 
Programming fundamental
Programming fundamentalProgramming fundamental
Programming fundamental
 
Getting started with c++
Getting started with c++Getting started with c++
Getting started with c++
 
IMP PPT- Python programming fundamentals.pptx
IMP PPT- Python programming fundamentals.pptxIMP PPT- Python programming fundamentals.pptx
IMP PPT- Python programming fundamentals.pptx
 
Chapter 13.1.3
Chapter 13.1.3Chapter 13.1.3
Chapter 13.1.3
 
Python unit 1 (1).pptx
Python unit 1 (1).pptxPython unit 1 (1).pptx
Python unit 1 (1).pptx
 
JavaScript – ECMAScript Basics By Satyen
JavaScript – ECMAScript Basics By SatyenJavaScript – ECMAScript Basics By Satyen
JavaScript – ECMAScript Basics By Satyen
 

Recently uploaded

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 

Recently uploaded (20)

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 

LISP: Input And Output

  • 1. Lisp Input and Output
  • 2. overview Read function. Parsing of numbers and symbols Macro characters Input functions Output functions Querying the user
  • 3. Printed representation Lisp 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 accepts Lisp 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.
  • 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 symbols When 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 numbers Number::=integer|ratio|floating-point number Integer::=[sign] {digit}+ [decimal-point] Ratio::= [sign] {digit}+ / {digit}+ Floating-point-number::= [sign] {digit}* decimal-point {digit}+ [exponent]| [sign] {digit}+ [decimal-number {digit}*] exponent Sign::= +|- Decimal-point::= . Digit::= 0|1|2|3|4|5|6|7|8|9 Exponent::= 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. symbols The 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 characters When 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 # reads in a character object that represents a character x. #ame1 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 array Ex: #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, space Rubout  delete character Page the form-feed or page-separator character Tab the tabulate character Return carriage return character Linefeed the line-feed character
  • 19. Read table Read 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 table To 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.
  • 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.
  • 25.
  • 26. Output functions that operate on stream of functions These 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 character Write-string string &optional output-stream &key :start :end Write-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.
  • 30.
  • 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 user The following functions provide a convenient interface for asking the questions of the user. y-or-n-p &optional format-string &rest arguments This 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 on yes 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.