dr. philip cannata 1 programming languages. dr. philip cannata 2 10 java (object oriented) asp rdf...
TRANSCRIPT
![Page 1: Dr. Philip Cannata 1 Programming Languages. Dr. Philip Cannata 2 10 Java (Object Oriented) ASP RDF (Horn Clause Deduction, Semantic Web) Relation Jython](https://reader031.vdocuments.net/reader031/viewer/2022032310/56649d8b5503460f94a725da/html5/thumbnails/1.jpg)
Dr. Philip Cannata 1
Programming Languages
![Page 2: Dr. Philip Cannata 1 Programming Languages. Dr. Philip Cannata 2 10 Java (Object Oriented) ASP RDF (Horn Clause Deduction, Semantic Web) Relation Jython](https://reader031.vdocuments.net/reader031/viewer/2022032310/56649d8b5503460f94a725da/html5/thumbnails/2.jpg)
Dr. Philip Cannata 2
10
Java (Object Oriented)Java (Object Oriented)
ASPASP
RDF (Horn Clause Deduction, RDF (Horn Clause Deduction, Semantic Web)Semantic Web)
RelationRelation
Jython in JavaJython in Java
This CourseThis Course
High LevelHigh LevelLanguagesLanguages
![Page 3: Dr. Philip Cannata 1 Programming Languages. Dr. Philip Cannata 2 10 Java (Object Oriented) ASP RDF (Horn Clause Deduction, Semantic Web) Relation Jython](https://reader031.vdocuments.net/reader031/viewer/2022032310/56649d8b5503460f94a725da/html5/thumbnails/3.jpg)
Dr. Philip Cannata 3
![Page 4: Dr. Philip Cannata 1 Programming Languages. Dr. Philip Cannata 2 10 Java (Object Oriented) ASP RDF (Horn Clause Deduction, Semantic Web) Relation Jython](https://reader031.vdocuments.net/reader031/viewer/2022032310/56649d8b5503460f94a725da/html5/thumbnails/4.jpg)
Dr. Philip Cannata 4
{ } a series of zero or more( ) must pick one from a list[ ] pick none or one from a list
expression -> term { ( + | - ) term } term -> factor { ( * | / ) factor }factor -> ( expression ) | number // the parenthesis are part of the grammar not the EBNFnumber -> { 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 }
6 * ( 11 – 7 ) / 3 + 100
High Level Overview of Grammar Concepts
![Page 5: Dr. Philip Cannata 1 Programming Languages. Dr. Philip Cannata 2 10 Java (Object Oriented) ASP RDF (Horn Clause Deduction, Semantic Web) Relation Jython](https://reader031.vdocuments.net/reader031/viewer/2022032310/56649d8b5503460f94a725da/html5/thumbnails/5.jpg)
Dr. Philip Cannata 5
Abstract Syntax
Internal Parse Tree
int main ()
{
return 0 ;
}
Program (abstract syntax): Function = main; Return type = int params = Block: Return: Variable: return#main, LOCAL addr=0 IntValue: 0
Instance of a Programming Language:
We’ll be starting with javacc moving to ANTLR later
![Page 6: Dr. Philip Cannata 1 Programming Languages. Dr. Philip Cannata 2 10 Java (Object Oriented) ASP RDF (Horn Clause Deduction, Semantic Web) Relation Jython](https://reader031.vdocuments.net/reader031/viewer/2022032310/56649d8b5503460f94a725da/html5/thumbnails/6.jpg)
Dr. Philip Cannata 6
$ lsMakefile Parser.jj test
Parser Files – javacc demo1 – similar to Chapter 1 in the Textbook but in java instead of scheme
![Page 7: Dr. Philip Cannata 1 Programming Languages. Dr. Philip Cannata 2 10 Java (Object Oriented) ASP RDF (Horn Clause Deduction, Semantic Web) Relation Jython](https://reader031.vdocuments.net/reader031/viewer/2022032310/56649d8b5503460f94a725da/html5/thumbnails/7.jpg)
Dr. Philip Cannata 7
PARSER_BEGIN(Parser)
import java.io.*;import java.util.*;
public class Parser { public static void main(String args[]) throws ParseException { Parser parser = new Parser (System.in); parser.ae(); }}
PARSER_END(Parser )
SKIP :{ " " | "\t" | "\n" | "\r" | <"//" (~["\n","\r"])* ("\n"|"\r")>}
TOKEN:{ < LCURLY: "{" > | < RCURLY: "}" > | < MINUS: "-" > | < PLUS: "+" >
}
TOKEN: /* Literals */{ < INTEGER: (["0"-"9"])+ >}
TOKEN:{ <ERROR: ~[] >}
void ae() :{ Token n; }{ n = <INTEGER> { System.out.print("(num " + n +")"); } | list()}
void list() :{}{ LOOKAHEAD(2) <LCURLY> <PLUS> { System.out.print(" (add ");}
( ae() )* <RCURLY> { System.out.print(") "); } | <LCURLY> <MINUS> { System.out.print(" (sub ");} ( ae() )*
<RCURLY> { System.out.print(") "); }}
Parser
Grammar Production Rules
Tokens, Terminals
Syntax and Grammar – Parser.jj
![Page 8: Dr. Philip Cannata 1 Programming Languages. Dr. Philip Cannata 2 10 Java (Object Oriented) ASP RDF (Horn Clause Deduction, Semantic Web) Relation Jython](https://reader031.vdocuments.net/reader031/viewer/2022032310/56649d8b5503460f94a725da/html5/thumbnails/8.jpg)
Dr. Philip Cannata 8
$ cat MakefileParser.class: Parser.java javac *java
Parser.java: Parser.jj javacc Parser.jj
clean: rm *.class ParseException.java Parser.java ParserConstants.java ParserTokenManager.java SimpleCharStream.java Token.java TokenMgrError.java
Parser Makefile - Makefile
![Page 9: Dr. Philip Cannata 1 Programming Languages. Dr. Philip Cannata 2 10 Java (Object Oriented) ASP RDF (Horn Clause Deduction, Semantic Web) Relation Jython](https://reader031.vdocuments.net/reader031/viewer/2022032310/56649d8b5503460f94a725da/html5/thumbnails/9.jpg)
Dr. Philip Cannata 9
$ makejavacc Parser.jjJava Compiler Compiler Version 4.0 (Parser Generator)(type "javacc" with no arguments for help)Reading from file Parser.jj . . .File "TokenMgrError.java" does not exist. Will create one.File "ParseException.java" does not exist. Will create one.File "Token.java" does not exist. Will create one.File "SimpleCharStream.java" does not exist. Will create one.Parser generated successfully.javac *javaNote: Parser.java uses unchecked or unsafe operations.Note: Recompile with -Xlint:unchecked for details.
Making the Parser
![Page 10: Dr. Philip Cannata 1 Programming Languages. Dr. Philip Cannata 2 10 Java (Object Oriented) ASP RDF (Horn Clause Deduction, Semantic Web) Relation Jython](https://reader031.vdocuments.net/reader031/viewer/2022032310/56649d8b5503460f94a725da/html5/thumbnails/10.jpg)
Dr. Philip Cannata 10
$ cat test; cat test | java -cp "." Parser{+ 4 5 {- {+ 1 2 3 } 6} 101 {+ 102}}
(add (num 4)(num 5) (sub (add (num 1)(num 2)(num 3)) (num 6)) (num 101) (add (num 102)) )
Testing the Parser
![Page 11: Dr. Philip Cannata 1 Programming Languages. Dr. Philip Cannata 2 10 Java (Object Oriented) ASP RDF (Horn Clause Deduction, Semantic Web) Relation Jython](https://reader031.vdocuments.net/reader031/viewer/2022032310/56649d8b5503460f94a725da/html5/thumbnails/11.jpg)
Dr. Philip Cannata 11
$ lsAbstractSyntax.java Makefile Parser.jj calc.sh test
$ cat calc.shcat testcat test | java Parsercat test | java Parser | sed -e "s/add/+/g" -e "s/sub/-/g" -e "s/(num//g" -e "s/\([0-9]\))/\1/g" | tr -s " " " " | sed "s/^ *//"cat test | java Parser | sed -e "s/add/+/g" -e "s/sub/-/g" -e "s/(num//g" -e "s/\([0-9]\))/\1/g" | clisp --silent | grep -v ">"
$ ./calc.sh{+ 4 5 {- {+ 1 2 3} 6} 101 {+ 102}} (add (num 4) (num 5) (sub (add (num 1) (num 2) (num 3)) (num 6)) (num 101) (add (num 102)))(+ 4 5 (- (+ 1 2 3) 6) 101 (+ 102))212
New
Parser Files – javacc demo2 – similar to Chapter 2 in the Textbook but in java instead of scheme
![Page 12: Dr. Philip Cannata 1 Programming Languages. Dr. Philip Cannata 2 10 Java (Object Oriented) ASP RDF (Horn Clause Deduction, Semantic Web) Relation Jython](https://reader031.vdocuments.net/reader031/viewer/2022032310/56649d8b5503460f94a725da/html5/thumbnails/12.jpg)
Dr. Philip Cannata 12
1op: “”intval: 0children:
top = sub = 1
nodeStack
1
Parse {+ 3 {+ 4 5 } 6}
Abstract Syntax TreeBeginning
![Page 13: Dr. Philip Cannata 1 Programming Languages. Dr. Philip Cannata 2 10 Java (Object Oriented) ASP RDF (Horn Clause Deduction, Semantic Web) Relation Jython](https://reader031.vdocuments.net/reader031/viewer/2022032310/56649d8b5503460f94a725da/html5/thumbnails/13.jpg)
Dr. Philip Cannata 13
After recognizing {+
top = 1
sub = 2
11op: “”intval: 0children: 2
22op: “+”intval: 0children:
nodeStack
2
1
Abstract Syntax Tree
![Page 14: Dr. Philip Cannata 1 Programming Languages. Dr. Philip Cannata 2 10 Java (Object Oriented) ASP RDF (Horn Clause Deduction, Semantic Web) Relation Jython](https://reader031.vdocuments.net/reader031/viewer/2022032310/56649d8b5503460f94a725da/html5/thumbnails/14.jpg)
Dr. Philip Cannata 14
After recognizing {+ 3
top = 1
sub = 2
1op: “”intval: 0children: 2
2op: “+”intval: 0children: 3
nodeStack
2
1
Abstract Syntax Tree
3op: “int”intval: 3children:
![Page 15: Dr. Philip Cannata 1 Programming Languages. Dr. Philip Cannata 2 10 Java (Object Oriented) ASP RDF (Horn Clause Deduction, Semantic Web) Relation Jython](https://reader031.vdocuments.net/reader031/viewer/2022032310/56649d8b5503460f94a725da/html5/thumbnails/15.jpg)
Dr. Philip Cannata 15
After recognizing {+ 3 {+
top = 1
sub = 4
1op: “”intval: 0children: 2
2op: “+”intval: 0children: 3, 4
nodeStack
4
2
1
Abstract Syntax Tree
3op: “int”intval: 3children:
4op: “+”intval: 0children:
![Page 16: Dr. Philip Cannata 1 Programming Languages. Dr. Philip Cannata 2 10 Java (Object Oriented) ASP RDF (Horn Clause Deduction, Semantic Web) Relation Jython](https://reader031.vdocuments.net/reader031/viewer/2022032310/56649d8b5503460f94a725da/html5/thumbnails/16.jpg)
Dr. Philip Cannata 16
After recognizing {+ 3 {+ 4
top = 1
sub = 4
1op: “”intval: 0children: 2
2op: “+”intval: 0children: 3, 4
nodeStack
4
2
1
Abstract Syntax Tree
3op: “int”intval: 3children:
4op: “+”intval: 0children: 5
5op: “int”intval: 4children:
![Page 17: Dr. Philip Cannata 1 Programming Languages. Dr. Philip Cannata 2 10 Java (Object Oriented) ASP RDF (Horn Clause Deduction, Semantic Web) Relation Jython](https://reader031.vdocuments.net/reader031/viewer/2022032310/56649d8b5503460f94a725da/html5/thumbnails/17.jpg)
Dr. Philip Cannata 17
After recognizing {+ 3 {+ 4 5
top = 1
sub = 4
1op: “”intval: 0children: 2
2op: “+”intval: 0children: 3, 4
nodeStack
4
2
1
Abstract Syntax Tree
3op: “int”intval: 3children:
4op: “+”intval: 0children: 5, 6
5op: “int”intval: 4children:
6op: “int”intval: 5children:
![Page 18: Dr. Philip Cannata 1 Programming Languages. Dr. Philip Cannata 2 10 Java (Object Oriented) ASP RDF (Horn Clause Deduction, Semantic Web) Relation Jython](https://reader031.vdocuments.net/reader031/viewer/2022032310/56649d8b5503460f94a725da/html5/thumbnails/18.jpg)
Dr. Philip Cannata 18
After recognizing {+ 3 {+ 4 5 }
top = 1
sub = 2
1op: “”intval: 0children: 2
2op: “+”intval: 0children:3, 4
nodeStack
2
1
Abstract Syntax Tree
3op: “int”intval: 3children:
4op: “+”intval: 0children: 5, 6
5op: “int”intval: 4children:
6op: “int”intval: 5children:
![Page 19: Dr. Philip Cannata 1 Programming Languages. Dr. Philip Cannata 2 10 Java (Object Oriented) ASP RDF (Horn Clause Deduction, Semantic Web) Relation Jython](https://reader031.vdocuments.net/reader031/viewer/2022032310/56649d8b5503460f94a725da/html5/thumbnails/19.jpg)
Dr. Philip Cannata 19
After recognizing {+ 3 {+ 4 5 } 6
top = 1
sub = 2
1op: “”intval: 0children: 2
2op: “+”intval: 0children: 3, 4, 7
nodeStack
2
1
Abstract Syntax Tree
3op: “int”intval: 3children:
4op: “+”intval: 0children: 5, 6
5op: “int”intval: 4children:
6op: “int”intval: 5children:
7op: “int”intval: 6children:
![Page 20: Dr. Philip Cannata 1 Programming Languages. Dr. Philip Cannata 2 10 Java (Object Oriented) ASP RDF (Horn Clause Deduction, Semantic Web) Relation Jython](https://reader031.vdocuments.net/reader031/viewer/2022032310/56649d8b5503460f94a725da/html5/thumbnails/20.jpg)
Dr. Philip Cannata 20
After recognizing {+ 3 {+ 4 5 } 6 }
top = 1
sub = 1
1op: “”intval: 0children: 2
2op: “+”intval: 0children: 3, 4, 7
nodeStack
1
Abstract Syntax Tree
3op: “int”intval: 3children:
4op: “+”intval: 0children: 5, 6
5op: “int”intval: 4children:
6op: “int”intval: 5children:
7op: “int”intval: 6children:
Now print the Abstract Syntax Tree starting with top
![Page 21: Dr. Philip Cannata 1 Programming Languages. Dr. Philip Cannata 2 10 Java (Object Oriented) ASP RDF (Horn Clause Deduction, Semantic Web) Relation Jython](https://reader031.vdocuments.net/reader031/viewer/2022032310/56649d8b5503460f94a725da/html5/thumbnails/21.jpg)
Dr. Philip Cannata 21
$ ls
AbstractSyntax.java Makefile Parser.jj calc.sh test
$ cat calc.shcat testcat test | java Parser
$ ./calc.sh{+ 4 5 {- {+ 1 2 3} {+ 200 300 400} 6} 101 {+ 102}}
Binary: top Binary: + 4 Binary: + 5 Binary: - Binary: + 1 Binary: + 2 Binary: + 3 Binary: + 200 Binary: + 300 Binary: + 400 Binary: - 6 Binary: + 101 Binary: + 102
Different
Parser Files – javacc demo3 – Building a simple AST
![Page 22: Dr. Philip Cannata 1 Programming Languages. Dr. Philip Cannata 2 10 Java (Object Oriented) ASP RDF (Horn Clause Deduction, Semantic Web) Relation Jython](https://reader031.vdocuments.net/reader031/viewer/2022032310/56649d8b5503460f94a725da/html5/thumbnails/22.jpg)
Dr. Philip Cannata 22