(LONG!) Re: Python version of IQ has been updates (IQ v0.34.python)

Timothy Rue threeseas at earthlink.net
Sat Jun 16 18:03:03 EDT 2001


On 15-Jun-01 04:24:40 Ryan <ryanmorillo at hotmail.com> wrote:
>"Timothy Rue" <threeseas at earthlink.net> wrote in message
>news:<505.566T11T1243597threeseas at earthlink.net>...
>> http://www.mindspring.com/~timrue/python/IQ.34.py
>>
>> Read the code header.
>>
>> http://www.mindspring.com/~timrue/python/python-IQ.html
>>
>>
>> ---
>> *3 S.E.A.S - Virtual Interaction Configuration (VIC) - VISION OF VISIONS!*
>>    *~ ~ ~      Advancing How we Perceive and Use the Tool of Computers!*
>> Timothy Rue      What's *DONE* in all we do?  *AI PK OI IP OP SF IQ ID KE*
>> Email @ mailto:timrue at mindspring.com      >INPUT->(Processing)->OUTPUT>v
>> Web @ http://www.mindspring.com/~timrue/  ^<--------<----9----<--------<

>you might want to change line 85 to
>if fromf in ('', '?', 'help', '-h', '-?'):

Thanks for the tip. I do seem now to recall this method, but being a
python rookie and lacking the time to spend enough time with python to
drill it into my dreams....I'm bound to miss simple and basic things,
such as this.

>just a slight change with a negligable speed up, but slightly easier
>to read.

Alot easier! Thanks.

>I'm just now trying to figure out the interface and figure out exactly
>what it  dose, if it's what I think it is I'll be more than happy to
>help hack it (i'm hoping it is a small search engine type tool)

Yes, IQ is a small search engine, stand alone but also a part of a larger
project.

The general difference with this search engine is that it follows the
generic triplet of how we define things for looking up later.

i.e. Unix manual pages can be tagged for 'word', 'sub' and 'file'
and can even use different 'filekeys' (legends like a map or blue print)

Look at the following AWK manual page. I've added keys here where ':'
tags for 'word', '::' tags for 'subs' and ':::' tags for file. The
CAPITALIZED words are original in the manual pages. But there is also
where I have added other keys for words, subs and files (in small case).
This further breaks down to more specific details of the awk man page, but
to use it, you need to change the 'filekey' to 'filekey :: ;; :::'
which allows you to access the finer details.

But Unix manual pages are one of many other expample of how we use this
triplet in defining and accessing information. Any Programming language
quick reference can be tagged or even non programming information like
catalog of parts or human language dictionaries or encylopedias, medical
references, etc..

Like I said, it's the "generic triple of how we define things to later
look up'. That's what the IQ search engine is about. And it's only one of
nine things we do in anything we do. Nine actions/functions that I call
"action constants".  If you use the command line on the KNMVIC.iq file:
'>python IQ.py -k KNMVIC.iq "*" "*"
the result will appear to be a table of context of the KNMVIC document, so
even on a larger scale of perception, IQ is handy.

I hope all this help you to understand what the objective of IQ is. And
that if used to output specific parts, such as code, the '-s' option is
used to cause only the code or part to be output, without the
word/sub/filename key.

There is also the http://www.mindspring.com/~timrue/IQ.html file to read.


-------->8-------
filekey : :: :::
:AWK(1)                                                     AWK(1)


::NAME
       awk - pattern-directed scanning and processing language

::SYNOPSIS
       awk  [ -F fs ] [ -v var=value ] [ 'prog' | -f progfile ] [ file ... ]

::DESCRIPTION
       Awk scans each input file for lines that match  any  of  a
       set  of  patterns specified literally in prog or in one or
       more files specified as -f progfile.   With  each  pattern
       there  can  be an associated action that will be performed
       when a line of a file matches the pattern.  Each  line  is
       matched  against  the  pattern  portion  of every pattern-
       action statement; the associated action is  performed  for
       each  matched  pattern.   The file name means the standard
       input.  Any file of the form var=value is  treated  as  an
       assignment, not a filename, and is executed at the time it
       would have been opened if it were a filename.  The  option
       -v  followed  by  var=value  is  an  assignment to be done
       before prog is executed; any number of -v options  may  be
       present.  The -F fs option defines the input field separa­
       tor to be the regular expression fs.

       An input line is normally made up of fields  separated  by
       white space.  (This default can be changed by using the FS
       built-in variable or the -F fs option.)   The  fields  are
       denoted $1, $2, ..., while $0 refers to the entire line.

       A pattern-action statement has the form

              pattern { action }

       A  missing { action } means print the line; a missing pat­
       tern always matches.  Pattern-action statements are  sepa­
       rated by newlines or semicolons.

::statements

       An action is a sequence of statements.  A statement can be
       one of the following:

         if( expression ) statement [ else statement ]
         while( expression ) statement
         for( expression ; expression ; expression ) statement
         for( var in array ) statement
         do statement while( expression )
         break
         continue
         { [ statement ... ] }
         expression           # commonly var = expression
         print [ expression-list ] [ > expression ]
         printf format [ , expression-list ] [ > expression ]
         return [ expression ]
         next                 # skip remaining patterns on this input line
         delete array[ expression ]# delete an array element
         exit [ expression ]  # exit immediately; status is expression

       Statements are terminated by semicolons, newlines or right
       braces.   An  empty expression-list stands for $0.  String
       constants are quoted " ", with the usual C escapes  recog­
       nized  within.  Expressions take on string or numeric val­
       ues as appropriate, and are built using the operators +  -
       *  / % ^ (exponentiation), and concatenation (indicated by
       a blank).  The operators ! ++ -- += -= *= /= %= ^= > >=  <
       <=  == != ?: are also available in expressions.  Variables
       may be scalars, array elements (denoted x[i])  or  fields.
       Variables  are initialized to the null string.  Array sub­
       scripts may be any string, not necessarily  numeric;  this
       allows  for  a  form of associative memory.  Multiple sub­
       scripts such as [i,j,k] are  permitted;  the  constituents
       are concatenated, separated by the value of SUBSEP.

       The  print  statement prints its arguments on the standard
       output (or on a file if >file or >>file is present or on a
       pipe  if |cmd is present), separated by the current output
       field separator, and terminated by the output record sepa­
       rator.  file and cmd may be literal names or parenthesized
       expressions; identical string values in  different  state­
       ments  denote  the  same  open file.  The printf statement
       formats its expression list according to the  format  (see
       printf(3)).   The built-in function close(expr) closes the
       file or pipe expr.

::math
       The mathematical functions exp, log, sqrt, sin,  cos,  and
       atan2 are built in.  Other built-in functions:

::built-ins

;;length
       length the length of its argument taken as a string, or of
              $0 if no argument.

;;rand
       rand   random number on (0,1)

;;srand
       srand  sets seed for rand and returns the previous seed.

;;int
       int    truncates to an integer value

;;substr
       substr(s, m, n)
              the n-character substring of s that begins at posi­
              tion m counted from 1.

;;index
       index(s, t)
              the  position  in s where the string t occurs, or 0
              if it does not.

;;match
       match(s, r)
              the position in s where the  regular  expression  r
              occurs,  or 0 if it does not.  The variables RSTART
              and RLENGTH are set to the position and  length  of
              the matched string.

;;split
       split(s, a, fs)
              splits the string s into array elements a[1], a[2],
              ..., a[n], and returns n.  The separation  is  done
              with  the  regular  expression fs or with the field
              separator FS if fs is not given.

;;sub
       sub(r, t, s)
              substitutes t for the first occurrence of the regu­
              lar  expression  r  in  the  string s.  If s is not
              given, $0 is used.

;gsub
       gsub   same as sub except that all occurrences of the reg­
              ular  expression  are replaced; sub and gsub return
              the number of replacements.

;;sprintf
       sprintf(fmt, expr, ... )
              the  string  resulting  from  formatting  expr  ...
              according to the printf(3) format fmt

;;system
       system(cmd)
              executes cmd and returns its exit status

       The  ``function'' getline sets $0 to the next input record
       from the current input file; getline <file sets $0 to  the
       next record from file.  getline x sets variable x instead.
       Finally, cmd | getline pipes the output of cmd  into  get­
       line; each call of getline returns the next line of output
       from cmd.  In all cases, getline returns 1 for a  success­
       ful input, 0 for end of file, and -1 for an error.


::patten matching

       Patterns are arbitrary Boolean combinations (with ! || &&)
       of regular expressions and relational expressions.   Regu­
       lar  expressions  are  as in egrep; see grep(1).  Isolated
       regular expressions in a pattern apply to the entire line.
       Regular  expressions  may also occur in relational expres­
       sions, using the operators ~ and !~.  /re/ is  a  constant
       regular  expression; any string (constant or variable) may
       be used as a regular expression, except in the position of
       an isolated regular expression in a pattern.

       A  pattern  may  consist  of  two  patterns separated by a
       comma; in this case, the action is performed for all lines
       from  an  occurrence of the first pattern though an occur­
       rence of the second.

       A relational expression is one of the following:

              expression matchop regular-expression
              expression relop expression
              expression in array-name
              (expr,expr,...) in array-name

       where a relop is any of the six relational operators in C,
       and  a  matchop  is  either  ~  (matches)  or !~ (does not

       match).  A conditional  is  an  arithmetic  expression,  a
       relational  expression, or a Boolean combination of these.

       The special patterns BEGIN and END may be used to  capture
       control  before the first input line is read and after the
       last.  BEGIN and END do not combine with other patterns.

::variables

       Variable names with special meanings:

       FS     regular expression used to  separate  fields;  also
              settable by option -Ffs.

       NF     number of fields in the current record

       NR     ordinal number of the current record

       FNR    ordinal number of the current record in the current
              file

       FILENAME
              the name of the current input file

       RS     input record separator (default newline)

       OFS    output field separator (default blank)

       ORS    output record separator (default newline)

       OFMT   output format for numbers (default %.6g)

       SUBSEP separates multiple subscripts (default 034)

       ARGC   argument count, assignable

       ARGV   argument array, assignable;  non-null  members  are
              taken as filenames

       ENVIRON
              array  of  environment  variables;  subscripts  are
              names.

       Functions may be defined (at the position  of  a  pattern-
       action statement) thus:

              function foo(a, b, c) { ...; return x }

       Parameters  are passed by value if scalar and by reference
       if  array  name;  functions  may  be  called  recursively.
       Parameters  are local to the function; all other variables
       are global.  Thus local variables may be created  by  pro­
       viding excess parameters in the function definition.

::EXAMPLES

       length > 72
              Print lines longer than 72 characters.

       { print $2, $1 }
              Print first two fields in opposite order.

       BEGIN { FS = ",[ \t]*|[ \t]+" }
             { print $2, $1 }

              Same,  with  input fields separated by comma and/or
              blanks and tabs.

            { s += $1 }
       END  { print "sum is", s, " average is", s/NR }
              Add up first column, print sum and average.

       /start/, /stop/
              Print all lines between start/stop pairs.

       BEGIN     {    # Simulate echo(1)
            for (i = 1; i < ARGC; i++) printf "%s ", ARGV[i]
            printf "\n"
            exit }

::SEE ALSO

       lex(1), sed(1)
       A. V. Aho, B. W. Kernighan, P. J. Weinberger, The AWK Pro­
       gramming Language, Addison-Wesley, 1988.

:::lex.man
:::sed.man


::BUGS
       There  are  no  explicit  conversions  between numbers and
       strings.  To force an expression to be treated as a number
       add  0  to  it; to force it to be treated as a string con­
       catenate "" to it.
       The scope rules for variables in functions  are  a  botch;
       the syntax is worse.



---------8<-----------

---
*3 S.E.A.S - Virtual Interaction Configuration (VIC) - VISION OF VISIONS!*
   *~ ~ ~      Advancing How we Perceive and Use the Tool of Computers!*
Timothy Rue      What's *DONE* in all we do?  *AI PK OI IP OP SF IQ ID KE*
Email @ mailto:timrue at mindspring.com      >INPUT->(Processing)->OUTPUT>v
Web @ http://www.mindspring.com/~timrue/  ^<--------<----9----<--------<




More information about the Python-list mailing list