2021-09-21

Sep 22 In-Class Exercise Thread.

Please post your solutions to the Sep 22 In-Class Exercise to this thread.
Best,
Chris
Please post your solutions to the Sep 22 In-Class Exercise to this thread. Best, Chris
2021-09-22

-- Sep 22 In-Class Exercise Thread
From lextest.c:

line 2 "lextest.c" 
 
line 4 "lextest.c" 
 
define  YY_INT_ALIGNED short int 
 
/* A lexical scanner generated by flex */ 
 
Code:
%{
include <stdio.h>
int wordCount = 0;
%}
word a|(the)
%%
[\t\n ]+ {printf("I see whitespace\n");}
{word} {wordCount++;}
%%
int main()
{
   yylex(); //call the lexer. Gets input from command line until ^D
   printf("word count: %d", wordCount); return 0;
}
<pre>From lextest.c: #line 2 "lextest.c" #line 4 "lextest.c" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ Code: %{ #include <stdio.h> int wordCount = 0; %} word a|(the) %% [\t\n ]+ {printf("I see whitespace\n");} {word} {wordCount++;} %% int main() { yylex(); //call the lexer. Gets input from command line until ^D printf("word count: %d", wordCount); return 0; } </pre>

-- Sep 22 In-Class Exercise Thread
 %{
 #include <stdio.h>
 int articleCount = 0;
 %}
 article [^a\s\t\n]+
 article [^the\s\t\n]+ 
 %%
 [\t\n ]+ {printf("I see 'a' or 'the'\n");} //what to do if see pattern
 {article} {articleCount++;}
 %%
 int main()
 {
    yylex(); //calls the lexer
    printf("article count: %d", articleCount);
    return 0;
 } 
(Edited: 2021-09-22)
%{ #include <stdio.h> int articleCount = 0; %} article [^a\s\t\n]+ article [^the\s\t\n]+ %% [\t\n ]+ {printf("I see 'a' or 'the'\n");} //what to do if see pattern {article} {articleCount++;} %% int main() { yylex(); //calls the lexer printf("article count: %d", articleCount); return 0; }

-- Sep 22 In-Class Exercise Thread
code from lex.yy.c: 
 

line 2 "lex.yy.c" 
 
define  YY_INT_ALIGNED short int 
 
/* A lexical scanner generated by flex */ 
 
define FLEX_SCANNER
define YY_FLEX_MAJOR_VERSION 2
define YY_FLEX_MINOR_VERSION 6
define YY_FLEX_SUBMINOR_VERSION 4
if YY_FLEX_SUBMINOR_VERSION > 0
define FLEX_BETA
endif 
 
inclass.l code: 
 
%{
include <stdio.h>
int wordCount = 0;
%}
word a|the
%%
[\t\n ]+ {printf("I see whitespace\n");} //what to do if see pattern
{word} {wordCount++;}
%%
int main()
{
   yylex(); //call the lexer. Gets input from command line until ^D
   printf("word count: %d", wordCount); return 0;
}
To compile:
lex  -o lextest.c lextest.l #default output is lex.yy.c
gcc  lextest.c -o lextest -ll  #-ll not needed if use flex.
(Edited: 2021-09-22)
<pre> code from lex.yy.c: #line 2 "lex.yy.c" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 #define YY_FLEX_SUBMINOR_VERSION 4 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif inclass.l code: %{ #include <stdio.h> int wordCount = 0; %} word a|the %% [\t\n ]+ {printf("I see whitespace\n");} //what to do if see pattern {word} {wordCount++;} %% int main() { yylex(); //call the lexer. Gets input from command line until ^D printf("word count: %d", wordCount); return 0; } To compile: lex -o lextest.c lextest.l #default output is lex.yy.c gcc lextest.c -o lextest -ll #-ll not needed if use flex. </pre>

User Icon
-- Sep 22 In-Class Exercise Thread
 %{
 #include <stdio.h>
 int wordCount = 0;
 %}
 word a|the
 %%
 [\t\n ]+ {printf("I see whitespace\n");} //what to do if see pattern
 {word} {wordCount++;}
 %%
 int main()
 {
    yylex(); //call the lexer. Gets input from command line until ^D
    printf("word count: %d", wordCount); return 0;
 }
(Edited: 2021-09-22)
%{ #include <stdio.h> int wordCount = 0; %} word a|the %% [\t\n ]+ {printf("I see whitespace\n");} //what to do if see pattern {word} {wordCount++;} %% int main() { yylex(); //call the lexer. Gets input from command line until ^D printf("word count: %d", wordCount); return 0; }

-- Sep 22 In-Class Exercise Thread
%{ include <stdio.h> int wordCount = 0; %} word a|the %% [\t\n ]+ {printf("I see whitespace\n");} //what to do if see pattern {word} {wordCount++;} %% int main() {
   yylex(); //call the lexer. Gets input from command line until ^D
   printf("word count: %d", wordCount); return 0;
}
%{ include <stdio.h> int wordCount = 0; %} word a|the %% [\t\n ]+ {printf("I see whitespace\n");} //what to do if see pattern {word} {wordCount++;} %% int main() { yylex(); //call the lexer. Gets input from command line until ^D printf("word count: %d", wordCount); return 0; }

-- Sep 22 In-Class Exercise Thread
 lextest.l :
%{
  1. include <stdio.h> int wordCount = 0; %} word a|the %% [\t\n ]+ {printf("I see an 'a' or a 'the' \n");} {word} {wordCount++;} %% int main() {
       yylex(); //call the lexer. Gets input from command line until ^D
       printf("word count: %d", wordCount); return 0;
    
    }
lextest.c :
  1. line 2 "lextest.c"
  1. line 4 "lextest.c"
  1. define YY_INT_ALIGNED short int
/* A lexical scanner generated by flex */
  1. define FLEX_SCANNER
  2. define YY_FLEX_MAJOR_VERSION 2
  3. define YY_FLEX_MINOR_VERSION 5
  4. define YY_FLEX_SUBMINOR_VERSION 35
  5. if YY_FLEX_SUBMINOR_VERSION > 0
  6. define FLEX_BETA
  7. endif
(Edited: 2021-09-22)
lextest.l : %{ #include <stdio.h> int wordCount = 0; %} word a|the %% [\t\n ]+ {printf("I see an 'a' or a 'the' \n");} {word} {wordCount++;} %% int main() { yylex(); //call the lexer. Gets input from command line until ^D printf("word count: %d", wordCount); return 0; } lextest.c : #line 2 "lextest.c" #line 4 "lextest.c" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 #define YY_FLEX_SUBMINOR_VERSION 35 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif

-- Sep 22 In-Class Exercise Thread
%{
  1. include <stdio.h> int wordCount = 0; %} word (a|the) %% [\t\n ]+ {printf("I see whitespace\n");} {word} {wordCount++;} %% int main() {
       yylex(); //call the lexer. Gets input from command line until ^D
       printf("word count: %d", wordCount);
       return 0;
    
    }
%{ #include <stdio.h> int wordCount = 0; %} word (a|the) %% [\t\n ]+ {printf("I see whitespace\n");} {word} {wordCount++;} %% int main() { yylex(); //call the lexer. Gets input from command line until ^D printf("word count: %d", wordCount); return 0; }

-- Sep 22 In-Class Exercise Thread
 #line 2 "lex.yy.c"
 #line 4 "lex.yy.c"
 #define  YY_INT_ALIGNED short int
 /* A lexical scanner generated by flex */
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 5
 #define YY_FLEX_SUBMINOR_VERSION 35
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
 %{
 #include <stdio.h>
 int wordCount = 0;
 %}
 word [^a\s\t\n]+|[^the\s\t\n]+
 %%
 [\t\n ]+ {printf("I see whitespace\n");} //what to do if see pattern
 {word} {wordCount++;}
 %%
 int main()
 {
    yylex(); //call the lexer. Gets input from command line until ^D
    printf("word count: %d", wordCount); return 0;
 }
(Edited: 2021-09-22)
#line 2 "lex.yy.c" #line 4 "lex.yy.c" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 #define YY_FLEX_SUBMINOR_VERSION 35 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif %{ #include <stdio.h> int wordCount = 0; %} word [^a\s\t\n]+|[^the\s\t\n]+ %% [\t\n ]+ {printf("I see whitespace\n");} //what to do if see pattern {word} {wordCount++;} %% int main() { yylex(); //call the lexer. Gets input from command line until ^D printf("word count: %d", wordCount); return 0; }

-- Sep 22 In-Class Exercise Thread
lextest.l: {% #include int aTheCount = 0; %} word a|(the); %% {word} {aTheCount++;} %% int main() { yylex(); //call the lexer. Gets input from command line until ^D printf("occurrences of 'a' and 'the': %d", aTheCount); return 0; }
result: > lex lextest.l > gcc lex.yy.c -ll -o example > ./example > the girl saw a dog the girl sw dog occurrences of 'a' and 'the': 2
(Edited: 2021-09-22)
<nowiki>lextest.l: {% #include <stdio.h> int aTheCount = 0; %} word a|(the); %% {word} {aTheCount++;} %% int main() { yylex(); //call the lexer. Gets input from command line until ^D printf("occurrences of 'a' and 'the': %d", aTheCount); return 0; }</nowiki> <nowiki>result: > lex lextest.l > gcc lex.yy.c -ll -o example > ./example > the girl saw a dog the girl sw dog occurrences of 'a' and 'the': 2</nowiki>
[ Next ]
X