boostcamp-challenge

[7/17] 익숙한 이름 Parser

blopz 2024. 7. 18. 09:30

xml

eXtensible Markup Language

JSON

JavaScript Object Notation

XML의 단점을 보안하고 웹 환경(Javascript)에서 사용하고자 만듬

{
  "이름공간(키)": "값",
  "값 구분자": "각각의 값들은 ',' (콤마)로 구분되어야 합니다.",
  "이스케이프": "키나 값에서 큰따옴표를 쓰고 싶으면-특정 문자를 이스케이프 하려면- \" 처럼 문자 앞에 역슬래시를 붙입니다.",
  "자료형": "표현 가능한 자료형은 문자열, 숫자, 불리언, 널, 객체, 배열 6개입니다.",
  "문자열 값": "나무위키, 여러분이 가꾸어 나가는 지식의 나무",
  "숫자 값": 19721121,
  "불리언 값": true,
  "널 값": null,
  "객체 값": {
    "값1": 3.14159265358979323846264338,
    "값2": false,
    "값3": {
      "객체 안에": "객체를 넣는것도 가능하지요",
      "구분자": "또한 키와 값은 ':' 로 구분됩니다"
    }
  },
  "배열 값": [
    "이것은 배열입니다.",
    {
      "현재 값의 인덱스": 1,
      "이런 식으로": "배열 안에 여러 값을 넣을 수 있습니다."
    },
    [ "배열", "안에", "배열을", "넣는것도", "가능하지요" ]
  ],
  "값의 개수가 적을때는": "다음과 같이 한 줄로도 객체와 배열 표현이 가능합니다.",
  "한 줄 객체": { "김두한": "나 김두한이다", "심영": "내가 고자라니", "의사양반": "병신을 만들어주마" ,  "이근": "4번은 개인주의야" },
  "한 줄 배열": [ "나무위키는", "누구나", "기여할", "수", "있는", "위키입니다." ]
}

 

해당방식처럼 tuple?과 array처럼 작동함

컴파일러 이론

  • 토크나이저 Tokenizer : 구문을 의미있는 Token으로 쪼갠다
    • token의 종류
      • identifier : 식별하기 위한 이름
      • keyword : 미리 지정한 예약어
      • separator : 글자를 구분하는 문자
      • operator : 연산을 위한 심볼
      • literal : 숫자, 논리, 문자
      • comment : 줄 또는 블록 코멘터리
  • 렉서 Lexer : 그 쪼갠 Token의 의미를 분석한다
  • 파서 Parser : Lexer돌린 Token (Lexical analyzed token)을 구조적으로 나타내고, 검증을 수행한다.
    • 대부분의 interpreter/compiler에서는 자료구조로 AST를 쓴다

Regular Expression

https://beomy.tistory.com/21

 

[자바스크립트] 정규식(Regular Expressions)

정규식(Regular Expressions) 정규식은 문자열에 포함된 문자 조합을 찾기 위해 사용되는 패턴입니다. 코드를 간략하게 만들 수 있으나, 가독성이 떨어질 수 있습니다. RegExp의 exec, test 메소드와 String

beomy.tistory.com