COBOLのソースコードをPythonで字句解析
COBOLのソースコードを字句解析
パターン1:
✏スクリプト
import re # COBOLソースコード cobol_code = """ IDENTIFICATION DIVISION. PROGRAM-ID. SAMPLE. DATA DIVISION. WORKING-STORAGE SECTION. 01 NUM1 PIC 9(3) VALUE 100. 01 NUM2 PIC 9(3) VALUE 200. 01 RESULT PIC 9(3). PROCEDURE DIVISION. ADD NUM1 TO NUM2 GIVING RESULT. DISPLAY "The result is " RESULT. STOP RUN. """ # 正規表現パターンを定義 pattern = r"(\b[0-9]+\([0-9]+\)\b|\b[0-9]+\b|\b[A-Z0-9-]+\b|\+|-|\*|\/|\.|:|>|<|=|\(|\)|\.)" # 正規表現パターンにマッチするトークンを抽出 tokens = re.findall(pattern, cobol_code, re.IGNORECASE) # 抽出したトークンを表示 for token in tokens: print(token)
パターン2:指定した文字列を抽出
✏スクリプト
import re # COBOLソースコードimport re code = """ IF XXX_CD1 = '5' OR XXX_CDA = 'A' OR XXX_CD2 = XXXX AND TEST = 'ABC' ELSE IF AAAA-XXX_CD1 = '&&' NEXT SENTENCE ELSE IF AAAA_XXX_CD1-BBB = '&&' NEXT SENTENCE END """ target_phrase = "XXX_CD" target_value = "A" # 正規表現パターンを定義 pattern = f"[A-Z0-9-_]*{target_phrase}[0-9-_][A-Z0-9-_]*" tokens = re.findall(pattern, code, re.IGNORECASE) for token in tokens: print(token) print("------------") # 正規表現パターンを定義 pattern = f"[\'\"]{target_value}[\'\"]" tokens = re.findall(pattern, code, re.IGNORECASE) for token in tokens: print(token)
コメント
コメントを投稿