• 让WPS支持VHDL的关键词加粗


    WPS的VBA在这里下载:http://bbs.wps.cn/forum.php?mod=viewthread&tid=22347925

    语法高亮是参考Word的,这篇文章:http://blog.csdn.net/colin719/article/details/1555526

    WPS的VBA代码:

    'script to high light code In document
    
    Private Function isKeyword(w) As Boolean
        Dim keys As New Collection
        With keys
            .Add "CASE": .Add "COMPONENT": .Add "CONFIGURATION": .Add "CONSTANT": .Add "DISCONNECT":
            .Add "DOWNTO": .Add "ELSE": .Add "ELSIF": .Add "END": .Add "ENTITY":
            .Add "EXIT": .Add "FILE": .Add "FOR": .Add "FUNCTION": .Add "GENERATE":
            .Add "GENERIC": .Add "GROUP": .Add "GUARDED": .Add "IF": .Add "IMPURE":
            .Add "IN": .Add "INERTIAL": .Add "INOUT": .Add "IS": .Add "LABEL":
            .Add "LIBRARY": .Add "LINKAGE": .Add "LITERAL": .Add "LOOP": .Add "MAP":
            .Add "MOD": .Add "NAND": .Add "NEW": .Add "NEXT": .Add "NOR":
            .Add "NOT": .Add "NULL": .Add "OF": .Add "ON": .Add "OPEN":
            .Add "OR": .Add "OTHERS": .Add "OUT": .Add "PACKAGE": .Add "PORT":
            .Add "POSTPONED": .Add "PROCEDURE": .Add "PROCESS": .Add "PURE": .Add "RANGE":
            .Add "RECORD": .Add "REGISTER": .Add "REJECT": .Add "REM": .Add "REPORT":
            .Add "RETURN": .Add "ROL": .Add "ROR": .Add "SELECT": .Add "SEVERITY":
            .Add "SIGNAL": .Add "SHARED": .Add "SLA": .Add "SLL": .Add "SRA":
            .Add "SRL": .Add "SUBTYPE": .Add "THEN": .Add "TO": .Add "TRANSPORT":
            .Add "TYPE": .Add "UNAFFECTED": .Add "UNITS": .Add "UNTIL": .Add "USE":
            .Add "VARIABLE": .Add "WAIT": .Add "WHEN": .Add "WHILE": .Add "WITH":
            .Add "XNOR": .Add "XOR": .Add "AGGREGATE": .Add "ALLOCATOR": .Add "BIT":
            .Add "BIT_VECTOR": .Add "BOOLEAN": .Add "CHARACTER": .Add "COMPOSITE": .Add "CONCATENATION":
            .Add "DELAY": .Add "DRIVER": .Add "ENUMERATION": .Add "EVENT": .Add "EXPRESSION":
            .Add "IDENTIFIER": .Add "INTEGER": .Add "NAME": .Add "OPERATORS": .Add "PHYSICAL":
            .Add "RESOLUTION": .Add "RESUME": .Add "SCALAR": .Add "SLICE": .Add "STANDARD":
            .Add "STABLE": .Add "STD_LOGIC": .Add "STD_LOGIC_1164": .Add "STD_LOGIC_VECTOR": .Add "STRING":
            .Add "SUSPEND": .Add "TESTBENCH": .Add "VECTOR": .Add "VITAL": .Add "WAVEFORM":
            .Add "AND":
        End With
        w = UCase(w)
        isKeyword = isSpecial(w, keys)
    End Function
    
    Private Function isSpecial(ByVal w As String, ByRef col As Collection) As Boolean
        For Each i In col
            If w = i Then
                isSpecial = True
                Exit Function
            End If
        Next
        isspeical = False
    End Function
    
    Sub SyntaxHighlightVHDL()
        Dim wordCount As Integer
        Dim d As Integer
        d = 0
        wordCount = Selection.End - Selection.Start
        'MsgBox wordCount
        
        Selection.StartOf wpsWord
        While d < wordCount
            t = Selection.MoveRight(wpsWord, 1, wpsExtend)
            w = Selection.Text
            d = d + Selection.End - Selection.Start
           '  MsgBox d
            If isKeyword(Trim(w)) = True Then
                Selection.Font.Bold = True
            End If
            'move the start of selection to next word
            Selection.MoveStart wpsWord
        Wend
        Selection.MoveLeft wpsCharacter, wordCount, wpsExtend
         MsgBox "ok"
    End Sub
    

      

    其中,提取关键词的Python代码:

    import sys,string
    print sys.argv[1]
    fp1=file(sys.argv[1],"r")
    fp2=file("d:/out.txt","w")
    while 1:
        for i in range(0,10):
            s=fp1.readline()
            s=string.strip(s)
            print s
            if s=="":break
            s='''.Add "%s":'''%(s)
            fp2.write(s)
        if s=="":break
        fp2.write("
    ")
    fp1.close()
    fp2.close()
    print "ok"
    raw_input("")
    

    VHDL关键词:

    CASE
    COMPONENT
    CONFIGURATION
    CONSTANT
    DISCONNECT
    DOWNTO
    ELSE
    ELSIF
    END
    ENTITY
    EXIT
    FILE
    FOR
    FUNCTION
    GENERATE
    GENERIC
    GROUP
    GUARDED
    IF
    IMPURE
    IN
    INERTIAL
    INOUT
    IS
    LABEL
    LIBRARY
    LINKAGE
    LITERAL
    LOOP
    MAP
    MOD
    NAND
    NEW
    NEXT
    NOR
    NOT
    NULL
    OF
    ON
    OPEN
    OR
    OTHERS
    OUT
    PACKAGE
    PORT
    POSTPONED
    PROCEDURE
    PROCESS
    PURE
    RANGE
    RECORD
    REGISTER
    REJECT
    REM
    REPORT
    RETURN
    ROL
    ROR
    SELECT
    SEVERITY
    SIGNAL
    SHARED
    SLA
    SLL
    SRA
    SRL
    SUBTYPE
    THEN
    TO
    TRANSPORT
    TYPE
    UNAFFECTED
    UNITS
    UNTIL
    USE
    VARIABLE
    WAIT
    WHEN
    WHILE
    WITH
    XNOR
    XOR
    AGGREGATE
    ALLOCATOR
    BIT
    BIT_VECTOR
    BOOLEAN
    CHARACTER
    COMPOSITE
    CONCATENATION
    DELAY
    DRIVER
    ENUMERATION
    EVENT
    EXPRESSION
    IDENTIFIER
    INTEGER
    NAME
    OPERATORS
    PHYSICAL
    RESOLUTION
    RESUME
    SCALAR
    SLICE
    STANDARD
    STABLE
    STD_LOGIC
    STD_LOGIC_1164
    STD_LOGIC_VECTOR
    STRING
    SUSPEND
    TESTBENCH
    VECTOR
    VITAL
    WAVEFORM

  • 相关阅读:
    未命名 1
    介绍一些实用的IOS手势识别库 (COCOS2D)
    cocos2d-x引擎实现$1Unistroke Recognizer手势识别
    【luogu P4755】Beautiful Pair(ST表)(笛卡尔树)(主席树)
    【ybtoj高效进阶 21290】头文件 D(平衡规划)(线段树)
    【ybtoj高效进阶 21289】头文件 C(图论)(dfs)
    【ybtoj高效进阶 21288】头文件 B(线段树)(图论)
    【ybtoj高效进阶 21282】数字重组(DP)(数学)
    【ybtoj高效进阶 21281】矩阵逆转(模拟)
    【ybtoj高效进阶 21280】景点距离(DP)(换根)
  • 原文地址:https://www.cnblogs.com/fwindpeak/p/3150234.html
Copyright © 2020-2023  润新知