CSE240 Lecture 03

CSE240 Lecture 03

Introduction to Programming Languages
Structure of Programming Languages
(202001)

B546a9b97d993392e4b22b74b99b91fe?s=128

Javier Gonzalez

January 03, 2017
Tweet

Transcript

  1. jgs CSE 240 Introduction to Programming Languages Lecture 03: Structure

    of Programming Languages Javier Gonzalez-Sanchez javiergs@asu.edu PERALTA 230U Office Hours: By appointment
  2. Javier Gonzalez-Sanchez | CSE240 | Spring 2020 | 2 jgs

    Structure of a Programming Language Paradigm Language Rules Lexical Input: Symbols Output: Words Syntax Input: Words Output: Sentences Semantic Input: Sentences
  3. Javier Gonzalez-Sanchez | CSE240 | Spring 2020 | 3 jgs

    Lexical Rules - Definition Create words Concatenate symbols until you found a whitespace, an operator, or a delimiter
  4. Javier Gonzalez-Sanchez | CSE240 | Spring 2020 | 4 jgs

    Lexical Rules - Algorithm do { String word = ""; char c = getNextCharacter(); if (c is not an operator nor a delimiter nor a whitespace nor EndOfLine) word = word + c; } else { if (word is a literal or word is a keyword or word is an identifier){ // This word is correct J } else { // Houston, we have a lexical error L } word = ""; } } while (fileHasMoreCharacters());
  5. Javier Gonzalez-Sanchez | CSE240 | Spring 2020 | 5 jgs

    Lexical Rules - Example int x = ; 5 float 3y = "hello; String@z="9.5”;intx=cse240;if(x> 14) while (5 == 5) if (int a) a = 1; x = x; for ( ; ; );y = 13.45.0;int me =99999000001111222000000111111222223 443483045830948;while { x != 9} ();int {x} = 10;
  6. Javier Gonzalez-Sanchez | CSE240 | Spring 2020 | 6 jgs

    Lexical Rules - Example int x = ; 5 float 3y = "hello; String@z = "9.5"; intx = cse240; if ( x > 14) while (5 == 5) if (int a) a = 1; x = x; for ( ; ; ); y = 13.45.0; int me =99999000001111222000000111111222223 443483045830948; while { x != 9} (); int {x} = 10;
  7. Javier Gonzalez-Sanchez | CSE240 | Spring 2020 | 7 jgs

    Lexical Rules - Tokens § Identifiers. Names (programmer chosen) for something of interest (variables, functions, methods, classes, etc.) 
 § Keywords. names reserved by the language designer: if, switch, for, int, float, char, while, etc. § Operators. +, *, <, >=, !, &&, ||, etc. § Delimiters. , ; ( ) { } § Literals. 5, 14.5, 'A', "Hello", § Comments. /* ... */, // ...
  8. Javier Gonzalez-Sanchez | CSE240 | Spring 2020 | 8 jgs

    Structure of a Programming Language Create sentences by combining words
  9. Javier Gonzalez-Sanchez | CSE240 | Spring 2020 | 9 jgs

    Syntactic Rules - Grammar
  10. Javier Gonzalez-Sanchez | CSE240 | Spring 2020 | 10 jgs

    Syntactic Rules - Example sum4 = (a1 + a2) * (3*b % 4*b)_ p4rd2 = ((a + a2) * (b3 % b4)) hi (c7 - c8); foo_bar = (a1 + a2 - b3 - b4); (a1 / a2) = (c3 - c4); if (z<4) } while ( 5 ) { if ( 6 ) { } }
  11. Javier Gonzalez-Sanchez | CSE240 | Spring 2020 | 11 jgs

    Structure of a Programming Language Paradigm Language Rules Lexical Input: Symbols Output: Words Syntax Input: Words Output: Sentences Semantic Input: Sentences
  12. Javier Gonzalez-Sanchez | CSE240 | Spring 2020 | 12 jgs

    Structure of a Programming Language Review that the sentences are meaningful
  13. Javier Gonzalez-Sanchez | CSE240 | Spring 2020 | 13 jgs

    Semantic Rules 1.Declaration and Unicity. Review for uniqueness and that the variable has been declared before its usage. 2.Types. Review that the types of variables match the values assigned to them. 3.Array’s indexes. Review that the indexes are integers. 4.Conditions. Review that all expressions on the conditons return a boolean value. 5.Return type. Review that the value returned by a method match the type of the method. 6.Parameters. Review that the parameters in a method match in type and number with the declaration of the method.
  14. Javier Gonzalez-Sanchez | CSE240 | Spring 2020 | 14 jgs

    Semantic Rules Declaration and Unicity: Review for uniqueness and that the variable has been declared before its usage. //Case 1: int i; char j; int m; void method(int n, char c) { int n; short l; i = j; i = m; } //Case 2: int i, j; void method() { int i = 5; int j = i + i; int i = i + i; }
  15. Javier Gonzalez-Sanchez | CSE240 | Spring 2020 | 15 jgs

    Semantic Rules 1.Declaration and Unicity. Review for uniqueness and that the variable has been declared before its usage. 2.Types. Review that the types of variables match the values assigned to them. 3.Array’s indexes. Review that the indexes are integers. 4.Conditions. Review that all expressions on the conditons return a boolean value. 5.Return type. Review that the value returned by a method match the type of the method. 6.Parameters. Review that the parameters in a method match in type and number with the declaration of the method.
  16. Javier Gonzalez-Sanchez | CSE240 | Spring 2020 | 16 jgs

    Semantic Rules Types: Review that the types of variables match the values assigned to them. //Case 3: int x = "hello"; char c = false; boolean foo = c;
  17. Javier Gonzalez-Sanchez | CSE240 | Spring 2020 | 17 jgs

    Semantic Rules 1.Declaration and Unicity. Review for uniqueness and that the variable has been declared before its usage. 2.Types. Review that the types of variables match the values assigned to them. 3.Array’s indexes. Review that the indexes are integers. 4.Conditions. Review that all expressions on the conditons return a boolean value. 5.Return type. Review that the value returned by a method match the type of the method. 6.Parameters. Review that the parameters in a method match in type and number with the declaration of the method.
  18. Javier Gonzalez-Sanchez | CSE240 | Spring 2020 | 18 jgs

    Structure of a Programming Language Run-Time Errors Paradigm Language Rules Lexical Input: Symbols Output: Words Syntax Input: Words Output: Sentences Semantic Input: Sentences
  19. jgs CSE 240 Introduction to Programming Languages Javier Gonzalez-Sanchez javiergs@asu.edu

    Spring 2020 Disclaimer. These slides can only be used as study material for the class CSE240 at ASU. They cannot be distributed or used for another purpose.