Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content
This repository has been archived by the owner on Mar 28, 2019. It is now read-only.

JarryShaw/Compiler

Repository files navigation

Compiler

This repository maintains some assignments (projects / labs) during Compiler (SJTU).

 

Lexical Analysis

  Indicate a lexical analysis program using Lex language for Python sources. The program should be able to

  • convert non-decimal numbers to decimal
  • convert uppercase comments to lowercase

as the following example shows.

The original file goes like this …

#!/usr/bin/env python

'''Main  FUCTION'''   
def  main():
    a = (0o21 + 0x1c) * 2   # 0o21 equals 17
    b = 0b1001 * 0O37   # 0b1001 eqUALs 9
    c = 0XA1 - 55   # 0XA1 equals 161
    d = 0101   # 0101 EQUALS 65
    print a + b - c - d
'''END'''

if   __name__  ==  '__main__':
    """    
    CALL
    main function
    """
    main()  

And afterwards, it should be like …

#!/usr/bin/env python

'''main  fuction'''
def  main():
    a = (17 + 28) * 2   # 0o21 equals 17
    b = 9 * 31   # 0b1001 equals 9
    c = 161 - 55   # 0xa1 equals 161
    d = 65   # 0101 equals 65
    print a + b - c - d
'''end'''

if   __name__  ==  '__main__':
    """
    call
    main function
    """
    main()

  According to the requirements, the program should be run and tested with scripts bellow.

$ flex flex.l                   # > lex.yy.c
$ gcc lex.yy.c -lfl             # > a.out
$ ./a.out < test.py > result.py # in default

But due to some other reasons, the test sample and corresponding result are stored in test and result.

About

Assignments of Compiler (SJTU)

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages