Annotation of capa/capa51/pProj/lexical.doc, revision 1.1

1.1     ! albertel    1: 
        !             2: In the begining of a quizz file, the lexxer places itself in 
        !             3: <S_TEXT> state. This is the default state that collects all question 
        !             4: text problem by problem. 
        !             5: 
        !             6: 
        !             7: 
        !             8: In <S_TEXT> state, where question text are collected in this state, 
        !             9: the question text can continued to the next line by combining the two
        !            10: symbols '\' followed by a '\n'. 
        !            11: Variables can be displayed within "/DIS()" function. 
        !            12: 
        !            13: Within the <S_TEXT> state, begin of a line '/' commands 
        !            14: include "//", "/LET", "/BEG", "/HIN", "/EXP", "/IMP", 
        !            15: "/END", "/END()", "/ANS", "/MAP". 
        !            16: The "/DIS()" command can be placed within anyplace of the problem text,
        !            17: therefore, the pattern is not limited to match the begin of a line symbol '^'.
        !            18: A single "\n" indicates the end of a paragraph of question text, 
        !            19: therefore, lexxer returns this symbol to parser so that it signals the
        !            20: end of q_text. The "\n" will showup in the final question text. 
        !            21: The pattern "\"{Space}*"\n" represents the continuation of question text
        !            22: to the next line. In the lexxer, it simply does nothing. 
        !            23: 
        !            24: The token "//" appears at the beginning of a line indicates the whole 
        !            25: line as a comment. This is treated only by lexxer, it did not
        !            26: report any token to parser().
        !            27: The token "/LET" will 
        !            28: 
        !            29: 
        !            30: 
        !            31: 
        !            32: 
        !            33: When encountered a ^/ANS token, it switched to <S_ANSWER> state. 
        !            34: In <S_ANSWER> state, {Spaces}+ are ignored within the lexxer 
        !            35: without returning anything to parser, 
        !            36: and 
        !            37: a single '(' will cause Pcount++ and return token '(' to parser. 
        !            38: 
        !            39: <S_VARIABLE,S_LET,S_ANSWER,S_MAP> 
        !            40: is a combined state that does the following thing. 
        !            41: It ignores spaces. 
        !            42: When encountered a '(', it executes Pcount++ and return this symbol 
        !            43: to parser. 
        !            44: When there is a integer constant could be collected, it 
        !            45: returns a I_CONSTANT to parser and convert the string to integer. 
        !            46: When a real number encountered, it converts it into a real number and
        !            47: returns R_CONSTANT to parser. 
        !            48: When it encountered an identifier, it calls 
        !            49: find_identifier() and returns IDENTIFIER to parser().
        !            50: When it encountered a identifier followed by a 
        !            51: '(', then it simply collects the identifier to 
        !            52: a string and places it on top of the FuncStack[]. 
        !            53: It then returns FUNCTION_ID to parser().
        !            54: 
        !            55: 
        !            56: /IMP "/absolute/path/to/file" and 
        !            57: /IMP VariableName  have to be in one line, 
        !            58: it cannot be broken down into several lines
        !            59: 
        !            60: 
        !            61: 
        !            62: TO DO:
        !            63:   Internal variable names such as SUBJECTIVE[123][ABC]
        !            64:   
        !            65:   Add supports for loops like
        !            66: 
        !            67:   /LET var2 = random(1,9,1)
        !            68:   /WHILE ( var2 <= 10  )
        !            69:   
        !            70:   /LET problem_name = "file" + var2
        !            71:   /IMP problem_name
        !            72:   /LET var2 = var2 + 1
        !            73:   /ENDWHILE 
        !            74: 
        !            75:   /ANS() /AND
        !            76:   /ANS() /AND
        !            77:   /ANS()
        !            78: 
        !            79:   /ANS() /OR
        !            80:   /ANS() /OR
        !            81:   /ANS()
        !            82: 
        !            83:   /IF (var1 == 0)  
        !            84:          
        !            85:   /ELSE   
        !            86:     
        !            87:   /ENDIF
        !            88:   
        !            89:   /MACRO   macro_name(#1,#2,#3)   /ENDM
        !            90:   
        !            91:   
        !            92:   
        !            93: FILE FORMATS under CLASS/records/ directory
        !            94: active.log
        !            95:   wabash002 , 0 , 11242 , /dev/ttyp6 ,(06/11/97 15:13:40)
        !            96:   ^^^^^^^^^
        !            97:   9 chars student id
        !            98:   a space char, a comma, a space char, a comma, process id, a comma, term, date time.
        !            99:   
        !           100:   One student has only one entry in this file. 
        !           101: 
        !           102: duration.log
        !           103: 
        !           104: meisels01       /dev/ttyp3      Tue May 20 14:05:59 1997        Tue May 20 14:06:11 1997
        !           105: 173336318       /dev/ttyp1      Fri May 30 18:35:22 1997        Fri May 30 18:39:28 1997
        !           106: 173336318       /dev/ttyp1      Fri May 30 18:39:53 1997        Fri May 30 18:42:41 1997
        !           107: 
        !           108: student id, tty, start from , logout time. 
        !           109: One session has one entry. 
        !           110: 
        !           111: setX.db
        !           112: 20,01/01/97 08:00,05/15/99 08:00,05/15/99 09:00
        !           113: 11111111212113311222
        !           114: 00000000000000000000
        !           115: calcutta3 --------------------, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        !           116: calcutta2 --------------------, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        !           117: 
        !           118: the first item is the number of problems in this set for the purpose of parsing. 
        !           119: The second line is the problem weight and the third line is whether the corresponding 
        !           120: problem is of type partial credit or not. 
        !           121: 
        !           122: 
        !           123: logX.db
        !           124: a73336319 Fri Feb 27 18:03:15 1998 --------------Y-----
        !           125: a73336319 Fri Feb 27 18:04:08 1998 -----------------N--
        !           126: a73336319 Fri Feb 27 18:04:18 1998 -----------------Y--
        !           127: a87654444 Sat Feb 28 18:48:46 1998 ---u----------------
        !           128: a43986495 Wed Mar  4 09:48:33 1998 Y-------------------
        !           129: 
        !           130: weblogX.db
        !           131: 
        !           132: a87654322 Fri Feb 27 18:57:51 1998 ---u----------------
        !           133: a87654322 Fri Feb 27 19:35:57 1998 N-------------------
        !           134: a87654322 Fri Feb 27 19:36:06 1998 N-------------------
        !           135: a87654322 Fri Feb 27 19:36:16 1998 Y-------------------
        !           136: a87654444 Sat Feb 28 18:46:37 1998 N-------------------
        !           137: a73336318 Sun Mar  1 20:21:42 1998 -u------------------
        !           138: a73336318 Sun Mar  1 20:21:54 1998 -N------------------
        !           139: a73336318 Sun Mar  1 20:22:35 1998 -Y------------------
        !           140: a73336318 Sun Mar  1 20:23:49 1998 --U-----------------
        !           141: 
        !           142: 
        !           143: 
        !           144: submissionsX.db
        !           145: 
        !           146: A12345678       24/02 09:55:24  6       safsdf
        !           147: a73336318       26/02 13:26:17  2       46.6
        !           148: a73336318       26/02 13:28:24  2       46.4
        !           149: a73336318       26/02 13:28:40  2       46.6 cm
        !           150: a73336318       26/02 13:31:35  2       46.6
        !           151: a73336318       26/02 13:31:47  1       aedf
        !           152: a73336318       26/02 13:32:30  3       40.6 m
        !           153: guesta007       25/02 21:43:32  1       xcb
        !           154: a73336319       27/02 17:38:53  1       cdef
        !           155: a73336319       27/02 17:39:13  2       39.8 
        !           156: a73336319       27/02 17:39:22  2       39.8 m
        !           157: a73336319       27/02 17:39:47  2       .398 J/N
        !           158: 
        !           159: 
        !           160: websubmissionsX.db
        !           161: 
        !           162: a73336318       26/02 13:28:40  2       46.6 cm
        !           163: a73336318       26/02 13:31:35  2       46.6
        !           164: a73336318       26/02 13:31:47  1       aedf
        !           165: a73336318       26/02 13:32:30  3       40.6 m
        !           166: a73336318       26/02 13:32:44  3       40.6 kg
        !           167: a73336318       26/02 13:33:05  3       406 mm
        !           168: a73336318       26/02 13:33:32  4       .332 J/N
        !           169: a73336318       26/02 13:33:52  5       53.0 cm
        !           170: a73336318       26/02 13:34:13  5       53.01 cm
        !           171: a73336318       26/02 13:34:37  5       52.99 cm
        !           172: a73336318       26/02 13:34:49  5       52,995 cm
        !           173: a73336318       26/02 13:35:12  5       52.995 cm
        !           174: a73336318       26/02 13:38:06  5       53.00 cm
        !           175: a73336318       26/02 13:38:34  6       6.060
        !           176: a73336318       26/02 13:38:55  6       60.6
        !           177: a73336318       26/02 13:39:17  7       .97 m^2
        !           178: a73336318       26/02 13:39:33  7       .0097 m^2
        !           179: a73336318       26/02 13:42:51  8       1.99E3 cm^3
        !           180: 
        !           181: 
        !           182: 
        !           183: 
        !           184: subjective answers
        !           185: records/subj/ansX.db
        !           186: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>